commit refs/heads/master mark :1 author <> 1301481093 +0100 committer Colin Watson 1301481093 +0100 data 523 * docs/grub.texi (Environment): New chapter. (Changes from GRUB Legacy): Link to "Environment block" section for details of limitations. (Simple configuration): Likewise. Link to documentation of gfxmode and gfxpayload variables from GRUB_GFXMODE and GRUB_GFXPAYLOAD respectively. (Shell-like scripting): Note that normal variables are stored in the environment. (gettext): Link to documentation of lang and locale_dir. (list_env): New section. (load_env): New section. (save_env): New section. (Reporting bugs): Fix typo. M 644 inline ChangeLog data 1234379 2011-03-30 Colin Watson * docs/grub.texi (Environment): New chapter. (Changes from GRUB Legacy): Link to "Environment block" section for details of limitations. (Simple configuration): Likewise. Link to documentation of gfxmode and gfxpayload variables from GRUB_GFXMODE and GRUB_GFXPAYLOAD respectively. (Shell-like scripting): Note that normal variables are stored in the environment. (gettext): Link to documentation of lang and locale_dir. (list_env): New section. (load_env): New section. (save_env): New section. (Reporting bugs): Fix typo. 2011-03-30 Vladimir Serbinenko * docs/grub.texi: Correctly use "terminal_input" and not "terminal" in the example. 2011-03-30 Vladimir Serbinenko * grub-core/term/at_keyboard.c (set_scancodes) [!GRUB_MACHINE_MIPS_YEELOONG && !GRUB_MACHINE_QEMU]: Use scancode set 1. 2011-03-30 Colin Watson * docs/grub.texi (Menu-specific commands): Remove some semantics that were true in GRUB Legacy but not in GRUB 2. (submenu): New section. (false): New section. (read): New section. (true): New section. 2011-03-30 Colin Watson * docs/grub.texi (Changes from GRUB Legacy): Minor proofreading. 2011-03-30 Colin Watson * docs/grub.texi (Simple configuration): Explain some of the current limitations of grub-mkconfig. Reported by: Leslie Rhorer. 2011-03-29 Vladimir Serbinenko Old macs search for boot.efi rather than for bootia32.efi. * util/grub-install.in: Copy bootia32.efi to boot.efi. * util/grub-mkrescue.in: Likewise. Suggested by: Peter Jones. 2011-03-29 Vladimir Serbinenko * util/grub.d/20_linux_xen.in: Accept old-style xen kernels. 2011-03-29 Vladimir Serbinenko * include/grub/lvm.h (grub_lvm_lv): New field 'visible'. (grub_lvm_segment): New fields 'type', 'mirror_count' and 'mirrors'. (grub_lvm_mirror): New struct. * grub-core/disk/lvm.c (grub_lvm_checkvalue): Commented out. (grub_lvm_iterate): Iterate only visible volumes. (grub_lvm_read): Factor out to .. (read_lv): ... this. Support mirrors. (grub_lvm_read): New wrapper function. (grub_lvm_scan_device): Parse mirrors. Skip everything that isn't stripped or mirrored. 2011-03-29 Vladimir Serbinenko * util/grub.d/10_linux.in: Skip vmlinux-* on x86 platforms. 2011-03-29 Colin Watson * docs/grub.texi (loopback): New section. 2011-03-29 Colin Watson * grub-core/disk/loopback.c (GRUB_MOD_INIT): Stop documenting removed -p option. 2011-03-29 Colin Watson * docs/grub.texi (BIOS installation): New section, partly based on previous text in other sections. (Installing GRUB using grub-install): Replace BIOS discussion with a cross-reference. (Images): Likewise. 2011-03-29 Vladimir Serbinenko * grub-core/kern/emu/hostdisk.c (find_partition_start) [HAVE_DIOCGDINFO]: Add safety checks. 2011-03-29 Vladimir Serbinenko * util/grub.d/10_kfreebsd.in: Allow ufs.ko to be missing as it's per default compiled in kernel and prior to 8.0 isn't shipped at all. 2011-03-29 Colin Watson * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): If real_sb->size is zero (e.g. RAID-0), get the disk size from real_sb->data_size instead. Fixes Ubuntu bug #743136. 2011-03-29 Vladimir Serbinenko * grub-core/normal/misc.c (grub_normal_print_device_info): Use correct printf clauses for printing size and start. 2011-03-29 Vladimir Serbinenko * grub-core/fs/ext2.c (grub_ext2_read_inode): Fix an overflow. Reported and tested by: Timothy Nikkel. 2011-03-29 Vladimir Serbinenko * grub-core/term/gfxterm.c (dirty_region_add): Move core part to ... (dirty_region_add_real): ... this. (dirty_region_add): Don't discard margin refresh when performing scheduled repaint. 2011-03-29 Vladimir Serbinenko * grub-core/lib/relocator.c (allocate_regstart) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Avoid grub_dprintf since not all terminals are capabple of malloc-free operation. (allocate_inreg) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise. (malloc_in_range) [!DEBUG_RELOCATOR_NOMEM_DPRINTF]: Likewise. 2011-03-29 Mario Limonciello * util/grub-setup.c: Copy the partition table zone if floppy support is disabled, even if no partition table is found. Otherwise, the BIOS on Dell Latitude E series laptops will freeze during POST if an invalid partition table is contained in the PBR of the active partition when GRUB is installed to a partition. 2011-03-28 Colin Watson * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Remove stale comment. 2011-03-28 Colin Watson * grub-core/disk/raid.c (grub_raid_register): Adjust debug message to be specific about what kind of RAID device we're scanning for. 2011-03-26 Seth Goldberg * grub-core/kern/emu/getroot.c (find_root_device_from_libzfs): Don't return freed string. 2011-03-26 Vladimir Serbinenko * grub-core/fs/iso9660.c (grub_iso9660_label): Rtrim the label. 2011-03-26 Vladimir Serbinenko Use libgeom on FreeBSD to detect partitions. * Makefile.util.def (grub-mkimage): Add LIBGEOM to ldadd. (grub-mkrelpath): Likewise. (grub-script-check): Likewise. (grub-editenv): Likewise. (grub-mkpasswd-pbkdf2): Likewise. (grub-fstest): Likewise. (grub-mkfont): Likewise. (grub-mkdevicemap): Likewise. (grub-probe): Likewise. (grub-setup): Likewise. (grub-ofpathname): Likewise. (grub-mklayout): Likewise. (example_unit_test): Likewise. (grub-menulst2cfg): Likewise. * grub-core/Makefile.core.def (grub-emu): Likewise. (grub-emu-lite): Likewise. * configure.ac: Check for -lgeom on FreeBSD and set LIBGEOM. * grub-core/kern/emu/hostdisk.c [FreeBSD]: Include libgeom.h. Don't define HAVE_DIOCGDINFO. (follow_geom_up) [FreeBSD]: New function. (find_partition_start) [FreeBSD]: Rewritten using follow_geom_up. (convert_system_partition_to_system_disk) [FreeBSD]: Likewise. (grub_util_biosdisk_get_grub_dev) [FreeBSD]: Use FreeBSD path unconditionally of HAVE_DIOCGDINFO. 2011-03-26 Vladimir Serbinenko Fix FreeBSD compilation problem. * grub-core/kern/emu/hostdisk.c (MAJOR) [FreeBSD]: New definition. (FLOPPY_MAJOR) [FreeBSD]: Likewise. 2011-03-24 Colin Watson * grub-core/video/fb/video_fb.c (grub_video_fb_get_info_and_fini): Switch back to page zero before loading a kernel, since some kernel drivers expect that. Thanks to: Felix Kuehling. 2011-03-24 Vladimir Serbinenko * grub-core/lib/relocator.c (grub_relocator_alloc_chunk_addr) [DEBUG_RELOCATOR]: Reuse grub_mm_check. (grub_relocator_alloc_chunk_align) [DEBUG_RELOCATOR]: Likewise. 2011-03-24 Vladimir Serbinenko * include/grub/mm.h (GRUB_MM_CHECK): Rename to ... (grub_mm_check): ... this. MAke a function-like macro and use GRUB_FILE. 2011-03-24 Vladimir Serbinenko * grub-core/lib/relocator.c (allocate_inreg): Avoid dprintf unless DEBUG_RELOCATOR is defined since gfxterm can't cope with output when malloc is disabled. 2011-03-24 Vladimir Serbinenko * grub-core/loader/i386/bsdXX.c (grub_freebsd_load_elfmodule): Account for modules headers when counting the needed allocation size. 2011-03-23 Vladimir Serbinenko * grub-core/term/gfxterm.c (calculate_normal_character_width): Return 8 if no ASCII character is found to prevent crash. 2011-03-23 Alexander Kurtz * grub-core/video/bitmap.c (match_extension): Ignore case. 2011-03-23 Vladimir Serbinenko * grub-core/normal/menu_entry.c (init_line): Fix off-by-one error. 2011-03-23 Vladimir Serbinenko * grub-core/script/parser.y: Declare "time" as valid argument. 2011-03-23 Peter Jones Fix incorrect assert failure reporting. * grub-core/tests/example_functional_test.c (example_test): Add a failure comment. * grub-core/tests/lib/test.c (add_failure): Renamed to ... (failure_start): ...this. Check that malloc succeeded. Don't call xvasprintf. Return failure struct. (failure_append_vtext): New function. (failure_append_text): Likewise. (add_failure): Likewise. (grub_test_assert_helper): Likewise. * include/grub/test.h (grub_test_assert_helper): New declaration. (grub_test_assert): Macro rewritten. 2011-03-23 Vladimir Serbinenko * grub-core/normal/main.c (GRUB_MOD_INIT): Export pager variable. 2011-03-23 Vladimir Serbinenko * grub-core/lib/i386/pc/biosnum.c: Add missing include. 2011-03-23 Vladimir Serbinenko * grub-core/disk/usbms.c (grub_usbms_reset): Transform USB-style error into GRUB-style one. 2011-03-23 Vladimir Serbinenko * grub-core/bus/usb/usbtrans.c (grub_usb_control_msg): Return usb-style error and not grub_errno. * grub-core/bus/usb/usbhub.c (grub_usb_add_hub): Likewise. 2011-03-23 Vladimir Serbinenko * grub-core/bus/usb/uhci.c (grub_uhci_detect_dev): Return GRUB_USB_SPEED_NONE in case of failure and not the error code. 2011-03-23 Vladimir Serbinenko * grub-core/efiemu/i386/pc/cfgtables.c (grub_machine_efiemu_init_tables): Make declaration a prototype. * grub-core/loader/xnu.c (grub_xnu_lock): Likewise. (grub_xnu_unlock): Likewise. * grub-core/normal/cmdline.c (grub_cmdline_get/cl_set_pos_all): Likewise. 2011-03-23 Vladimir Serbinenko * grub-core/bus/usb/usb.c (attach_hooks): Make static. * grub-core/bus/usb/usbhub.c (hubs): Likewise. * grub-core/commands/hashsum.c (aliases): Likewise. * grub-core/commands/setpci.c (pci_registers): Likewise. * grub-core/disk/usbms.c (attach_hook): Likewise. * grub-core/fs/zfs/zfs.c (decomp_table): Likewise. (zio_checksum_table): Likewise. * grub-core/gettext/gettext.c (grub_gettext_msg_list): Likewise. * grub-core/gfxmenu/gfxmenu.c (cached_view): Likewise. * grub-core/lib/legacy_parse.c (legacy_commands): Likewise. * grub-core/lib/relocator.c (leftovers): Likewise. (extra_blocks): Likewise. * grub-core/loader/i386/bsd.c (relocator): Likewise. * grub-core/loader/i386/multiboot_mbi.c (modules): Likewise. (modules_last): Likewise. * grub-core/loader/i386/xnu.c (table_aliases): Likewise. (devices): Likewise. * grub-core/loader/multiboot_mbi2.c (modules): Likewise. (modules_last): Likewise. * grub-core/normal/auth.c (users): Likewise. * grub-core/normal/context.c (initial_menu): Likewise. (current_menu): Likewise. * grub-core/normal/crypto.c (crypto_specs): Likewise. * grub-core/term/serial.c (grub_serial_ports): Likewise. (grub_serial_terminfo_input_template): Likewise. (grub_serial_terminfo_output_template): Likewise. (grub_serial_terminfo_input): Likewise. (grub_serial_terminfo_output): Likewise. (registered): Likewise. * grub-core/term/usb_keyboard.c (attach_hook): Likewise. 2011-03-23 Vladimir Serbinenko * grub-core/video/bochs.c (grub_video_bochs_setup): Use grub_video_mode_type_t. * grub-core/video/cirrus.c (grub_video_cirrus_setup): Likewise. * grub-core/video/i386/pc/vbe.c (grub_video_vbe_setup): Likewise. * grub-core/video/i386/pc/vga.c (grub_video_vga_setup): Likewise. 2011-03-23 Vladimir Serbinenko * util/grub-install.in: Correct the x86-64 name as x86_64. 2011-03-11 Colin Watson * grub-core/boot/i386/pc/lnxboot.S (real_code_2): Ensure that the initial chunk read from the kernel always includes GRUB's multiboot header, which is now outside the first sector. 2011-03-09 Colin Watson * grub-core/loader/i386/linux.c (find_efi_mmap_size): Page-align cached mmap_size, so that this works correctly when called multiple times. Reported by: Daniel Kahn Gillmor. Should fix Debian bug #616638. 2011-03-09 Colin Watson * docs/grub.texi (Simple configuration): Tidy up formatting. 2011-03-07 Szymon Janc * grub-core/fs/zfs/zfs.c (zap_leaf_lookup): Set-but-not-used variable removed. 2011-02-12 Vladimir Serbinenko Workaround yet another IEEE1275 bug. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New enum value GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS. * grub-core/kern/ieee1275/mmap.c (grub_machine_mmap_iterate): Ignore adress_cells and size:cells if GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS is set. * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_BROKEN_ADDRESS_CELLS on powermacs. 2011-02-12 Vladimir Serbinenko * grub-core/partmap/msdos.c (pc_partition_map_embed): Fix off by one error. 2011-02-11 Colin Watson * util/grub.d/20_linux_xen.in: Bail out early if linux_list is empty, since in that case we can only generate either nothing or a syntactically invalid configuration file. Reported by: Michal Suchanek. Fixes Debian bug #612898. 2011-02-09 Colin Watson * docs/grub.texi (Kernel): Add reference to grub-mkrescue. (Making a GRUB bootable CD-ROM): Likewise. (Invoking grub-mkrescue): New section. Reported by: Yann Dirson. Fixes Debian bug #612585. 2011-02-09 Colin Watson * util/grub-install.in: Remove unnecessary brackets from tr arguments. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub.d/20_linux_xen.in: Likewise. Reported by: Jamie Heilman. Fixes Debian bug #612564. 2011-02-08 Colin Watson * include/grub/file.h (not_easly_seekable): Rename to ... (not_easily_seekable): ... this. Update all users. 2011-01-28 Colin Watson * docs/grub.texi (Making a GRUB bootable CD-ROM): Update to describe grub-mkrescue. 2011-01-24 Vladimir Serbinenko * util/grub-mkimage.c (generate_image): Refuse to create the images bigger than the actual flash (512K) in Loongson machines. 512K is also the biggest chip supported by them. 2011-01-22 Vladimir Serbinenko * grub-core/kern/emu/getroot.c: Include config-util.h explicitly. 2011-01-22 Anthony DeRobertis * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Check super_offset field. 2011-01-22 Vladimir Serbinenko * util/grub-install.in: Ignore install device on platforms where it doesn't make sense. Always use UUIDs except on pc, efi and sparc64. Reported by: Daniel Kahn Gillmor. 2011-01-22 Vladimir Serbinenko * grub-core/bus/bonito.c (write_bases): Fix direction of the shift. 2011-01-22 Vladimir Serbinenko * grub-core/partmap/bsdlabel.c: Include grub/emu/misc.h and not grub/util/misc.h. (iterate_real): Don't rely on partition being non-NULL. 2011-01-22 Vladimir Serbinenko * grub-core/script/argv.c (round_up_exp): unsigned is 32-bit on all supported platforms. Put a compile time assert for this rather than generate a warning with 32-bit shift. 2011-01-22 Vladimir Serbinenko * grub-core/disk/scsi.c (grub_scsi_read): Fix binary and check and make logical expression more readable. 2011-01-22 Vladimir Serbinenko * grub-core/disk/raid.c (insert_array): Ensure uniqueness of p->number even if some elements have a name. Reported by: Alexander GQ Gerasiov. 2011-01-22 Colin Watson * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Consider a path unreadable if `grub-probe -t abstraction' fails, for example if memberlist fails on an LVM volume group. Reported by: Darius Jahandarie. 2011-01-22 Colin Watson * docs/grub.texi (Simple configuration): Document GRUB_PRELOAD_MODULES. 2011-01-17 Colin Watson * .bzrignore: Remove nonexistent grub-pbkdf2. 2011-01-16 Vladimir Serbinenko * configure.ac: Bump version to 1.99~rc1. 2011-01-15 Vladimir Serbinenko * util/grub-mkimage.c (generate_image): Check fwstart.img checksum for safety. 2011-01-14 Vladimir Serbinenko * grub-core/kern/mips/yeeloong/init.c (grub_machine_init): Init boot module. 2011-01-14 Vladimir Serbinenko * grub-core/Makefile.core.def (fwstart): Add lost LDFLAGS. 2011-01-13 Vladimir Serbinenko * grub-core/fs/zfs/zfsinfo.c (grub_cmd_zfs_bootfs): Quote bootpath and diskdevid. 2011-01-13 Vladimir Serbinenko Fix compilation on cygwin. * conf/Makefile.common (STRIPFLAGS_KERNEL): Add -F elf32-i386 and -R .drectve on cygwin. * conf/i386-pc-cygwin-img-ld.sc: Merge rdata and pdata into data. * configure.ac: Use $(top_builddir) in TARGET_OBJ2ELF. (COND_CYGWIN): New condition. * grub-core/Makefile.am (%.mod): Set TARGET_OBJ2ELF. * grub-core/genmod.sh.in: Use ${TARGET_OBJ2ELF} and not @TARGET_OBJ2ELF@. * util/grub-pe2elf.c (write_symbol_table): Use pe_symtab->type and not type to determine whether aux is to be used. 2011-01-12 Vladimir Serbinenko * util/ieee1275/ofpath.c (grub_util_devname_to_ofpath): Use the realpath'ed device string. Handle floppy (somewhat). Issue error in unknown case rather than garbage. Reported by: Axel Beckert. 2011-01-12 Vladimir Serbinenko * util/grub.d/00_header.in (load_video): Handle the case when no video drivers available. Thanks to: Axel Beckert. 2011-01-12 Vladimir Serbinenko * util/grub-mkfont.c (write_font_pf2): Use appropriate type for data variable. Fixes problem on big endian platforms. 2011-01-12 Vladimir Serbinenko * grub-core/Makefile.core.def (ieee1275_fb): Disable on sparc. It doesn't work well there. 2011-01-12 Vladimir Serbinenko * grub-core/normal/context.c (grub_env_context_close): Silence spurious warning. * grub-core/normal/menu.c (grub_menu_execute_entry): Likewise. * grub-core/partmap/msdos.c (pc_partition_map_embed): Use unsigned counter. 2011-01-12 Vladimir Serbinenko Use alias->path rather than buggy "canon". * grub-core/disk/ieee1275/ofdisk.c (ofdisk_hash_add_real): New function. (ofdisk_hash_add): New argument curcan. All users updated. 2011-01-11 Colin Watson * configure.ac: Fall back to `true' if `makeinfo' does not exist. 2011-01-11 Vladimir Serbinenko * grub-core/loader/powerpc/ieee1275/linux.c (grub_linux_load32): Apply loadmask before doing any calculations. Use correct type for offset. (grub_linux_load64): Likewise. 2011-01-11 Colin Watson * util/grub-mklayout.c (console_grub_equivalences_shift): Terminate with NULL. (console_grub_equivalences_unshift): Likewise. Reported by: Daniel Dehennin. 2011-01-11 Vladimir Serbinenko * grub-core/fs/i386/pc/pxe.c (set_mac_env): Export variable. (set_env_limn_ro): Likewise. (GRUB_MOD_INIT): Likewise. * grub-core/hook/datehook.c (GRUB_MOD_INIT): Likewise. Change to ARRAY_SIZE while on it. (GRUB_MOD_FINI): Change to ARRAY_SIZE. * grub-core/normal/context.c (grub_env_export): Move from here ... * grub-core/kern/env.c (grub_env_export): ... here. * grub-core/normal/context.c (grub_cmd_export): Skip exporting root and prefix. * grub-core/kern/main.c (grub_main): Export root and prefix. * include/grub/env.h (grub_env_export): Export. Reported by: Seth Goldberg. 2011-01-11 Vladimir Serbinenko * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Take into account space used by ELF sections and multiboot palette. Reported by: Grégoire Sutre. 2011-01-11 Vladimir Serbinenko * BUGS: New file. 2011-01-10 Vladimir Serbinenko Pass more appropriate video id to Linux. * grub-core/loader/i386/linux.c (grub_linux_setup_video): Use grub_video_get_driver_id and variable gfxpayloadforcelfb to fill have_vga. (grub_linux_boot): Rely on grub_linux_setup_video to fill have_vga and shift params->lfb_size. * include/grub/i386/linux.h: Make an enume out of have_vga values. 2011-01-10 Vladimir Serbinenko * util/grub-menulst2cfg.c: Add missing include of misc.h. 2011-01-10 Vladimir Serbinenko * grub-core/fs/zfs/zfsinfo.c (grub_cmd_zfs_bootfs): Use comma as separator and pass bootpath/devid even if only one of them is available. Reported by: Seth Goldberg. 2011-01-10 Vladimir Serbinenko Don't use post-4G memory on EFI even if 64-bit since some non-compliant implementations bug on them. * grub-core/kern/efi/mm.c (grub_efi_allocate_pages): Skip post-4G memory. (filter_memory_map): Likewise. 2011-01-10 Vladimir Serbinenko * util/grub-kbdcomp.in: Add missing prefix and exec_prefix variables. Reported by: nebuchadnezzar. 2011-01-10 Vladimir Serbinenko * util/grub-kbdcomp.in: Add missing transform and bindir variables. Reported by: nebuchadnezzar. 2011-01-10 Vladimir Serbinenko Submenu default support. * grub-core/normal/menu.c (grub_menu_execute_entry): New parameter auto_boot. All users updated. Declared static. Handle chosen and default with submenus. (grub_menu_execute_with_fallback): Declared static. Don't notify failure if autobooted. Upper level does it. (menuentry_eq): New function. (get_entry_number): Use menuentry_eq. (show_menu): New parameter "autobooted". All users updated. (grub_show_menu): Likewise. * include/grub/normal.h (grub_show_menu): Likewise. * include/grub/menu.h (grub_menu_execute_entry): Removed. (grub_menu_execute_with_fallback): Likewise. 2011-01-10 Vladimir Serbinenko * util/grub-mklayout.c (usage): Update help text. 2011-01-10 Vladimir Serbinenko * grub-core/commands/legacycfg.c (legacy_file): Trim the line. 2011-01-10 Vladimir Serbinenko * util/grub-menulst2cfg.c (main): Trim the line. 2011-01-10 Vladimir Serbinenko * grub-core/kern/i386/pc/init.c (grub_get_conv_memsize): Removed. (grub_machine_init): Don't check amount of low memory as reportedly INT 12h can be broken and if low memory is too low we wouldn't have gotten into grub_machine_init anyway. 2011-01-10 Vladimir Serbinenko * grub-core/kern/i386/pc/mmap.c (grub_get_conv_memsize): New function. (grub_machine_mmap_iterate): Take low memory into account 2011-01-10 Vladimir Serbinenko * grub-core/fs/btrfs.c (grub_btrfs_mount): Transform out of range into badfs. Reported by: TiCPU. 2011-01-10 Vladimir Serbinenko * grub-core/disk/raid.c (insert_array): Display RAID name in duplicate members errors. 2011-01-09 Grégoire Sutre * util/grub.d/10_netbsd.in (netbsd_load_fs_module): New function. (netbsd_entry): Use netbsd_load_fs_module() to load filesystem module. 2011-01-09 Grégoire Sutre * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Handle openbsd and netbsd types being in part_bsd module. 2011-01-08 Vladimir Serbinenko * config.h.in (_LARGEFILE_SOURCE): Add missing define. (_FILE_OFFSET_BITS): Likewise. Reported by: Seth Goldberg. 2011-01-08 Grégoire Sutre * configure.ac: Check for libdevmapper header. 2011-01-08 Vladimir Serbinenko * grub-core/fs/zfs/zfs.c (dmu_read): Use void * for some pointers to avoid aliasing. (fzap_lookup): Likewise. (dnode_get): Likewise. (make_mdn): Likewise. (zfs_mount): Likewise. (fzap_iterate): Use temporary pointer to avoid aliasing. (grub_zfs_read): Likewise. * grub-core/loader/i386/xnu.c (grub_xnu_boot): Likewise. * grub-core/loader/xnu.c (grub_cmd_xnu_kernel): Use void * for some pointers to avoid aliasing. (grub_cmd_xnu_kernel64): Likewise. (grub_xnu_load_driver): Likewise. 2011-01-08 Vladimir Serbinenko * grub-core/commands/terminal.c (grub_cmd_terminal_input): Silence aliasing warning. (grub_cmd_terminal_output): Likewise. Reported and tested by: Grégoire Sutre. 2011-01-08 Vladimir Serbinenko * grub-core/term/at_keyboard.c (grub_keyboard_getkey): Silence spurious warning. Reported and tested by: Grégoire Sutre. 2011-01-08 Vladimir Serbinenko * configure.ac: Do CPU substitution even if it's specified explicitly. Reported and tested by: Alain Greppin. 2011-01-08 Vladimir Serbinenko * grub-core/Makefile.am (rs_decoder.S): Force compilation with -Os. Reported and tested by: Alain Greppin. 2011-01-08 Vladimir Serbinenko Satisfy some bison versions need for inttypes.h. * grub-core/lib/posix_wrap/inttypes.h: New file. * grub-core/lib/posix_wrap/sys/types.h (int8_t): New type. (int16_t): Likewise. (int32_t): Likewise. (int64_t): Likewise. Reported and tested by: Alain Greppin. 2011-01-08 Vladimir Serbinenko * grub-core/loader/i386/bsdXX.c (grub_netbsd_load_elf_meta): Silence spurious warning. Reported and tested by: Alain Greppin. 2011-01-07 Szymon Janc * docs/grub.texi (Support automatic decompression): Update with xz decompression support. 2011-01-07 Szymon Janc Improve loaders' kernel command line handling. * grub-core/lib/cmdline.c: New file. * include/grub/lib/cmdline.h: Likewise. * grub-core/loader/i386/linux.c (grub_cmd_linux): Use grub_create_loader_cmdline to create kernel command line. * grub-core/loader/i386/pc/linux.c (grub_cmd_linux): Likewise. * grub-core/loader/powerpc/ieee1275/linux.c (grub_cmd_linux): Likewise. * grub-core/loader/sparc64/ieee1275/linux.c (grub_cmd_linux): Likewise. * grub-core/Makefile.core.def (linux16): Add lib/cmdline.c on i386_pc. (linux): Add lib/cmdline.c on common. 2011-01-07 Vladimir Serbinenko * grub-core/fs/xfs.c (grub_xfs_iterate_dir): Take into account that inopos might be unaligned. 2011-01-07 Vladimir Serbinenko * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Add missing endian transformations. * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise. Based on report by: Doug Nazar. 2011-01-07 Doug Nazar * grub-core/disk/raid5_recover.c (grub_raid5_recover): Add missing array->members[i].start_sector. * grub-core/disk/raid6_recover.c (grub_raid6_recover): Likewise. 2011-01-07 Vladimir Serbinenko * util/grub-setup.c (setup): Handle NetBSD and OpenBSD disklabels. Reported and tested by: Grégoire Sutre. 2011-01-06 Colin Watson * tests/util/grub-shell.in: Set serial terminfo type to `dumb', to avoid causing test failures by clearing the screen. 2011-01-06 Colin Watson * grub-core/kern/emu/getroot.c (find_root_device_from_mountinfo): Fix prefix check to handle the case where dir ends with a slash (most significantly, "/" itself). Reported by: Michael Vogt. 2011-01-05 Vladimir Serbinenko Run terminfo_cls on initing terminfo output to clear the screen and move the cursor to (0,0). * grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_init_output): Call grub_terminfo_output_init. * grub-core/term/serial.c (grub_serial_term_output): Set .init. * grub-core/term/terminfo.c (grub_terminfo_output_init): New function. * include/grub/terminfo.h (grub_terminfo_output_init): New declaration. 2011-01-05 Vladimir Serbinenko * util/grub-install.in: Determine ofpathname, nvsetenv and efibootmgr only when needed. 2011-01-05 Vladimir Serbinenko * grub-core/term/terminfo.c (grub_terminfo_readkey): Handle keys with CTRL. 2011-01-05 Vladimir Serbinenko The E820 type 5 is BADRAM, not EXEC_CODE. * grub-core/loader/i386/bsd.c (GRUB_E820_EXEC_CODE): Removed. (GRUB_E820_BADRAM): New define. * grub-core/loader/i386/linux.c (grub_linux_boot): Translate code into reserved. Propagate BADRAM. * grub-core/loader/i386/bsd.c (GRUB_E820_EXEC_CODE): Removed. (GRUB_E820_BADRAM): New define. 2011-01-04 Vladimir Serbinenko * grub-core/lib/efi/relocator.c (grub_relocator_firmware_fill_events): Ignore the memory post-4G. (grub_relocator_firmware_alloc_region): Additional debug statement. 2011-01-04 Vladimir Serbinenko * grub-core/kern/emu/getroot.c (grub_util_get_grub_dev): Check md/%s names. Reported by: David Pravec. 2011-01-04 Vladimir Serbinenko * grub-core/disk/i386/pc/biosdisk.c (GRUB_MOD_INIT): Workaround buggy BIOSes. 2011-01-04 Vladimir Serbinenko * grub-core/lib/reed_solomon.c (grub_reed_solomon_add_redundancy): Prevent overflow. (grub_reed_solomon_recover): Likewise. 2011-01-04 Vladimir Serbinenko * grub-core/lib/reed_solomon.c (main) [TEST]: Reactivate normal test. 2011-01-04 Vladimir Serbinenko * grub-core/lib/reed_solomon.c (scratch) [! STANDALONE]: Remove leftover variable. 2011-01-04 Colin Watson * grub-core/commands/legacycfg.c (GRUB_MOD_INIT): Fix typo in descriptions of extract_legacy_entries_source and extract_legacy_entries_configfile. Reported by: Seung Soo, Ha. 2011-01-03 Colin Watson * grub-core/bus/pci.c (grub_pci_iterate): Skip remaining functions on devices that do not implement function 0. 2011-01-03 Dave Vasilevsky * grub-core/fs/hfsplus.c: Make parent unsigned. (grub_hfsplus_cmp_catkey): Don't compare using subtraction, it overflows. (grub_hfsplus_cmp_extkey): Likewise 2011-01-03 Vladimir Serbinenko * util/grub-install.in: Correctly use bootloader_id and not GRUB_DISTRIBUTOR on efibootmgr line. 2011-01-03 Vladimir Serbinenko * util/grub-mkfont.c (main): Report errors in FT_New_Face. 2010-12-31 Ian Campbell * util/grub.d/20_linux_xen.in (linux_entry): Correctly capitalize Xen and reorder menu item wording to make it clearer that this entry will launch Xen. Print separate messages when loading Xen and Linux. 2010-12-31 Vladimir Serbinenko * grub-core/partmap/amiga.c (GRUB_AMIGA_PART_MAGIC): New define. (amiga_partition_map_iterate): Check "PART" magic to avoid a very long loop in case of incorrect amiga partmap. 2010-12-31 Vladimir Serbinenko * grub-core/partmap/amiga.c (GRUB_AMIGA_RDSK_MAGIC): New define. (amiga_partition_map_iterate): Use grub_memcmp instead of grub_strcmp. Reported by:EHeM. 2010-12-31 Vladimir Serbinenko * grub-core/loader/i386/bsdXX.c (grub_openbsd_find_ramdisk): Silence spurious warning. Reported by: crocket 2010-12-27 Vladimir Serbinenko * grub-core/loader/xnu.c (grub_cmd_xnu_kernel) [! GRUB_MACHINE_EFI]: Preload EFIemu. (grub_cmd_xnu_kernel64) [! GRUB_MACHINE_EFI]: Likewise. 2010-12-27 Vladimir Serbinenko * grub-core/loader/xnu.c (grub_cmd_xnu_kext): Abort if no kernel is loaded (grub_cmd_xnu_kextdir): Likewise. (grub_cmd_xnu_splash): Likewise. 2010-12-27 Vladimir Serbinenko Avoid using Reed-Solomon with 0 redundancy. * grub-core/kern/i386/pc/startup.S: Remove 0-data check. * grub-core/lib/reed_solomon.c (decode_block): Do not proceed on 0 data or 0 redundancy. (grub_reed_solomon_add_redundancy): Do not proceed with 0 redundancy. (grub_reed_solomon_recover): Likewise. 2010-12-27 Vladimir Serbinenko Don't use disk subsystem in freebsd_boot. * grub-core/loader/i386/bsd.c (freebsd_bootdev): New variable. (freebsd_biosdev): Likewise. (grub_freebsd_boot): Use freebsd_bootdev and freebsd_biosdev. (grub_cmd_freebsd): Set freebsd_bootdev and freebsd_biosdev. 2010-12-26 Vladimir Serbinenko Handling of files of unknown size is currently limited. They can't be used e.g. for initrd or modules. Moreover gzip handling of not easily seekable files is buggy. Disable unknown file size for now. May be inefficient but works. * grub-core/io/gzio.c (test_header): Always retrieve the file size. * grub-core/io/xzio.c (grub_xzio_open): Likewise. 2010-12-25 Mirko Parthey * grub-core/boot/i386/pc/boot.S: Fix %es:%bx pointing to nowhere on floppy probe. 2010-12-25 Jeroen Dekkers * grub-core/disk/raid.c (insert_array): Don't add spurious members. 2010-12-25 Shea Levy * grub-core/genmod.sh.in: Use @OBJCOPY@ rather than objcopy. 2010-12-25 Vladimir Serbinenko * util/grub.d/30_os-prober.in: Don't emit drivemap directive for Windows Server 2008. Reported by: Devin Giddings. 2010-12-25 Vladimir Serbinenko * grub-core/commands/acpihalt.c (grub_acpi_halt): Sleep for 1.5 before writing an error message because of async power management. * grub-core/kern/mips/yeeloong/init.c (grub_halt): Likewise. (grub_reboot): Likewise. 2010-12-23 Jordan Uggla * tests/util/grub-shell.in: Suppress "ACPI shutdown failed" error to keep unit tests from failing when they shouldn't. 2010-12-21 Colin Watson * include/grub/offsets.h (GRUB_KERNEL_I386_PC_RAW_SIZE): The previous patch increased the size of the RS code by 20 bytes (at least with gcc-4.4), so increase this by 20 bytes to match. (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): Likewise. 2010-12-21 Colin Watson * grub-core/lib/reed_solomon.c (gauss_solve): Fix size of standalone scratch area. Make sure to initialise chosen in standalone mode as well as non-standalone. Reported by: Robert Hooker and Andy Whitcroft. Tested by: Andy Whitcroft. 2010-12-21 Colin Watson * grub-core/commands/echo.c (grub_cmd_echo): Make UTF-8-clean by constructing a new unescaped string and passing it to grub_xputs in one go, rather than passing characters to grub_printf one at a time. 2010-12-21 Colin Watson * grub-core/fs/udf.c (read_string): Pacify GCC warning by initialising utf16. 2010-12-21 Colin Watson * util/grub-mkconfig_lib.in (gettext_quoted): Add clarifying comment. Add an extra layer of quotation, requiring the output of this function to be used in a printf format string. (gettext_printf): New function. * util/grub.d/10_hurd.in: Use gettext_printf where appropriate. Extract translatable strings from here-documents and use a temporary variable instead, so that xgettext can find them. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub.d/20_linux_xen.in: Likewise. * po/grub.d.sed: New file. * po/Makefile.in.in ($(DOMAIN).pot-update): Extract gettext_printf arguments. Set c-format flags on all strings extracted from util/grub.d/ (xgettext refuses to include these itself for strings it extracted from a shell file, but these really are c-format). 2010-12-20 Vladimir Serbinenko * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_add_module): Avoid next pointing to nowhere. 2010-12-19 Vladimir Serbinenko * grub-core/fs/affs.c (grub_affs_mount): Read data->bblock.rootblock rather than assuming than rootblock is exactly in the middle. (grub_affs_label): Likewise. 2010-12-19 Vladimir Serbinenko * grub-core/fs/affs.c (grub_affs_fs) [GRUB_UTIL]: Explicitly set reserved_first_sector to 0. * grub-core/fs/cpio.c (grub_cpio_fs) [GRUB_UTIL]: Likewise. * grub-core/fs/sfs.c (grub_sfs_fs) [GRUB_UTIL]: Likewise. * grub-core/fs/xfs.c (grub_xfs_fs) [GRUB_UTIL]: Likewise. 2010-12-19 Vladimir Serbinenko Fix handling of UTF-16 UDF labels. * grub-core/fs/udf.c (grub_udf_iterate_dir): Move string-parsing part (read_string): .. here. (grub_udf_label): Use read_string. 2010-12-19 BVK Chaitanya * grub-core/normal/menu_entry.c (run): Execute commands from menu editor under argument scope. Reported by: Jordan Uggla 2010-12-18 Vladimir Serbinenko * util/grub-mkfont.c (main): Handle errors from FT_Set_Pixel_Sizes. 2010-12-18 Colin Watson * grub-core/normal/term.c (print_more): Make \r or \n scroll one line, and other keys scroll an entire page (previous handling was for \r and \n to scroll a page and other keys to scroll two lines). 2010-12-18 Vladimir Serbinenko * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_make_mbi): Set ptrdest to correct get_physical_target_address rather than incorrect get_virtual_current_address. 2010-12-18 kashyap garimella * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_load): Use correct cat to grub_uint8_t * rather than grub_uint32_t *. 2010-12-10 Colin Watson * .bzrignore: Ignore grub-core/rs_decoder.S. 2010-12-10 Colin Watson * grub-core/gettext/gettext.c (grub_gettext_init_ext): Factor out .mo/.mo.gz opening sequence to ... (grub_mofile_open_lang): ... here. (grub_gettext_init_ext): If opening ll_CC fails, try ll. * util/grub.d/00_header.in (grub_lang): Include country part of locale. Reported by: Mario Limonciello. 2010-12-09 Robert Millan * NEWS: Document addition of ZFS support. 2010-12-04 Colin Watson * grub-core/kern/i386/pc/startup.S (grub_console_getkey): Use `>> 1' rather than `/ 2', as the latter requires -Wa,--divide which would require bumping our minimum binutils version. 2010-12-03 BVK Chaitanya * util/grub-script-check.c (main): Print script line number on error. 2010-12-01 Robert Millan * grub-core/fs/zfs/zfs.c: New file. * grub-core/fs/zfs/zfs_fletcher.c: Likewise. * grub-core/fs/zfs/zfs_lzjb.c: Likewise. * grub-core/fs/zfs/zfs_sha256.c: Likewise. * grub-core/fs/zfs/zfsinfo.c: Likewise. * include/grub/zfs/dmu.h: Likewise. * include/grub/zfs/dmu_objset.h: Likewise. * include/grub/zfs/dnode.h: Likewise. * include/grub/zfs/dsl_dataset.h: Likewise. * include/grub/zfs/dsl_dir.h: Likewise. * include/grub/zfs/sa_impl.h: Likewise. * include/grub/zfs/spa.h: Likewise. * include/grub/zfs/uberblock_impl.h: Likewise. * include/grub/zfs/vdev_impl.h: Likewise. * include/grub/zfs/zap_impl.h: Likewise. * include/grub/zfs/zap_leaf.h: Likewise. * include/grub/zfs/zfs.h: Likewise. * include/grub/zfs/zfs_acl.h: Likewise. * include/grub/zfs/zfs_znode.h: Likewise. * include/grub/zfs/zil.h: Likewise. * include/grub/zfs/zio.h: Likewise. * include/grub/zfs/zio_checksum.h: Likewise. * Makefile.util.def: Build ZFS into libgrubmods. * grub-core/Makefile.core.def: Build zfs.mod. 2010-11-30 Szymon Janc * grub-core/commands/regexp.c (grub_cmd_regexp): Remove unused variable. * grub-core/commands/wildcard.c (match_files): Likewise. 2010-11-30 Robert Millan * grub-core/loader/i386/bsd.c (grub_cmd_freebsd_loadenv, grub_cmd_freebsd_module_elf): Check whether kernel is loaded using grub_loader_is_loaded(), rather than `kernel_type', which may still be `KERNEL_TYPE_NONE' under certain error conditions. 2010-11-30 Robert Millan * grub-core/commands/echo.c: Include `'. (grub_cmd_echo): Call grub_refresh() after printing a message. 2010-11-26 Vladimir Serbinenko Avoid using tricks for initialising endian variables. * grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot): Make const. (GRUB_MOD_INIT): Don't byte-swap. * include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_BIOS_BOOT): Use grub_cpu_to_le16_compile_time and grub_cpu_to_le32_compile_time. * include/grub/types.h (grub_swap_bytes16_compile_time): New macro. (grub_swap_bytes32_compile_time): Likewise. (grub_cpu_to_le32_compile_time): Likewise. (grub_cpu_to_le16_compile_time): Likewise. 2010-11-26 Vladimir Serbinenko * util/grub-setup.c (setup): Stop recommending --force. People who understand the dangers of blocklists are able to find this option anyway and the ones who don't shouldn't use it anyway. 2010-11-26 Robert Millan * grub-core/term/i386/pc/vga_text.c (VGA_TEXT_SCREEN): Beautify. Update all users. 2010-11-26 Colin Watson Fix LVM-on-RAID probing. * util/grub-probe.c (probe): Remember which disk was detected as RAID (perhaps an LVM physical volume). Use that disk's raidname rather than that of the top-level disk. 2010-11-25 BVK Chaitanya Fix cmdline argument quotes for setparams command of menuentry definitions. * grub-core/commands/menuentry.c (setparams_prefix): Use single quotes for arguments. * grub-core/lib/legacy_parse.c (grub_legacy_escape): Use grub_strchrsub function instead. * include/grub/misc.h (grub_strchrsub): New function. 2010-11-24 Colin Watson * util/deviceiter.c (grub_util_iterate_devices): Save a bit of effort by skipping "." and ".." entries up-front. Suggested by: Michael Lazarev. 2010-11-24 Colin Watson * grub-core/Makefile.core.def (xz_decompress): Move -lgcc from ldflags to ldadd, to fix link line ordering. (none_decompress): Likewise. 2010-11-24 Colin Watson * grub-core/Makefile.core.def (kernel): Add kern/emu/cache.S for emu platforms. (grub-emu-lite): Remove kern/emu/cache.S. 2010-11-23 Colin Watson * util/deviceiter.c (compare_devices): If the by-id link for a device couldn't be resolved, fall back to sorting by the by-id link rather than segfaulting. Reported and tested by: Daniel Mierswa. 2010-11-23 Colin Watson * Makefile.util.def (grub-menulst2cfg): List libraries in ldadd, not ldflags, to fix link line ordering. 2010-11-23 Colin Watson * grub-core/Makefile.am (gentrigtables): Put -lm after $<; some linkers are picky about this. 2010-11-23 Colin Watson * grub-core/Makefile.am (command.lst): Adjust sed expression ordering so that extended and priority commands aren't treated as ordinary commands. 2010-11-23 Colin Watson * include/grub/gpt_partition.h (GRUB_GPT_PARTITION_TYPE_BIOS_BOOT): Remove byte-swapping function calls, which are not valid in structure initialisers. * grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot): Make non-const. (GRUB_MOD_INIT): Byte-swap data1, data2, and data3 fields of grub_gpt_partition_type_bios_boot. 2010-11-22 Colin Watson Fix test program build on GNU/kFreeBSD. * Makefile.util.def (example_unit_test): Add `$(LIBZFS) $(LIBNVPAIR)' library dependencies. 2010-11-22 Colin Watson * util/grub-install.in: Fix parsing of --grub-mkrelpath= option. 2010-11-22 Colin Watson * util/grub-install.in: Remove excessive quoting that broke installations to RAID devices. 2010-11-19 Vladimir Serbinenko * grub-core/loader/i386/linux.c (grub_cmd_linux): Pass correctly the bootloader version instead of 0. 2010-11-19 Vladimir Serbinenko * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Fix spurious warning. 2010-11-19 Vladimir Serbinenko * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Don't try to retrieve the metadat sector if size isn't known. * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise. 2010-11-18 Robert Millan * grub-core/fs/btrfs.c (grub_btrfs_mount): Replace grub_strncmp() with grub_memcmp(). 2010-11-18 Vladimir Serbinenko * grub-core/normal/menu_entry.c (print_up): Fix displacement of up arrow. Reported by: Jordan Uggla. 2010-11-16 Vladimir Serbinenko Make better UTF compliant. * grub-core/normal/charset.c (grub_utf8_to_utf16): Handle 6- and 7-byte sequences as incorrect. (grub_is_valid_utf8): Likewise. (grub_utf8_to_ucs4): Likewise. (grub_ucs4_to_utf8): Handle codepoints outside of BMP. (grub_ucs4_to_utf8_alloc): Likewise. * include/grub/charset.h (grub_utf16_to_utf8): Likewise. 2010-11-16 Vladimir Serbinenko Make legacy_source behave like source. * grub-core/commands/legacycfg.c (legacy_file): Don't call grub_show_menu. (grub_cmd_legacy_source): Call grub_show_menu if needed. 2010-11-16 Colin Watson * conf/Makefile.common (CFLAGS_GNULIB): Add -Wno-unused-parameter. (-Wunused implies -Wunused-parameter, but not vice versa). 2010-11-16 Colin Watson * configure.ac: Make error messages less confusing by testing for -Wtrampolines rather than -Wno-trampolines (since -Wno-* is always accepted, but produces a diagnostic if something else is wrong). 2010-11-15 Vladimir Serbinenko * grub-core/term/at_keyboard.c (grub_keyboard_controller_read) [GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: ifdef-ed out (now unused). (grub_keyboard_controller_init) [GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_QEMU]: Don't attempt to read the initial state since controller isn't inited yet. 2010-11-15 Vladimir Serbinenko * grub-core/lib/relocator.c (malloc_in_range): Take into account that allocate_regbeg may need to create new chunk header. 2010-11-14 Vladimir Serbinenko Fix quoting in legacy parser. * grub-core/lib/legacy_parse.c (grub_legacy_escape): Correctly handle single quotes. (grub_legacy_parse): Likewise. Reported by: Jordan Uggla. Tested by: Jordan Uggla. 2010-11-14 Vladimir Serbinenko Don't add -lgcc on i386 and x86_64. * configure.ac (LIBS): Don't add -lgcc on i386 and x86_64. * conf/Makefile.common (LDADD_KERNEL): Likewise. * grub-core/Makefile.core.def (kernel): Use LDADD_KERNEL. 2010-11-14 Vladimir Serbinenko * configure.ac: Add -Wno-trampolines when supported. 2010-11-14 Modestas Vainius * grub-core/kern/emu/getroot.c (grub_util_is_dmraid): Recognise ddf1_ fakeraid. 2010-11-14 Giuseppe Caizzone Add generic logical block size support for UDF. * grub-core/fs/udf.c (GRUB_UDF_LOG2_BLKSIZE): Removed. (GRUB_UDF_BLKSZ): Removed. (struct grub_udf_data): New field "lbshift" to hold the logical block size of the file system in log2 format. All users updated. (sblocklist): Change type to unsigned. (grub_udf_mount): Change type of "sblklist" to unsigned. Move AVDP search before VRS recognition, because the latter requires knowledge of the logical block size, which is detected during the former. Detect and validate logical block size during AVDP search, adding support for block sizes 512, 1024 and 4096. Make VRS recognition independent of block size. 2010-11-14 Giuseppe Caizzone Properly handle deleted files on UDF. * grub-core/fs/udf.c (grub_udf_iterate_dir): Skip directory entries whose "characteristics" field has the bit GRUB_UDF_FID_CHAR_DELETED set. 2010-11-14 Giuseppe Caizzone Support reading files larger than 2 GiB. * grub-core/fs/udf.c (grub_udf_iterate_dir): Change type of variable "offset" to grub_off_t. (grub_udf_read_file): Likewise for parameter "pos". 2010-11-14 Vladimir Serbinenko * docs/grub.texi (Changes from GRUB Legacy): Note when save_env is unavailable. (Simple configuration): Refer to Changes from GRUB Legacy about save_env availability. 2010-11-14 Vladimir Serbinenko * util/grub-install.in: Ignore empty partition table detection instead of trying to include part_ module. 2010-11-14 Vladimir Serbinenko * grub-core/disk/lvm.c (GRUB_MOD_FINI): Reset the vg_list. Fixes LVM on RAID support. 2010-11-14 Vladimir Serbinenko Properly define WORDS_BIGENDIAN in wrapped environments. * grub-core/lib/libgcrypt_wrap/cipher_wrap.h (WORDS_BIGENDIAN): New definition. * grub-core/lib/posix_wrap/sys/types.h (WORDS_BIGENDIAN): Likewise. Reported by: Manoel Rebelo Abranches. Tested by: Manoel Rebelo Abranches. 2010-11-13 Vladimir Serbinenko * util/grub-mkconfig.in: Fix quoting. 2010-11-13 Vladimir Serbinenko Support big ext2 files. * grub-core/fs/ext2.c (grub_ext2_inode): Rename dir_acl to size_high. (grub_ext2_read_block): Support triple indirect blocks. (grub_ext2_read_file): Use 64-bit types and read size_high. (grub_ext2_open): Read size_high. Reported by: Ximin Luo. Tested by: Manoel Rebelo Abranches. 2010-11-13 Vladimir Serbinenko * util/grub-install.in: Handle filenames containing spaces. Reported by: Jordan Uggla. Tested by: Jordan Uggla. 2010-11-13 Vladimir Serbinenko * util/grub-mkconfig.in (grub_script_check): New variable. Use grub_script_check instead of grub-script-check. Reported by: Barry Jackson. 2010-11-13 Vladimir Serbinenko * docs/grub.texi (menu): Correct the order. Reported by: D. Hugh Redelmeier. 2010-11-12 Vladimir Serbinenko * grub-core/kern/i386/pc/startup.S (multiboot_trampoline): Add missing jump. 2010-11-08 Manoel Rebelo Abranches * include/grub/elfload.h (grub_elf32_size): New parameter. All users updated. Return maximum segments alignment. (grub_elf64_size): Likewise. * kern/elf.c (grub_elf32_size): New parameter. All users updated. Return maximum segments alignment. (grub_elf64_size): Likewise. * grub-core/loader/powerpc/ieee1275/linux.c: (grub_linux_claimmap_iterate): New function. Uses the "available" property in the "memory" node for memory allocation for kernel in the PowerPC loader. (grub_linux_load32): Correctly find linux entry point offset. (grub_linux_load64): Likewise. 2010-11-07 Robert Millan On mips-yeeloong, build with -march=loongson2f when this flag is available (GCC >= 4.4). * conf/Makefile.common [COND_mips_yeeloong] (CFLAGS_PLATFORM): Remove `-march=mips3'. * configure.ac: For mips-yeeloong, add -march=loongson2f if available, or otherwise add -march=mips3. 2010-11-07 BVK Chaitanya Suppress shell expansion on echo '*' and echo "*" like cases. Reported by: Jordan Uggla. * grub-core/script/execute.c (grub_script_arglist_to_argv): Escape string arguments before shell expansion. * tests/grub_cmd_echo.in: New testcases. 2010-11-07 Robert Millan * conf/mips-qemu-mips.rmk: Remove stale file from previous transition. 2010-11-07 Vladimir Serbinenko * grub-core/kern/emu/hostdisk.c (convert_system_partition_to_system_disk): Handle devices like "sdaa1". 2010-11-06 Vladimir Serbinenko * include/grub/emu/misc.h: Don't include grub/util/libzfs.h. * include/grub/emu/misc.h (grub_get_libzfs_handle): Move from here ... * include/grub/util/libzfs.h (grub_get_libzfs_handle): ... here. 2010-11-06 Vladimir Serbinenko * grub-core/fs/ntfs.c (grub_ntfs_uuid): Make uppercase. 2010-11-06 Vladimir Serbinenko * util/grub-install.in: Replace useless recomendation to pass --modules with a recomendation to report a bug. 2010-11-06 Vladimir Serbinenko Properly register serial terminfo. Reported by: Jordan Uggla * grub-core/term/serial.c (grub_serial_terminfo_input_template): New const. (grub_serial_terminfo_output_template): Likewise. (grub_cmd_serial): Register "serial" with terminfo. (GRUB_MOD_INIT(serial)): Fill grub_serial_terminfo_input and grub_serial_terminfo_output. 2010-11-05 Robert Millan * util/grub-mkconfig.in: Remove gfxterm.mod probe (no longer needed). 2010-11-05 Robert Millan On Yeeloong, pass machine type information to Linux. * grub-core/loader/mips/linux.c [GRUB_MACHINE_MIPS_YEELOONG] (LOONGSON_MACHTYPE): New macro, set to "machtype=lemote-yeeloong-2f-8.9inches". [LOONGSON_MACHTYPE] (grub_cmd_linux): Pass LOONGSON_MACHTYPE as additional argument to Linux. 2010-11-04 Robert Millan * util/deviceiter.c (grub_util_iterate_devices): Increase SCSI limit to 48 (to cope with Sun Fire X4500), and IDE limit to 96 (its SATA disks are detected as slaveless IDE master drives on kFreeBSD). Reported by Carsten Aulbert. 2010-11-02 Colin Watson * util/bin2h.c (main): Fix spelling error in generated output. 2010-11-01 Grégoire Sutre * grub-core/partmap/bsdlabel.c (iterate_real): Fix an integer overflow. 2010-11-01 Vladimir Serbinenko * grub-core/loader/i386/linux.c (grub_cmd_linux): Autoload vbe.mod if vga= option is supplied. 2010-11-01 Vladimir Serbinenko * util/grub.d/10_hurd.in: Don't call savedefault on recovery entries. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub.d/20_linux_xen.in: Likewise. 2010-11-01 Vladimir Serbinenko * grub-core/lib/arg.c (grub_arg_parse): Avoid interpreting direct argument as an argument to no-argument option. 2010-11-01 Vladimir Serbinenko * util/grub.d/10_linux.in: Add missing load_video with explicit GRUB_GFXPAYLOAD_LINUX. 2010-11-01 Vladimir Serbinenko * Makefile.am (libgrub.pp): Propagate the libgrub.a split. 2010-11-01 Vladimir Serbinenko * grub-core/disk/mdraid1x_linux.c (grub_mdraid_detect): Do not put elements with invlid index. * grub-core/disk/mdraid_linux.c (grub_mdraid_detect): Likewise. * grub-core/disk/raid.c (insert_array): Automatically reallocate members. * include/grub/raid.h (grub_raid_member): New struct. (grub_raid_array): Transform devices and start_sector into usage of grub_raid_member. All users updated (allocated_devs): New member. 2010-11-01 Vladimir Serbinenko * docs/man/grub-set-default.h2m: Clarify that only saved default entry is modified 2010-10-29 BVK Chaitanya NetBSD build fix for getline function conflict from gnulib. * Makefile.util.def (libgrubkern.a): New library for grub kernel components that depend on gnulib headers. (libgrubmods.a): Renamed from earlier libgrub.a. * conf/Makefile.common: Remove gnulib from *_LIBRARY flags. 2010-10-26 Vladimir Serbinenko * util/grub-setup.c (setup): Refuse to do a cross-disk embeddingless install rather than creating a broken install. 2010-10-26 Vladimir Serbinenko * util/grub-setup.c (argp): Remove misleading example of installing to a partition. 2010-10-26 Vladimir Serbinenko * util/grub-setup.c (setup): Clarify the error message. 2010-10-26 Vladimir Serbinenko * include/grub/types.h (grub_target_off_t): Removed no longer used type. 2010-10-23 Vladimir Serbinenko * grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root) [HAVE_LIBZFS && HAVE_LIBNVPAIR]: Fix mountpoint return on ZFS. 2010-10-23 Vladimir Serbinenko * grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Revert r2882. 2010-10-22 Vladimir Serbinenko * grub-core/lib/relocator.c (grub_relocator_subchunk): Remove now useless field head. All users updated. (free_subchunk): Correct handling of IN_REGION subchunk. 2010-10-22 Colin Watson * docs/grub.texi (Installing GRUB using grub-install): Proofread. (Supported kernels): Likewise. 2010-10-18 Grégoire Sutre Make mktemp invocations portable. * grub-core/genmod.sh.in: Use mktemp with an explicit template, and exit if mktemp fails. * tests/grub_script_blockarg.in: Likewise. * tests/partmap_test.in: Likewise. * tests/util/grub-shell-tester.in: Likewise. * tests/util/grub-shell.in: Likewise. * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. * Makefile.am: Likewise, and chain shell commands with `&&' instead of ';'. * util/grub-mkrescue.in: Use the same explicit template as above, and exit if mktemp fails. 2010-10-18 BVK Chaitanya * util/grub.d/10_linux.in: Fix built-in initramfs image mode for Linux kernel, reported by Dennis Schridde. 2010-10-17 Szymon Janc * grub-core/normal/auth.c (grub_auth_check_authentication): Set-but-not-used variable removed. 2010-10-17 Vladimir Serbinenko * docs/grub.texi (GNU/Linux): Document APM unavailability with 32-bit linux protocol. 2010-10-17 Vladimir Serbinenko * grub-core/kern/i386/pc/startup.S (grub_console_setcursor): Check cursor shape for sanity. 2010-10-17 Vladimir Serbinenko * docs/grub.texi (Installation): Document buggy BIOS install. 2010-10-17 Vladimir Serbinenko * docs/grub.texi (Installation): Indent. 2010-10-17 Vladimir Serbinenko * util/grub-setup.c (setup): New parameter allow_floppy. (arguments): New member allow_floppy. (argp_parser): Handle --allow-floppy. (main): Pass allow_floppy. * util/grub-install.in: New option --allow-floppy passed though to grub-setup. 2010-10-17 Vladimir Serbinenko * util/grub-install.in: Handle partitionless disks. 2010-10-17 Vladimir Serbinenko * util/grub-setup.c (setup): Don't clean blocklists before readability verfification. 2010-10-16 Vladimir Serbinenko * docs/grub.texi (Installation): Document embedding zone. Remove obsolete grub-install example. 2010-10-16 Szymon Janc * grub-core/commands/legacycfg.c (grub_cmd_legacy_kernel): Set-but-not-used variable ifdef'ed. * grub-core/lib/legacy_parse.c (grub_legacy_parse): Likewise. * grub-core/bus/usb/ohci.c (grub_ohci_pci_iter): Set-but-not-used variable removed. * grub-core/disk/lvm.c (grub_lvm_scan_device): Likewise. * grub-core/fs/jfs.c (grub_jfs_find_file): Likewise. * grub-core/fs/minix.c (grub_minix_dir): Likewise. * grub-core/fs/sfs.c (grub_sfs_read_extent): Likewise. * grub-core/fs/ufs.c (grub_ufs_dir): Likewise. * grub-core/gfxmenu/gui_list.c (grub_gui_list_new): Likewise. * grub-core/gfxmenu/view.c (redraw_menu_visit): Likewise. * grub-core/gfxmenu/widget-box.c (draw): Likewise. * grub-core/lib/relocator.c (malloc_in_range): Likewise. * grub-core/loader/i386/bsdXX.c (grub_netbsd_load_elf_meta): Likewise. * grub-core/loader/i386/bsd_pagetable.c (fill_bsd64_pagetable): Likewise. 2010-10-16 Vladimir Serbinenko * grub-core/commands/acpihalt.c (skip_ext_op): Skip index field op. * include/grub/acpi.h (GRUB_ACPI_EXTOPCODE_INDEX_FIELD_OP): New enum value. 2010-10-16 Vladimir Serbinenko * grub-core/commands/acpihalt.c (get_sleep_type): Accept \_S5_ as synonym to _S5_. Needed for some DSDTs. 2010-10-16 Vladimir Serbinenko Userspace ACPI parser debugging. * grub-core/commands/acpihalt.c [GRUB_DSDT_TEST]: Include userspace headers and add relevant defines. Don't include standard headers. (main) [GRUB_DSDT_TEST]: New function. * include/grub/acpi.h [GRUB_DSDT_TEST]: Don't include standard headers. Don't declare functions. 2010-10-16 Vladimir Serbinenko Remove dead grub_efi_mm_fini. * grub-core/kern/efi/mm.c (allocated_page): Removed. (ALLOCATED_PAGES_SIZE): Likewise. (MAX_ALLOCATED_PAGES): Likewise. (allocated_pages): Likewise. (grub_efi_allocate_pages): Don't record allocated pages. (grub_efi_free_pages): Likewise. (grub_efi_mm_init): Likewise. (grub_efi_mm_fini): Removed. 2010-10-16 Vladimir Serbinenko * grub-core/kern/efi/mm.c (BYTES_TO_PAGES): Round up instead of down. (grub_efi_mm_init): Take into account the memory map size increase. 2010-10-16 Vladimir Serbinenko * grub-core/term/ns8250.c (do_real_config): Set port->broken to 0. (serial_hw_put): Wait based on real time rather than port reads. Don't roken ports. * include/grub/serial.h (grub_serial_port): New field broken. 2010-10-16 Robert Millan * grub-core/kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Fix premature return when processing non-root ZFS filesystems. Reported by Sergio Talens-Oliag. 2010-10-15 Robert Millan * util/grub.d/10_linux.in (list): Expand "vmlinu[zx]" instances to guarantee compressed ones are processed first. 2010-10-14 Vladimir Serbinenko * grub-core/efiemu/main.c (grub_efiemu_prepare): Handle errors from grub_efiemu_autocore. 2010-10-14 Vladimir Serbinenko * grub-core/kern/i386/pc/startup.S (bypass_table): Use 0x1b explicitly rather than 0x1b. (grub_console_getkey): Use correct jae opcode rather than ja. 2010-10-12 Robert Millan * util/grub-mkconfig.in: Merge `GRUB_DISABLE_LINUX_RECOVERY' and `GRUB_DISABLE_NETBSD_RECOVERY' into a single `GRUB_DISABLE_RECOVERY' variable. All references updated. * util/grub.d/10_kfreebsd.in: Support recovery boot entries. 2010-10-08 Vladimir Serbinenko Correctly distinguish mdraid flavours. * grub-core/disk/raid.c (grub_raid_getname) [GRUB_UTIL]: New function. (insert_array): New argument raid. * include/grub/disk.h (grub_disk_dev) [GRUB_UTIL]: New member raidname. * include/grub/raid.h (grub_raid_array) [GRUB_UTIL]: New member driver. * util/grub-probe.c (probe): PRint raidname instead of plainly "mdraid". 2010-10-09 Vladimir Serbinenko * grub-core/kern/i386/pc/startup.S (grub_console_getkey): Fix incorrect handling of special keys. 2010-10-02 Aleš Nesrsta * include/grub/scsi.h (grub_make_scsi_id): Fix incorrect usgae of GRUB_SCSI_ID_BUS_SHIFT instead of GRUB_SCSI_ID_LUN_SHIFT. 2010-10-02 Aleš Nesrsta * grub-core/bus/usb/ohci.c (GRUB_OHCI_TDS): Increase. * grub-core/bus/usb/uhci.c (N_TD): New definition. All previous implicit users updated. * grub-core/bus/usb/usbtrans.c (grub_usb_bulk_setup_readwrite): Use right endpoint when querying descriptor. 2010-10-01 Vladimir Serbinenko Clear out 0x80 color bit on EFI. Tested by: decoder Reported by: decoder and meta tech. * grub-core/term/efi/console.c (grub_console_standard_color): Removed. (grub_console_setcolorstate): Clear out 0x80 bit. Use GRUB_TERM_DEFAULT_STANDARD_COLOR. (grub_console_output): Use GRUB_TERM_DEFAULT_NORMAL_COLOR. Use GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR. 2010-10-01 Vladimir Serbinenko * grub-core/loader/i386/linux.c (DEFAULT_VIDEO_MODE) [GRUB_MACHINE_EFI]: Set to "auto". 2010-09-30 Vladimir Serbinenko * grub-core/gettext/gettext.c (grub_gettext_init_ext): Avoid using mo_file after freeing. 2010-09-30 Vladimir Serbinenko * grub-core/normal/term.c (read_terminal_list): Free in a right order. 2010-09-30 Vladimir Serbinenko * grub-core/script/execute.c (grub_script_execute_sourcecode): Set flags. 2010-09-30 Vladimir Serbinenko * util/grub-setup.c (main) [GRUB_MACHINE_IEEE1275]: Propagate argp usage. 2010-09-30 Vladimir Serbinenko Put terminfo into core on ieee1275 and yeeloong (needed for console). * gentpl.py: New groups terminfoinkernel and terminfomodule. * grub-core/Makefile.am (KERNEL_HEADER_FILES): Include extcmd.h, arg.h and terminfo.h when needed. * grub-core/Makefile.core.def (kernel): Include term/terminfo.c, term/tparm.c, commands/extcmd.c, lib/arg.c on terminfokernel. (terminfo): Enable only on terminfokernel. (extcmd): Likewise. * include/grub/extcmd.h: Add missing EXPORT_FUNC. * include/grub/lib/arg.h: Likewise. * grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Fix incorrect usage of ->. 2010-09-29 Vladimir Serbinenko * grub-core/loader/multiboot_mbi2.c (grub_multiboot_make_mbi] [GRUB_MACHINE_EFI && __i386__]: Fix typo. 2010-09-29 Vladimir Serbinenko Fix coreboot compilation. * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size): Take VBE info into account even if only text is supported. (fill_vbe_info): Take into account the case when only VGA text is supported. * include/grub/multiboot.h (GRUB_MACHINE_HAS_VBE): Set to zero on coreboot, multiboot and qemu. 2010-09-29 Vladimir Serbinenko * grub-core/lib/relocator.c (malloc_in_range): Trim too verbose debug messages. (grub_relocator_prepare_relocs): Set movers_chunk.srcv. 2010-09-29 Vladimir Serbinenko * grub-core/loader/i386/bsd.c (grub_cmd_netbsd): Provide default serial parameters. 2010-09-29 Vladimir Serbinenko * grub-core/lib/arg.c (grub_arg_parse): Fix treating of all commands as if they were BSD-style. 2010-09-29 Vladimir Serbinenko * grub-core/boot/i386/pc/lnxboot.S: Replace GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE with GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART. 2010-09-29 Vladimir Serbinenko Write embedding zone using Reed-Solomon. * Makefile.util.def (grub-setup): Add grub-core/lib/reed_solomon.c. * grub-core/Makefile.am (rs_decoder.S): New target. (kern/i386/pc/startup.S): Depend on rs_decoder.S. * grub-core/kern/i386/pc/startup.S (reed_solomon_redundancy): New field. (multiboot): Move to RS part. (post_reed_solomon): New label. (grub_boot_drive): Move to non-RS part since it's modified in memory on boot. Include rs_decoder.S. * grub-core/lib/reed_solomon.c: New file. * include/grub/offsets.h (GRUB_KERNEL_I386_PC_REED_SOLOMON_REDUNDANCY): New definition. (GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE): Removed. (GRUB_KERNEL_I386_PC_RAW_SIZE): Updated. (GRUB_KERNEL_I386_PC_NO_REED_SOLOMON_PART): New definition. * include/grub/partition.h (grub_partition_map): Change prototype of embed to allow returning additional sectors. * include/grub/reed_solomon.h: New file. * util/grub-setup.c (setup): Handle Reed-Solomon. 2010-09-28 Colin Watson * grub-core/loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix i386 and x86-64 definedness tests. 2010-09-27 Yves Blusseau Fix generation of kernel_syms.lst * grub-core/Makefile.am (kernel_syms.lst): Fix value and position of ASM_PREFIX 2010-09-26 Robert Millan Support degraded ZFS arrays in "grub-probe -t device" resolution. * grub-core/kern/emu/getroot.c (find_root_device_from_libzfs): When the pool is an array of devices, iterate through it and return the first device that passes a stat() test (instead of blindly returning the first one). 2010-09-26 Robert Millan Build fixes for GNU/kFreeBSD. * Makefile.util.def: Add `$(LIBZFS) $(LIBNVPAIR)' library dependencies to programs that require ZFS conversion. * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy): Support kernels that don't have FLOPPY_MAJOR. 2010-09-25 BVK Chaitanya * grub-core/kern/emu/full.c (grub_emu_post_init): Fix typo. 2010-09-25 BVK Chaitanya Fix grub-emu build. * grub-core/kern/emu/main.c: Remove #include . * grub-core/kern/emu/full.c: Split grub_mdraid_{init,fini} into mdraid09 and mdraid1x. 2010-09-24 Colin Watson Re-enable grub-extras. * autogen.sh: Create symlinks to ${GRUB_CONTRIB} if necessary to avoid confusing Automake. Run autogen only twice, once for the top level and once for grub-core. Add Makefile.util.def and Makefile.core.def from extra modules to the appropriate autogen invocations. If Makefile.common exists in an extra module, include it in both Makefile.util.am and grub-core/Makefile.core.am; similarly, include any Makefile.util.common file in Makefile.util.am and any Makefile.core.common file in grub-core/Makefile.core.am. * conf/Makefile.common ($(top_srcdir)/grub-core/Makefile.core.am): Depend on $(top_srcdir)/grub-core/Makefile.gcry.def. ($(top_srcdir)/grub-core/Makefile.gcry.def): Remove. * grub-core/Makefile.am: Remove inclusion of Makefile.gcry.am. * gentpl.py (gvar_add): Turn GVARS into a set. (global_variable_initializers): Sort global variables on output. (vars_init): New function. (first_time): Likewise. (library): Ensure that non-global variable initialisations are emitted before the first time we emit code for a library block. Append to variables rather than setting them. Only emit noinst_LIBRARIES, BUILT_SOURCES, and CLEANFILES the first time for each conditional path. (program): installdir() emits an Autogen macro, so must be passed to var_add rather than gvar_add. (data): Likewise. (script): Likewise. (rules): New function, centralising handling for different target types. Set up Guile association lists for first_time and vars_init, and send most output to a diversion so that variable initialisations can be emitted first. (module_rules): Use new rules function. (kernel_rules): Likewise. (image_rules): Likewise. (library_rules): Likewise. (program_rules): Likewise. (script_rules): Likewise. (data_rules): Likewise. * configure.ac: Add AC_PROG_LN_S, for the benefit of ntldr-img. * .bzrignore: Add contrib and grub-core/contrib. Remove grub-core/Makefile.gcry.am. 2010-09-24 Yves Blusseau * grub-core/lib/LzFind.c: Add missing include. * grub-core/lib/LzmaEnc.c: Likewise. * grub-core/script/lexer.c: Likewise. * grub-core/script/yylex.l: Likewise. * util/grub-macho2img.c: Likewise. * util/grub-menulst2cfg.c: Likewise. * util/grub-mklayout.c: Likewise. * util/grub-mkpasswd-pbkdf2.c * util/grub-mkrelpath.c: Likewise. * util/resolve.c: Likewise. 2010-09-24 BVK Chaitanya * Makefile.util.def (example_unit_test): Add grub-core/gnulib/libgnu.a. 2010-09-23 Grégoire Sutre * grub-core/commands/acpihalt.c (get_sleep_type): Initialize prev. 2010-09-23 Vladimir Serbinenko Support xz compression on yeeloong. * Makefile.util.def (grub-mkimage): Add $(LIBLZMA). * configure.ac: Check for LZMA. * grub-core/Makefile.core.def (xz_decompress): New target. (none_decompress): Likewise. * grub-core/boot/decompressor/minilib.c: New file. * grub-core/boot/decompressor/none.c: Likewise. * grub-core/boot/decompressor/xz.c: Likewise. * grub-core/kern/mips/cache.S: Change to noreorder nomacro. * grub-core/kern/mips/cache_flush.S: Likewise. * grub-core/kern/i386/pc/lzma_decode.S: Remove dead code. * grub-core/kern/mips/startup.S: Move first stage to ... * grub-core/boot/mips/startup_raw.S: ...here. Change to noreorder nomacro. * grub-core/kern/mips/startup.S: Change to noreorder nomacro. * grub-core/lib/mips/relocator_asm.S: Change to noreorder nomacro. * grub-core/lib/xzembed/xz_dec_bcj.c [GRUB_EMBED_DECOMPRESSOR]: Allocate statically. * grub-core/lib/xzembed/xz_dec_lzma2.c [GRUB_EMBED_DECOMPRESSOR]: Allocate statically or use scratch. Don't check CRC32. * grub-core/lib/xzembed/xz_dec_stream.c [GRUB_EMBED_DECOMPRESSOR]: Allocate statically. Don't check CRC32. * include/grub/decompressor.h: New file. * include/grub/offsets.h (GRUB_KERNEL_MIPS_YEELOONG_RAW_SIZE): Removed. (GRUB_KERNEL_MIPS_YEELOONG_UNCOMPRESSED_SIZE): New field. (GRUB_KERNEL_MIPS_YEELOONG_TOTAL_MODULE_SIZE): Adjusted. (GRUB_KERNEL_MIPS_YEELOONG_PREFIX): Likewise. (GRUB_KERNEL_MIPS_YEELOONG_PREFIX_END): Likewise. (GRUB_KERNEL_MACHINE_UNCOMPRESSED_SIZE): New define. * util/grub-mkimage.c (grub_compression_t): New type. (PLATFORM_FLAGS_DECOMPRESSORS): New flag. (image_target_desc): New field default_compression. (image_targets): Adjust yeeloong targets. (compress_kernel_xz) [HAVE_LIBLZMA]: New function. (compress_kernel): New parameter comp. (generate_image): Likewise. Handle new compression case. (options): New option --compression (help): Likewise. (main): Handle new option. 2010-09-22 Grégoire Sutre * grub-core/kern/emu/hostdisk.c [__NetBSD__]: Define FLOPPY_MAJOR. 2010-09-22 Colin Watson * grub-core/loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix typo in __i386__ conditional. 2010-09-22 Vladimir Serbinenko * grub-core/loader/multiboot_mbi2.c (GRUB_MACHINE_EFI): Add missing include. 2010-09-22 Vladimir Serbinenko Implement EFI and ACPI multiboot2 extensions. * grub-core/loader/multiboot_mbi2.c (grub_multiboot_load): Declare new tags as supported. (acpiv2_size): New function. (grub_multiboot_get_mbi_size): Take new tags into account. (grub_multiboot_make_mbi): Add new tags. * include/grub/multiboot.h (GRUB_MACHINE_HAS_ACPI): New definition. 2010-09-21 Aleš Nesrsta * grub-core/bus/usb/serial/common.c (grub_usbserial_attach): Added missing configuration of USB device. 2010-09-21 Colin Watson * grub-core/normal/menu_entry.c (run): Make sure we always return a value. 2010-09-21 Colin Watson * grub-core/commands/efi/lsefimmap.c (grub_cmd_lsefimmap): NumberOfPages is UINT64 according to the UEFI specification, not UINTN. Fix printf format. 2010-09-21 Colin Watson * grub-core/bus/usb/usbhub.c (poll_nonroot_hub): Change type of `err' to grub_usb_err_t. Reported and tested by: KESHAV P.R. 2010-09-21 Colin Watson * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Make tpart non-const, so that we can assign to it. (Since this is a typedef, the constness refers to the pointer rather than what it points to.) 2010-09-21 Colin Watson * conf/Makefile.common (CPPFLAGS_GNULIB): Add $(top_srcdir)/grub-core/gnulib as well as $(top_builddir)/grub-core/gnulib. Reported by: KESHAV P.R. 2010-09-21 Colin Watson * util/grub-install.in: Fix the bootloader ID option to be consistently --bootloader-id, not --bootloader_id. Reported by: KESHAV P.R. 2010-09-21 Colin Watson * grub-core/commands/hashsum.c (GRUB_MOD_INIT): Make "Compute or check hash checksum." consistently translatable. 2010-09-21 Yves Blusseau * conf/Makefile.common (CPPFLAGS_GNULIB): Replace $(top_srcdir) with $(top_builddir). 2010-09-21 Colin Watson * grub-core/commands/hashsum.c (aliases): Add sha1sum alias. (GRUB_MOD_INIT): Register sha1sum command. (GRUB_MOD_FINI): Unregister sha1sum command. 2010-09-21 Yves Blusseau Keep boot and grub directory names in sync with utils scripts * configure.ac: Define GRUB_BOOT_DIR_NAME and GRUB_DIR_NAME macros. * config.h.in: Add previous macros. * include/grub/emu/misc.h (DEFAULT_DIRECTORY): Use previous macros. * util/grub-install.in: Use $bootdir and $grubdir variables. 2010-09-21 Colin Watson * grub-core/kern/emu/hostdisk.c (find_system_device): Only try to convert partition names to disk names if the new `convert' parameter is set. (grub_util_biosdisk_get_grub_dev): If opening the disk device returns GRUB_ERR_UNKNOWN_DEVICE, treat the partition device as a disk in its own right. This can happen with Xen disk images. 2010-09-21 Yves Blusseau * util/grub-editenv.c: Update strings to avoid warnings when generating grub.pot file. * util/grub-setup.c: Likewise. 2010-09-21 Vladimir Serbinenko * configure.ac: Change version to 1.99~beta0. 2010-09-21 Vladimir Serbinenko * grub-core/loader/i386/multiboot_mbi.c (grub_fill_multiboot_mmap): Add BADRAM. * grub-core/loader/multiboot_mbi2.c (grub_fill_multiboot_mmap): Likewise. * include/multiboot.h: Resynced with specification. * include/multiboot2.h: Likewise. 2010-09-21 Colin Watson Fix po directory handling. * configure.ac: Create po/Makefile.in rather than po/Makefile. * grub-core/gnulib/Makefile.am: Import gettext module. * m4/gnulib-cache.m4: Likewise. * m4/gnulib-comp.m4: Likewise. * m4/gettext.m4: New file, from gnulib. * m4/glibc2.m4: Likewise. * m4/iconv.m4: Likewise. * m4/intdiv0.m4: Likewise. * m4/intl.m4: Likewise. * m4/intldir.m4: Likewise. * m4/intlmacosx.m4: Likewise. * m4/intmax.m4: Likewise. * m4/inttypes-pri.m4: Likewise. * m4/lcmessage.m4: Likewise. * m4/lib-ld.m4: Likewise. * m4/lib-link.m4: Likewise. * m4/lib-prefix.m4: Likewise. * m4/lock.m4: Likewise. * m4/nls.m4: Likewise. * m4/po.m4: Likewise. * m4/printf-posix.m4: Likewise. * m4/progtest.m4: Likewise. * m4/threadlib.m4: Likewise. * m4/uintmax_t.m4: Likewise. * m4/visibility.m4: Likewise. * po/Makefile.am: Remove. * po/Makefile.in.in: New file, from gettext. ($(DOMAIN).pot-update): Support POTFILES-shell. * po/Makevars: New file. * po/POTFILES-shell: Rename to ... * po/POTFILES-shell.in: ... this. Update. * po/POTFILES: Rename to ... * po/POTFILES.in: ... this. Update. * po/Rules-quot: New file, from gettext. * po/boldquot.sed: Likewise. * po/en@boldquot.header: Likewise. * po/en@quot.header: Likewise. * po/insert-header.sin: Likewise. * po/quot.sed: Likewise. * po/remove-potcdate.sin: Likewise. 2010-09-20 Vladimir Serbinenko * util/grub.d/10_kfreebsd.in (kfreebsd_entry): Use UUID when possible. 2010-09-20 Vladimir Serbinenko * util/grub.d/20_linux_xen.in: Use submenus. 2010-09-20 Vladimir Serbinenko Support submenus. * grub-core/commands/menuentry.c (grub_normal_add_menu_entry): New parameter submenu. All users updated. * grub-core/normal/main.c (free_menu): Rename to ... (grub_normal_free_menu): ... this. Made global. * grub-core/normal/menu.c (grub_menu_execute_entry): Open new context if requested. * grub-core/normal/menu_entry.c (screen): New field submenu. (make_screen): Set submenu. (run): Open new context if requested. * include/grub/menu.h (grub_menu_entry): New field submenu. * include/grub/normal.h (grub_normal_free_menu): New proto. 2010-09-20 Vladimir Serbinenko Menu entries extractor. * grub-core/commands/configfile.c (grub_cmd_source): Implement extractor variants. (GRUB_MOD_INIT): Register new variants. (GRUB_MOD_FINI): Unregister new variants. * grub-core/commands/legacycfg.c (grub_cmd_legacy_configfile): Merge into grub_cmd_legacy_source. (grub_cmd_legacy_source): Implement extractor variants. (GRUB_MOD_INIT): Register new variants. (GRUB_MOD_FINI): Unregister new variants. * grub-core/commands/menuentry.c (grub_menu_init): Declare menuentry as an extractor. * grub-core/commands/search_wrap.c (GRUB_MOD_INIT): Declare search as an extractor. * grub-core/commands/test.c (GRUB_MOD_INIT): Declare test as an extractor. * grub-core/kern/corecmd.c (grub_register_core_commands): Declare set as an extractor. * grub-core/normal/context.c (grub_env_context_open): Reorganised. (grub_env_new_context): New function. (grub_env_context_open): Likewise. (grub_env_extractor_open): Likewise. (grub_env_extractor_close): Likewise. * grub-core/script/execute.c (grub_script_execute_cmdline): Handle grub_extractor_level. * include/grub/command.h (GRUB_COMMAND_FLAG_EXTRACTOR): New flag. * include/grub/env.h (grub_env_extractor_open): New proto. (grub_env_extractor_close): Likewise. * include/grub/normal.h (grub_extractor_level): New external variable. 2010-09-20 Vladimir Serbinenko Make cutmem accept a region specification. Suggested by: Samuel Thibault * grub-core/mmap/mmap.c (parsemem): New function. (grub_cmd_cutmem): Handle new arguments. 2010-09-20 Vladimir Serbinenko New command cutmem. * grub-core/mmap/mmap.c (grub_cmd_cutmem): New function. (GRUB_MOD_INIT): Register new command. (GRUB_MOD_FINI): Unregister new command. 2010-09-20 Vladimir Serbinenko Support some annoying BSD and Minix subpartitions. * Makefile.util.def (libgrub.a): Add grub-core/partmap/bsdlabel.c. * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name): Properly handle concatenation. * grub-core/kern/device.c (grub_device_iterate): Likewise. * grub-core/normal/completion.c (iterate_partition): Likewise. * grub-core/kern/disk.c (grub_disk_open): Make disk->name not contain partition. All users updated. * grub-core/partmap/bsdlabel.c (grub_netbsdlabel_partition_map): New struct. (grub_openbsdlabel_partition_map): Likewise. (bsdlabel_partition_map_iterate): Rename to .. (iterate_real): ... this. New arguments sector, freebsd and pmap. (bsdlabel_partition_map_iterate): New function. (netopenbsdlabel_partition_map_iterate): Likewise. (netbsdlabel_partition_map_iterate): Likewise. (openbsdlabel_partition_map_iterate): Likewise. (GRUB_MOD_INIT): Register new partmaps. (GRUB_MOD_FINI): Unregister new partmaps. * grub-core/partmap/msdos.c (pc_partition_map_iterate): Rename to ... (grub_partition_msdos_iterate): ... this. All users updated. Don't support embedding other than in a minix partition. * include/grub/msdos_partition.h (grub_partition_msdos_iterate): New proto. * include/grub/partition.h (grub_partition): New field msdostype. * util/grub-install.in: Handle openbsd and netbsd types being in part_bsd module. 2010-09-20 Vladimir Serbinenko Split mdraid.mod into mdraid09.mod and mdraid1x.mod. * Makefile.util.def (libgrub.a): Add grub-core/disk/mdraid1x_linux.c. * grub-core/Makefile.core.def (mdraid): Renamed to ... (mdraid09): ... this. (mdraid1x): New module. * grub-core/disk/mdraid_linux.c: Move 1.x parts ... * grub-core/disk/mdraid1x_linux.c: ...here. All users updated. 2010-09-20 Vladimir Serbinenko * grub-core/kern/emu/misc.c (asprintf): Use vsnprintf instead of vsprintf. 2010-09-20 Colin Watson * grub-core/commands/efi/lsefimmap.c: Correct header. * NEWS: Update. 2010-09-20 Colin Watson * util/grub-editenv.c (argp_parser): Don't pass translated strings as printf format strings; the translations might contain '%' which could cause a crash. (main): Likewise. * util/grub-fstest.c (argp_parser): Likewise. * util/grub-setup.c (argp_parser): Likewise. (main): Likewise. 2010-09-20 Vladimir Serbinenko Use argp in grub-fstest. * util/grub-fstest.c: Don't include getopt.h. Include argp.h. (root): New variable. (args_count): Likewise. (nparm): Likewise. (num_disks): Likewise. (images): Likewise. (cmd): Likewise. (debug_str): Likewise. (args): Likewise. (options): Transformed to argp. (usage): Removed. (main): Split argument parsing into ... (argp_parser): ... this. Changed to argp format. (argp): New variable. (main): Use argp_parse. 2010-09-20 Tristan Gingold 2010-09-20 Robert Millan 2010-09-20 Vladimir Serbinenko * grub-core/commands/efi/lsefimmap.c: New file. * grub-core/Makefile.core.def (lsefimmap): New module. * include/grub/efi/api.h (PRIxGRUB_EFI_UINTN_T): New definition. 2010-09-20 Vladimir Serbinenko Pause the execution (10s max) if any errors are displayed so the user has a chance to see them. * grub-core/kern/err.c (grub_err_printed_errors): New variable. (grub_print_error): Increment grub_err_printed_errors. * grub-core/normal/menu.c (grub_menu_execute_entry): Pause the execution if any errors were displayed. (show_menu): Remove old code for pause. * grub-core/normal/menu_entry.c (run): Likewise. * grub-core/normal/term.c (grub_normal_char_counter): Removed. All users updated. (grub_normal_get_char_counter): Likewise. * include/grub/err.h (grub_err_printed_errors): New external variable. * include/grub/normal.h (grub_normal_get_char_counter): Removed. 2010-09-20 Vladimir Serbinenko Support multiboot VBE info. * grub-core/loader/i386/multiboot_mbi.c (grub_multiboot_get_mbi_size): Take VBE info into account. (fill_vbe_info) [GRUB_MACHINE_HAS_VBE]: New function. (retrieve_video_parameters) [GRUB_MACHINE_HAS_VBE]: Call fill_vbe_info when appropriate. (grub_multiboot_make_mbi): Account for the size occupied by VBE info. * grub-core/loader/multiboot_mbi2.c (grub_multiboot_load): Declare tags as supported. (grub_multiboot_get_mbi_size): Take new tags into account. (fill_vbe_tag) [GRUB_MACHINE_HAS_VBE]: New function. (retrieve_video_parameters) [GRUB_MACHINE_HAS_VBE]: Call fill_vbe_tag when appropriate. (grub_multiboot_make_mbi): Properly align tags. * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_pm_interface): New function. * include/grub/i386/pc/vbe.h (grub_vbe_bios_get_pm_interface): New proto. * include/grub/multiboot.h (GRUB_MACHINE_HAS_VBE): New definition. 2010-09-20 Vladimir Serbinenko Suport manual terminal geometry specification. * grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Save state in grub_ofconsole_terminfo_output. (grub_ofconsole_term): Use grub_terminfo_getwh. (grub_ofconsole_getwh): Removed. * grub-core/term/serial.c (grub_serial_getwh): Removed. (grub_serial_term): Use grub_terminfo_getwh. * grub-core/term/terminfo.c (grub_terminfo_getwh): New function. (options): New struct. (OPTION_*): New enum. (grub_cmd_terminfo): Transform into extcmd and handle new parameters. * include/grub/terminfo.h (grub_terminfo_output_state): New fields width and height. (grub_terminfo_getwh): New proto. * grub-core/lib/legacy_parse.c (grub_legacy_parse): Handle --lines. 2010-09-20 Vladimir Serbinenko Handle legacy "terminal" command. * grub-core/lib/legacy_parse.c (legacy_command): New flags FLAG_TITLE and FLAG_TERMINAL. (legacy_commands): Add terminal and title. (grub_legacy_parse): Handle terminal. Simplify title handling. 2010-09-20 Vladimir Serbinenko * grub-core/lib/arg.c (grub_arg_show_help): Correctly handle parameters overflow. 2010-09-20 Colin Watson * .bzrignore: Add grub-core/gnulib/sys, widthspec.bin, and widthspec.h. * docs/grub.texi (Shell-like scripting): Document `!'. (Network): Simplify using new i386-pc-pxe format. Mention grub-mknetdir. * NEWS: Update. 2010-09-20 Colin Watson * Makefile.am (SUBDIRS): Restore "."; it's important to force ordering, so that e.g. ascii.h is built before grub-core/font/font.c when needed. 2010-09-20 Colin Watson * grub-core/commands/efi/lsefisystab.c: Correct header. * grub-core/commands/efi/lssal.c: Likewise. * grub-core/commands/testload.c: Likewise. 2010-09-20 Colin Watson * util/grub-mkrescue.in: Add explicit root argument to --set to prevent the UUID being interpreted as an argument to --set (matches previous change to prepare_grub_to_access_device). 2010-09-20 Colin Watson * kern/emu/hostdisk.c: Include and on FreeBSD. Define HAVE_DIOCGDINFO on NetBSD and FreeBSD to reduce the verbosity of later #ifs. (find_partition_start): Define this function on FreeBSD too. (device_is_wholedisk) [__FreeBSD__ || __FreeBSD_kernel__]: New function. (grub_util_biosdisk_get_grub_dev): Use partition-start-sector logic on FreeBSD. 2010-09-20 Yves Blusseau * util/grub-editenv.c: Use argp instead of getopt. 2010-09-20 Yves Blusseau * util/grub-setup.c: Use argp instead of getopt. 2010-09-20 Yves Blusseau Use gnulib-tool to create gnulib source files. * Add gnulib files generated by gnulib-tool in build-aux, m4 and grub-core/gnulib directories * .bzignore: Add **/.deps and autogenerated gnulib files * configure.ac: Assign auxiliary directory to build-aux, add invocation of gnulib macros, add grub-core/gnulib/Makefile * Makefile.am: Add gnulib directory in SUBDIRS (removing unnecessary .), include m4 directory to aclocal. * Makefile.util.def: Remove direct compilation of gnulib source files and use the new grub-core/gnulib/libgnu.a. * build-aux/config.rpath: move config.rpath from top directory to build-aux * conf/Makefile.common: Remove the macro _GL_UNUSED already defined in gnulib headers * conf/Makefile.extra-dist: Add m4/gnulib-cache.m4 * grub-core/Makefile.core.def: Remove unnecessary extra_dist * grub-core/lib/posix_wrap/localcharset.h (locale_charset): Update header. * grub-core/lib/posix_wrap/langinfo.h (nl_langinfo): Return static string. 2010-09-20 Yves Blusseau * .bzrignore: Add grub-kbdcomp, grub-menulst2cfg, *.marker, grub-core/genmod.sh and grub-core/gensyminfo.sh 2010-09-20 BVK Chaitanya Add a test for echo command options. * tests/grub_cmd_echo.in: New test. * Makefile.util.def: Rules for new test. 2010-09-20 Szymon Janc Remove crc.mod and move crc command to hashsum.mod. Remove lib/crc.c - users updated to use gcrypt implementation. * grub-core/commands/crc.c: Removed. * grub-core/Makefile.core.def (crc): Module removed. * grub-core/commands/hashsum.c (aliases[]): Add crc alias. * grub-core/commands/hashsum.c (GRUB_MOD_INIT): Register crc command. * grub-core/commands/hashsum.c (GRUB_MOD_FINI): Unregister crc command. * grub-core/lib/crc.c: Removed. * include/grub/lib/crc.h: Removed. * Makefile.util.def (crc): Remove lib/crc.c * grub-core/Makefile.core.def (libgrub.a): Remove grub-core/lib/crc.c. * util/grub-fstest.c (cmd_crd): Use libgcrypt crc implementation. * Makefile.util.def (libgrub.a): Add grub-core/lib/libgcrypt-grub/cipher/crc.c. * Makefile.util.def (grub-fstest): Add CFLAGS_GCRY to cflags. * Makefile.util.def (grub-fstest): Add CPPFLAGS_GCRY to cppflags. * grub-core/efiemu/prepare.c (grub_efiemu_crc): Use libgcrypt crc implementation. 2010-09-20 Vladimir Serbinenko * grub-core/boot/i386/pc/boot.S: Ignore %dl if it's not in a sane range. 2010-09-19 Vladimir Serbinenko Split config.h for util and core. * acinclude.m4 (HAVE_ASM_USCORE): Transformed into a variable. (ADDR32): Likewise. (DATA32): Likewise. (BSS_START_SYMBOL): Likewise. (END_SYMBOL): Likewise. (NEED_ENABLE_EXECUTE_STACK): Likewise. All users updated. (grub_I386_ASM_ABSOLUTE_WITHOUT_ASTERISK): Removed. * config.h.in: New file. * configure.ac: Use config-util.h as config define file. Rename MACHINE into GRUB_MACHINE. All users updated. (NEED_REGISTER_FRAME_INFO): Transformed into a variable. All users updated. (NESTED_FUNC_ATTR): Likewise. Substitue new variables. (COND_HAVE_ASM_USCORE): New conditional. * grub-core/Makefile.am (ASM_PREFIX): New variable. (kernel_syms.lst): Use ASM_PREFIX. * grub-core/kern/emu/console.c: Include config-util.h. * grub-core/kern/emu/misc.c: Likewise. * grub-core/kern/emu/mm.c: Likewise. * include/grub/emu/misc.h: Likewise. * include/grub/libgcc.h: Likewise. 2010-09-19 Vladimir Serbinenko * grub-core/term/efi/console.c (efi_codes): Fix GRUB_TERM_KEY_* constants usage. * grub-core/kern/emu/console.c (grub_ncurses_getkey): Fix GRUB_TERM_KEY_* constants usage. * grub-core/kern/emu/misc.c (asprintf): Fix vasprintf usage. 2010-09-19 Vladimir Serbinenko * grub-core/bus/usb/ohci.c (grub_ohci_cancel_transfer): Use %p to print pointer. * grub-core/bus/usb/uhci.c: Remove empty define. (grub_uhci_check_transfer): Add missing cast. * grub-core/bus/usb/usbhub.c (poll_nonroot_hub): Use %p to print pointer. * grub-core/term/usb_keyboard.c (grub_usb_keyboard_getkey): Use PRIuGRUB_SIZE. * include/grub/types.h (PRIuGRUB_SIZE): New definition. 2010-09-19 Vladimir Serbinenko * grub-core/Makefile.core.def (legacycfg): Add lib/i386/pc/vesa_modes_table.c on emu. 2010-09-19 BVK Chaitanya Reduce number of temporary files generated by build system. * grub-core/gencmdlist.sh: Removed. * grub-core/genfslist.sh: Removed. * grub-core/genhandlerlist.sh: Removed. * grub-core/genmodsrc.sh: Removed. * grub-core/genpartmaplist.sh: Removed. * grub-core/genparttoollist.sh: Removed. * grub-core/gentermiinallist.sh: Removed. * grub-core/genvideolist.sh: Removed. * grub-core/genmod.sh.in: New file. * grub-core/gensyminfo.sh.in: New file. * conf/Makefile.common (CPPFLAGS_*_LIST): New marker flags. * conf/Makefile.extra-dist: Update with new files. * gentpl.py: Remove rules related to unnecessary temporary files. * grub-core/Makefile.am (syminfo.lst): New replacement for def-* and und-* files. * grub-core/Makefile.core.def: New rules for gensyminfo.sh and genmod.sh scripts. * grub-core/bus/usb/uhci.c: Remove empty #define. * grub-core/genmoddep.awk: Updated with new syminfo format. * util/bash-completion.d/Makefile.am: Add config.log to CLEANFILES. 2010-09-19 Yves Blusseau * Makefile.util.def: Add forgotten $(LIBINTL) library. 2010-09-19 BVK Chaitanya * util/grub-mkconfig.in: Check the config script for syntax errors before saving. 2010-09-19 Colin Watson 2010-09-19 Vladimir Serbinenko * Makefile.util.def (grub-install): Use util/grub-install.in on all platforms. * util/grub-install.in: Add EFI and IEEE1275 support. * util/i386/efi/grub-install.in: Removed. * util/ieee1275/grub-install.in: Likewise. 2010-09-19 Vladimir Serbinenko * grub-core/commands/i386/cmostest.c (+parse_args): New function. (grub_cmd_cmosclean): Likewise. (GRUB_MOD_INIT): Register command cmosclean. * util/grub-mkconfig.in: Export GRUB_BUTTON_CMOS_CLEAN. * util/grub.d/00_header.in: Handle GRUB_BUTTON_CMOS_CLEAN. 2010-09-18 Carles Pina i Estany 2010-09-18 Aleš Nesrsta 2010-09-18 Vladimir Serbinenko Add keyboard layouts support. * Makefile.util.def (grub-mklayout): New file. (grub-kbdcomp): New script. * grub-core/Makefile.am (KERNEL_HEADER_FILES) [COND_mips_yeeloong]: Add keyboard_layouts.h. * grub-core/Makefile.core.def (kernel): Add commands/keylayouts.c and commands/boot.c on yeeloong. (keylayouts): New module. * grub-core/bus/usb/ohci.c * grub-core/bus/usb/uhci.c * grub-core/bus/usb/usbhub.c (rescan): New variable. (grub_usb_add_hub): Poll interrupt pipe for device handling. (attach_root_port): Likewise. (poll_nonroot_hub): Likewise. (grub_usb_poll_devices): Likewise. (detach_device): Close transfer. * grub-core/bus/usb/usbtrans.c (grub_usb_execute_and_wait_transfer): New function. (grub_usb_bulk_setup_readwrite): Likewise. (grub_usb_bulk_finish_readwrite): Likewise. * grub-core/commands/keylayouts.c: New file. * grub-core/commands/keystatus.c (grub_getkeystatus): New function. * grub-core/commands/menuentry.c (hotkey_aliases): All several new aliases. * grub-core/term/at_keyboard.c: Restructured to use keylayouts and support scancode 2. * grub-core/term/usb_keyboard.c: Restructured to use keylayouts. * include/grub/keyboard_layouts.h: New file. * util/grub-mklayout.c: New file. * util/grub-kbdcomp.in: Likewise. 2010-09-18 Vladimir Serbinenko Unify memory types. * grub-core/Makefile.am (KERNEL_HEADER_FILES): Include memory.h. * grub-core/commands/lsmmap.c (grub_cmd_lsmmap): Output user-readable types. * grub-core/kern/i386/multiboot_mmap.c (grub_lower_mem): Removed. (grub_upper_mem): Likewise. * grub-core/kern/ieee1275/init.c (grub_upper_mem): Likewise. * include/grub/memory.h (grub_memory_type_t): New enum. All users updated. 2010-09-18 Vladimir Serbinenko * grub-core/Makefile.core.def (lsapm): New module. * grub-core/commands/i386/pc/lsapm.c: New file. * grub-core/loader/i386/multiboot_mbi.c (make_mbi) [GRUB_MACHINE_PCBIOS]: Pass APM info. * grub-core/loader/multiboot_mbi2.c (make_mbi) [GRUB_MACHINE_PCBIOS]: Likewise. * include/grub/i386/pc/apm.h: New file. * include/multiboot.h (multiboot_apm_info): New struct. 2010-09-18 Vladimir Serbinenko GRUB-legacy configuration file support. * Makefile.util.def (grub-menulst2cfg): New util. * docs/man/grub-menulst2cfg.h2m: New file. * grub-core/Makefile.core.def (legacycfg): New module. * grub-core/commands/legacycfg.c: New file. * grub-core/commands/menuentry.c (append_menu_entry): Rename to ... (grub_normal_add_menu_entry): ... this. * grub-core/commands/password.c (grub_cmd_password): Split main part to ... (grub_normal_set_password): ...this. * grub-core/commands/videoinfo.c (grub_cmd_videoinfo): Support MODE. * grub-core/loader/i386/linux.c (linux_vesafb_res): Move to .., * grub-core/lib/i386/pc/vesa_modes_table.c: ... here. * grub-core/lib/legacy_parse.c: New file. * grub-core/normal/auth.c (grub_cmd_authenticate): New command. * include/grub/i386/pc/vesa_modes_table.h: New file. * include/grub/legacy_parse.h: Likewise. * include/grub/normal.h (grub_normal_add_menu_entry): New proto. * util/grub-menulst2cfg.c: New file. 2010-09-17 Colin Watson * grub-core/kern/emu/hostdisk.c (convert_system_partition_to_system_disk): Initialise node. 2010-09-17 Colin Watson * grub-core/kern/emu/hostdisk.c (convert_system_partition_to_system_disk): Fix devmapper memory pool leak. Reported and based on patch by: Modestas Vainius. 2010-09-17 Colin Watson Fix DM-RAID probing with recent versions of device-mapper udev rules. * grub-core/kern/emu/hostdisk.c (read_device_map): Don't canonicalise device paths under /dev/mapper/. (convert_system_partition_to_system_disk): Compare the uncanonicalised path to /dev/mapper/ rather than the canonicalised path, since device nodes under /dev/mapper/ are often symlinks. 2010-09-17 Yves Blusseau * .bzrignore: *.d removed (old rule), add *.image and symlist.h. 2010-09-16 Yves Blusseau * configure.ac: Avoid some annoying error messages if freetype-config program is not found. 2010-09-16 Colin Watson Support RAID on virtio devices, and others. * grub-core/kern/emu/getroot.c [__MINGW32__] (find_root_device): Rename to ... [__MINGW32__] (grub_find_device): ... this. [! __MINGW32__ && ! __CYGWIN__] (find_root_device): Rename to ... [! __MINGW32__ && ! __CYGWIN__] (grub_find_device): ... this. Use a reasonable default if dir is NULL. [! __MINGW32__ && __CYGWIN__] (find_cygwin_root_device): Rename to ... [! __MINGW32__ && __CYGWIN__] (grub_find_device): ... this. (grub_guess_root_device): Update callers. * include/grub/emu/getroot.h (grub_find_device): Add prototype. * util/raid.c (grub_util_getdiskname): Remove. (grub_util_raid_getmembers): Use grub_find_device rather than grub_util_getdiskname. 2010-09-16 Colin Watson * docs/grub.texi (serial): Remove obsolete comment about GRUB needing to be compiled with serial support. (ls): Indicate that multiple files are accepted. * grub-core/commands/ls.c (GRUB_MOD_INIT): Update help text to indicate that multiple files are accepted. 2010-09-16 Colin Watson * .bzrignore: Add *.1, *.8, grub-shell, grub-shell-tester, libgrub_a_init.c, and util/bash-completion.d/grub. 2010-09-15 Vladimir Serbinenko * util/grub-setup.c (setup): Fix incorrect container semantics. 2010-09-15 Vladimir Serbinenko * grub-core/commands/parttool.c (grub_cmd_parttool): Fix a variable misusage. Reported by: J. Nick Terry 2010-09-15 Vladimir Serbinenko Move embedding routines to partmap sources files. * grub-core/partmap/gpt.c (grub_gpt_partition_type_bios_boot) [GRUB_UTIL]: New variable. (gpt_partition_map_iterate): Set part.parent. (gpt_partition_map_embed) [GRUB_UTIL]: New function. (grub_gpt_partition_map) [GRUB_UTIL]: Set .embed. * grub-core/partmap/msdos.c (pc_partition_map_embed) [GRUB_UTIL]: New function. (grub_msdos_partition_map) [GRUB_UTIL]: Set .embed. * include/grub/partition.h (grub_embed_type_t) [GRUB_UTIL]: New type. (grub_partition_map) [GRUB_UTIL]: New field embed. * util/grub-setup.c (grub_gpt_partition_type_bios_boot): Removed. (setup): Use ->embed. 2010-09-15 Vladimir Serbinenko * grub-core/kern/emu/hostdisk.c (grub_util_biosdisk_is_floppy): New function. * include/grub/emu/hostdisk.h (grub_util_biosdisk_is_floppy): New proto. * util/grub-setup.c (setup): Use grub_util_biosdisk_is_floppy. 2010-09-15 Yves Blusseau Add function to get completions from usage. * util/bash-completion.d/grub-completion.bash.in: Add function to get completions from usage. Use LC_ALL=C to get options properly. 2010-09-15 Vladimir Serbinenko * grub-core/gnulib/basename-lgpl.c: Imported. * grub-core/gnulib/basename.c: Likewise. * grub-core/gnulib/dirname-lgpl.c: Likewise. * grub-core/gnulib/dirname.c: Likewise. * grub-core/gnulib/dirname.h: Likewise. * grub-core/gnulib/stripslash.c: Likewise. 2010-09-15 Vladimir Serbinenko * grub-core/gnulib/error.c: Resynced. * grub-core/gnulib/getopt.c: Likewise. * grub-core/gnulib/getopt_int.h: Likewise. * grub-core/gnulib/regex.h: Likewise. * grub-core/gnulib/regex_internal.c: Likewise. * grub-core/gnulib/regex_internal.h: Likewise. 2010-09-15 Szymon Janc * grub-core/lib/xzembed/xz_dec_stream.c (dec_main): Fix index and block CRC calculations and validity checks. * grub-core/lib/xzembed/xz_dec_stream.c (dec_index): Fix index CRC calculations. 2010-09-15 Szymon Janc * grub-core/lib/xzembed/xz_dec_stream.c (xz_dec_end): Fix memory leak. 2010-09-14 Vladimir Serbinenko Fix incorrect echo options handling. Reported by: Yves Blusseau. * include/grub/command.h (grub_command_flags_t): New flags GRUB_COMMAND_ACCEPT_DASH and GRUB_COMMAND_OPTIONS_AT_START. * grub-core/lib/arg.c (grub_arg_parse): Handle new flags. * grub-core/commands/echo.c (GRUB_MOD_INIT): Use new flags. 2010-09-14 Vladimir Serbinenko * include/grub/command.h (GRUB_COMMAND_FLAG_CMDLINE): Removed. All users updated. (GRUB_COMMAND_FLAG_MENU): Likewise. (GRUB_COMMAND_FLAG_BOTH): Likewise. (GRUB_COMMAND_FLAG_TITLE): Removed. (GRUB_COMMAND_FLAG_NO_ECHO): Likewise. (GRUB_COMMAND_FLAG_EXTCMD): Moved into enum. (GRUB_COMMAND_FLAG_DYNCMD): Likewise. (GRUB_COMMAND_FLAG_BLOCKS): Likewise. (grub_command_flags_t): New enum. All users updated. 2010-09-14 Seth Goldberg Fix solaris compilation. * grub-core/Makefile.core.def (kernel): Include gnulib/error.c on emu. (grub-emu): Add LIBZFS and LIBNVPAIR to ldadd. (grub-emu-list): Likewise. 2010-09-14 Vladimir Serbinenko Remove deprecated root command. * grub-core/commands/minicmd.c (grub_mini_cmd_root): Removed. All users updated. 2010-09-14 Vladimir Serbinenko * util/i386/pc/grub-setup.c: Merge this ... * util/sparc64/ieee1275/grub-setup.c: ... and this ... * util/grub-setup.c: ... into this. * include/grub/sparc64/ieee1275/boot.h (grub_boot_blocklist) [ASM_FILE]: New struct. 2010-09-14 Vladimir Serbinenko * grub-core/fs/ext2.c (grub_ext2_open): Use return error value when possible. 2010-09-14 Vladimir Serbinenko * grub-core/partmap/sun.c (sun_partition_map_iterate): Don't needlesly allocate p. 2010-09-14 Vladimir Serbinenko * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Add explicit root argument to set to prevent UUID to be interpreted as argument to set. 2010-09-14 Vladimir Serbinenko * grub-core/kern/sparc64/ieee1275/crt0.S: Align stack. 2010-09-14 Vladimir Serbinenko Don't export grub_gate_a20. * grub-core/kern/i386/pc/init.c: Remove leftovers. * grub-core/kern/i386/pc/startup.S (FUNCTION(grub_gate_a20)): Rename to ... (grub_gate_a20): ... this. All users updated. * include/grub/i386/pc/init.h: Removed. All users updated. 2010-09-14 Vladimir Serbinenko Create euro.pf2 which supports most European languages. * Makefile.am (grubdata_DATA): Add euro.pf2. (euro.pf2): New target. (CLEANFILES): Add euro.pf2. 2010-09-14 Vladimir Serbinenko * configure.ac: Disable emu-usb by default to prevent inadvertent device takeover. 2010-09-13 Vladimir Serbinenko Disable usbserial on grub-emu since our libusb code isn't good enough yet. * grub-core/Makefile.core.def (usbserial_common): Disable on emu. (usbserial_pl2303): Likewise. (usbserial_ftdi): Likewise. 2010-09-13 Vladimir Serbinenko * include/grub/disk.h (grub_disk): Remove has_partitions. All users updated. * disk/loopback.c (grub_loopback): Remove has_partitions. All users updated. (options): Remove partitions. All users updated. * util/grub-fstest.c (fstest): Don't pass "-p" to loopback. * util/i386/pc/grub-setup.c (setup): copy partition table only when actual partition table is found. 2010-09-13 Vladimir Serbinenko Remove readability checks (too many false negatives). * util/grub-install.in: Remove readability checks. * util/grub-mkconfig.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Revert to old way. 2010-09-13 Vladimir Serbinenko Enable acpi shutdown on all ACPI platforms. * grub-core/Makefile.core.def (halt): Inlude commands/acpihalt.c on coreboo, multiboot and EFI. * grub-core/commands/acpihalt.c (get_sleep_type): Add missing casts. (grub_acpi_halt): Likewise. * grub-core/commands/i386/pc/halt.c (grub_halt): Call grub_acpi_halt. (grub_cmd_halt): Don't call grub_acpi_halt directly. * grub-core/lib/efi/halt.c (grub_halt): Call grub_acpi_halt. * grub-core/lib/i386/halt.c (grub_halt) [GRUB_MACHINE_COREBOOT || GRUB_MACHINE_MULTIBOOT]: Likewise. 2010-09-13 Vladimir Serbinenko * grub-core/commands/iorw.c (grub_cmd_read): Declare buf in smallest context. 2010-09-13 Vladimir Serbinenko * grub-core/video/efi_gop.c: Fix over-80-chars line. * grub-core/video/efi_uga.c: Likewise. 2010-09-13 Vladimir Serbinenko Filter devaliases and never open same device twice. * grub-core/disk/ieee1275/ofdisk.c (last_devpath): New variable. (last_ihandle): Likewise. (ofdisk_hash_ent): New member shortest. (ofdisk_hash_add): Add canonical path too. (scan): New function. (grub_ofdisk_iterate): Iterate over hashed entries. (compute_dev_path): Don't add :0. (grub_ofdisk_open): Don't really open the disk. (grub_ofdisk_close): Avoid closing unrelated disk. (grub_ofdisk_read): Implement reopen logic. * grub-core/kern/ieee1275/openfw.c (grub_ieee1275_canonicalise_devname): New function. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_canonicalise_devname): New proto. 2010-09-13 Vladimir Serbinenko Fix sparc64. * configure.ac (GRUB_KERNEL_MACHINE_LINK_ADDR): Removed. * grub-core/Makefile.core.def (kernel): Make ldflags just use the right address. Add sparc64_ieee1275_ldflags. * grub-core/loader/sparc64/ieee1275/linux.c: Remove leftover include. * util/grub-mkimagexx.c (locate_sections): Correct grub_host_to_target32 to grub_host_to_target_addr (load_image): Likewise. 2010-09-13 Vladimir Serbinenko * grub-core/normal/completion.c (complete_file): Handle device containing slash. Fix based on patch by Doug Nazar. 2010-09-13 Vladimir Serbinenko grub-mknetdir script. * Makefile.util.def (grub-mknetdir): New module. * tests/util/grub-shell.in: Support boot=net * util/grub-mknetdir.in: New file. 2010-09-13 Vladimir Serbinenko videoinfo on non-vbe. * grub-core/Makefile.core.def (vbeinfo): Removed. (vbetest): Removed. (videoinfo): New module. * grub-core/commands/i386/pc/vbeinfo.c: Removed. * grub-core/commands/i386/pc/vbetest.c: Removed. * grub-core/commands/videoinfo.c: New file. * grub-core/commands/videotest.c (grub_cmd_videotest): Support mode specification. (grub_cmd_videotest) [GRUB_MACHINE_PCBIOS]: Load vbe.mod when invoked as vbetest. (GRUB_MOD_INIT) [GRUB_MACHINE_PCBIOS]: New command vbetest. (GRUB_MOD_FINI) [GRUB_MACHINE_PCBIOS]: Unregister vbetest. * grub-core/video/efi_gop.c (grub_video_gop_fill_mode_info): Fill mode_number. New parameter mode. All users updated. (grub_video_gop_iterate): New function. (grub_video_efi_gop): New member iterate. * grub-core/video/i386/pc/vbe.c (framebuffer): Removed leftover fields. (grub_vbe_set_video_mode): Remove setting useless fields. (vbe2videoinfo): New function. (grub_video_vbe_iterate): Likewise. (grub_video_vbe_setup): Use vbe2videoinfo. (grub_video_vbe_print_adapter_specific_info): New function. (grub_video_vbe_adapter): New fields iterate and print_adapter_specific_info. * include/grub/video.h (GRUB_VIDEO_MODE_*): Transform into enum. All users updated. (grub_video_mode_info): New field mode_number. (grub_video_adapter): New fields iterate and print_adapter_specific_info. 2010-09-13 Tristan Gingold 2010-09-13 Robert Millan 2010-09-13 Vladimir Serbinenko * grub-core/commands/efi/lsefisystab.c: New file. * grub-core/commands/efi/lssal.c: Likewise. * grub-core/Makefile.core.def (lsacpi): New module. (lsefisystab): Likewise. * include/grub/efi/api.h (GRUB_EFI_SAL_TABLE_GUID): New definition. (GRUB_EFI_HCDP_TABLE_GUID): Likewise. (grub_efi_sal_system_table): New struct. (grub_efi_sal_system_table_entrypoint_descriptor): Likewise. (grub_efi_sal_system_table_memory_descriptor): Likewise. (grub_efi_sal_system_table_platform_features): Likewise. (grub_efi_sal_system_table_translation_register_descriptor): Likewise. (grub_efi_sal_system_table_purge_translation_coherence): Likewise. (grub_efi_sal_system_table_ap_wakeup): Likewise. * include/grub/types.h (PRIuGRUB_UINT64_T): New definition. 2010-09-13 Vladimir Serbinenko Support explicit user claim that a device is BIOS-visible. * grub-core/kern/emu/getroot.c (grub_util_get_dev_abstraction): Return GRUB_DEV_ABSTRACTION_NONE if device is in device.map. * grub-core/kern/emu/hostdisk.c (convert_system_partition_to_system_disk): Support mdX. (find_system_device): New parameter add. All users updated. (grub_util_biosdisk_is_present): New function. * include/grub/emu/hostdisk.h (grub_util_biosdisk_is_present): New proto. 2010-09-13 Vladimir Serbinenko Search hints support. * commands/search.c (FUNC_NAME): New arguments hints and nhints. All users updated. 2010-09-13 Yves Blusseau Bash completion script for util commands * Makefile.am: Add util/bash-completion.d directory * configure.ac: Likewise. * util/bash-completion.d/Makefile.am: New file. * util/bash-completion.d/grub-completion.bash.in: Likewise. 2010-09-12 Vladimir Serbinenko * grub-core/normal/term.c (put_glyphs_terminal): Correct sign. (print_backlog): set backlog_ucs4 and backlog_glyphs. Reported by: Yves Blusseau. 2010-09-12 Vladimir Serbinenko * grub-core/normal/misc.c (grub_normal_print_device_info): Show partition size and offset. 2010-09-12 Vladimir Serbinenko * grub-core/commands/wildcard.c (make_regex): Escape brackets. 2010-09-12 Vladimir Serbinenko * grub-core/commands/ls.c (grub_cmd_ls): Accept multiple files. 2010-09-12 Vladimir Serbinenko * grub-core/kern/misc.c (grub_vprintf): Use va_copy when necessary. (grub_xvasprintf): Likewise. 2010-09-12 Vladimir Serbinenko * grub-core/kern/emu/main.c (main): Call hostfs_init only after init_all. 2010-09-12 Vladimir Serbinenko * grub-core/commands/menuentry.c (append_menu_entry): Don't rely on args ending with NULL. 2010-09-12 Vladimir Serbinenko * grub-core/lib/xzembed/xz_dec_stream.c (xz_dec_reset): Preserve context pointer. 2010-09-11 Szymon Janc * grub-core/commands/lsacpi.c (grub_cmd_lsacpi): Fix prototype. 2010-09-11 Vladimir Serbinenko Shutdown using ACPI. * grub-core/Makefile.core.def (halt): Add commands/acpihalt.c on i386-pc. * grub-core/commands/acpihalt.c: New file. * grub-core/commands/i386/pc/halt.c (grub_cmd_halt): Call grub_acpi_halt. * include/grub/acpi.h (grub_acpi_fadt): New member pm1a. (grub_acpi_halt): New proto. (GRUB_ACPI_SLP_EN): New const. (GRUB_ACPI_SLP_TYP_OFFSET): Likewise. (GRUB_ACPI_OPCODE_*): New enum. (GRUB_ACPI_EXTOPCODE_*): Likewise. 2010-09-11 Tristan Gingold 2010-09-11 Robert Millan 2010-09-11 Vladimir Serbinenko * commands/lsacpi.c: New file. * grub-core/Makefile.core.def (lsacpi): New module. * include/grub/acpi.h (GRUB_ACPI_FADT_SIGNATURE): New definition. (GRUB_ACPI_MADT_SIGNATURE): Likewise. (grub_acpi_madt_entry_header): New struct. (grub_acpi_madt): Likewise. (grub_acpi_madt_entry_interrupt_override): Likewise. (grub_acpi_madt_entry_sapic): Likewise. (grub_acpi_madt_entry_lsapic): Likewise. (grub_acpi_madt_entry_platform_int_source): Likewise. * include/grub/types.h (PRIxGRUB_UINT32_T): New definition. (PRIuGRUB_UINT32_T): Likewise. (PRIxGRUB_UINT64_T): Likewise. 2010-09-11 Vladimir Serbinenko Implement loading palette on ieee1275_fb. * grub-core/video/ieee1275.c (stdout_ihandle): New variable. (have_setcolors): Likewise. (grub_video_ieee1275_init): Fill stdout_ihandle and have_setcolors. (grub_video_ieee1275_setup): Use grub_video_ieee1275_set_palette. (grub_video_ieee1275_set_palette): Implement. 2010-09-11 Vladimir Serbinenko 2010-09-11 Colin Watson * util/grub-install.in (grub_partition): New variable. Set prefix_drive on EFI and PC to (,$grub_partition) as last resort. * util/i386/pc/grub-setup.c (setup): Don't touch prefix. Fixes a bug reported by Yves Blusseau. 2010-09-11 Vladimir Serbinenko Fix emu on mipsel. * conf/Makefile.common (CFLAGS_PLATFORM): Add -mflush-func =grub_cpu_flush_cache on all mips and not only yeeloong. * configure.ac (COND_mips): New conditional. * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add libgcc on all platforms. * grub-core/kern/emu/cache.S (__mips__): Use _flush_cache. * grub-core/kern/emu/full.c (grub_arch_dl_init_linker) [GRUB_LINKER_HAVE_INIT]: New function. (grub_emu_post_init): Likewise. * grub-core/kern/emu/lite.c (grub_emu_post_init): Likewise. * grub-core/kern/emu/main.c: Use grub_emu_post_init. * include/grub/cache.h (_mips): Include mips/cache.h. * include/grub/disk.h [GRUB_UTIL || GRUB_MACHINE_EMU]: Add missing LVM and RAID prototypes. * include/grub/emu/misc.h (grub_emu_post_init): New proto. * include/grub/mips/time.h (grub_cpu_idle) [GRUB_MACHINE_EMU]: New function. 2010-09-10 Colin Watson * util/grub-install.in: Don't try to verify core.img until after running grub-mkimage to create it. 2010-09-10 Robert Millan * util/grub.d/10_hurd.in: Add misc readability checks. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. 2010-09-10 Colin Watson * util/grub-install.in: ${imgext} won't be defined here until the install branch is merged. For the meantime, only verify core.img on i386-pc and sparc64-ieee1275 platforms. 2010-09-10 Robert Millan Solaris support in grub_find_zpool_from_dir(). Thanks Seth Goldberg for referring to getextmntent() facility. * configure.ac: Check for getextmntent(), `sys/mnttab.h' and `sys/mkdev.h'. * grub-core/kern/emu/misc.c [HAVE_SYS_MNTTAB_H]: Include `'. [HAVE_SYS_MKDEV_H]: Include `'. [HAVE_GETEXTMNTENT] (grub_find_zpool_from_dir): Add getextmntent() method for finding zpool name. 2010-09-10 Colin Watson grub-fstest needs the host and hostfs modules while other utilities actively require those modules to be absent, so grub-fstest needs its own initialisation and finalisation code. * Makefile.am (grub_fstest.pp): New target. (grub_fstest_init.lst): Likewise. (grub_fstest_init.c): Likewise. * Makefile.util.def (grub-fstest): Add grub_fstest_init.c. 2010-09-10 Robert Millan * configure.ac: Check for `struct statfs.f_fstypename' and `struct statfs.f_mntfromname'. * grub-core/kern/emu/misc.c (grub_find_zpool_from_dir): Conditionalize kFreeBSD-specific code. 2010-09-10 Robert Millan * util/grub.d/10_kfreebsd.in: Fix ${kfreebsd_device} initialization on ZFS. Now non-main filesystems are supported as / too. 2010-09-09 Colin Watson * Makefile.util.def (libgrub.a): Move grub-core/kern/emu/hostfs.c and grub-core/disk/host.c to ... (grub-fstest): ... here. Having the host disk implementation present confuses grub-probe and other utility programs. * util/grub-mkconfig.in: Only verify readability of grub.cfg.new when writing to a file, not when writing to stdout. 2010-09-09 BVK Chaitanya * tests/partmap_test.in: New test for partitions. * Makefile.util.def: Rules for new test. 2010-09-09 Robert Millan * util/grub-probe.c (probe): Fix a pair of unhandled error conditions. 2010-09-09 Robert Millan Basic Btrfs support (detection and UUID). * grub-core/fs/btrfs.c: New file. * Makefile.util.def (library): Register btrfs.c. * grub-core/Makefile.core.def: Likewise. 2010-09-08 Robert Millan * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Improve with (optional) parameters to specify device and relative path. * util/grub-install.in: Use is_path_readable_by_grub() to verify readability of a few critical files. * util/grub-mkconfig.in: Use is_path_readable_by_grub() to verify readability of grub.cfg.new. 2010-09-08 Vladimir Serbinenko Split minix.mod into minix.mod and minix2.mod. * Makefile.util.def (libgrub.a): Add grub-core/fs/minix2.c. * grub-core/Makefile.core.def (minix2): New module. * grub-core/fs/minix.c: Use definitions instead of runtime version checking. * grub-core/fs/minix2.c: New file. 2010-09-08 Yves Blusseau Add new --boot-directory option to replace --root-directory * util/grub-install.in: Add new --boot-directory option * util/grub-reboot.in: Likewise. * util/grub-set-default.in: Likewise. 2010-09-08 Yves Blusseau * util/grub-mkconfig.in: Use new variable. 2010-09-08 Yves Blusseau * configure.ac: Define some useful variables. 2010-09-08 Vladimir Serbinenko * grub-core/kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_HAS_CURSORONOFF when appropriate. * grub-core/term/ieee1275/ofconsole.c (grub_ofconsole_setcursor): Use terminfo and don't use cursor-on/cursor-off unless it's known to work. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New element GRUB_IEEE1275_FLAG_HAS_CURSORONOFF. 2010-09-08 Colin Watson * grub-core/kern/efi/init.c (grub_efi_set_prefix): If the prefix starts with "(,", fill the drive containing the loaded image in between those two characters, but expect that a full partition specification including partition map names will follow. 2010-09-08 Robert Millan * configure.ac: Remove `--enable-grub-fstest' option. * Makefile.util.def (grub-fstest): Remove COND_GRUB_FSTEST condition. * util/grub-mkconfig_lib.in (is_path_readable_by_grub): Use `grub-fstest' instead of `grub-probe' for readability verification. * util/grub-probe.c (probe): Remove readability verification kludge. 2010-09-08 Robert Millan * util/grub-mkconfig.in: Pass `--device ${GRUB_DEVICE}' when initializing `GRUB_FS'. 2010-09-08 BVK Chaitanya Not command (!) support to GRUB script. * tests/grub_script_not.in: New test. * Makefile.util.def: Rules for new test. * grub-core/script/execute.c (grub_script_execute_cmdline): Handle ! command as a special case. * grub-core/script/yylex.l (GRUB_PARSER_TOKEN_NOT): Removed. 2010-09-07 BVK Chaitanya * grub-core/commands/wildcard.c (wildcard_expand): Fix wrong grub_free. 2010-09-07 BVK Chaitanya * docs/grub.texi (Shell-like scripting): Fix @dots to @dots{}. 2010-09-07 BVK Chaitanya * docs/grub.texi (Shell-like scripting): Documentation for break, continue, shift and return commands. 2010-09-06 Vladimir Serbinenko Rename CD-ROM to cd on BIOS. * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_drive): Recognise "cd". (grub_biosdisk_call_hook): Call with "cd" instead of arbitrary hdX. 2010-09-05 Vladimir Serbinenko * grub-core/kern/emu/main.c (main): Reinit LVM and RAID. * util/grub-probe.c (main): Likewise. * util/i386/pc/grub-setup.c (main): Likewise. * util/sparc64/ieee1275/grub-setup.c (main): Likewise. Reported and debugged by: alexxy 2010-09-05 Vladimir Serbinenko * grub-core/disk/lvm.c (grub_lvm_scan_device) [GRUB_UTIL]: Output more diagnostic info. 2010-09-05 Jo Shields * util/grub.d/30_os-prober.in: Add missing classes. 2010-09-05 Vladimir Serbinenko * docs/grub.texi (Theme file format): Document new position format. 2010-09-05 Vladimir Serbinenko * docs/grub.texi (Theme file format): Replace Box_slice_names.png with a table. Use @code instead of @verbatim. 2010-09-05 Colin D Bennett Gfxmenu documentation. * docs/grub.texi (Theme file format): New chapter. 2010-09-05 Szymon Janc * grub-core/Makefile.core.def (xzio): New module. * grub-core/io/xzio.c: New file. * grub-core/lib/xzembed/xz.h: New file (from xembed). * grub-core/lib/xzembed/xz_config.h: Likewise. * grub-core/lib/xzembed/xz_dec_bcj.c: Likewise. * grub-core/lib/xzembed/xz_dec_lzma2.c: Likewise. * grub-core/lib/xzembed/xz_dec_stream.c: Likewise. * grub-core/lib/xzembed/xz_lzma2.h: Likewise. * grub-core/lib/xzembed/xz_private.h: Likewise. * grub-core/lib/xzembed/xz_stream.h: Likewise. * include/grub/file.h (grub_file_filter_id): New compression filter GRUB_FILE_FILTER_XZIO. 2010-09-05 Vladimir Serbinenko * include/grub/file.h (GRUB_FILE_SIZE_UNKNOWN): New definition. * grub-core/disk/loopback.c (grub_loopback_open): Handle unknown file size. 2010-09-05 Vladimir Serbinenko * include/grub/err.h (grub_err_t): Replace GRUB_ERR_BAD_GZIP_DATA with GRUB_ERR_BAD_COMPRESSED_DATA. All users updated. 2010-09-05 Vladimir Serbinenko Uncompressed checksum support. * grub-core/commands/hashsum.c (options): Add option --uncompress. (check_list): New parameter uncompress. (grub_cmd_hashsum): Handle --uncompress. 2010-09-05 Vladimir Serbinenko Reintroduce testload. * grub-core/commands/minicmd.c (grub_rescue_cmd_testload) [0]: Moved from here ... * grub-core/commands/testload.c (grub_cmd_testload): ... here. (GRUB_MOD_INIT): New function. (GRUB_MOD_FINI): Likewise. * grub-core/Makefile.core.def (testload): New module. 2010-09-05 Szymon Janc * grub-core/lib/posix_wrap/sys/types.h (bool): Transform into an enum. (uint8_t): New type. (uint16_t): Likewise. (uint32_t): Likewise. (uint64_t): Likewise. 2010-09-05 Szymon Janc * include/grub/crypto.h (GRUB_MD_CRC32): New definition. 2010-09-05 Vladimir Serbinenko * grub-core/io/gzio.c (grub_gzio_open): Removed "transparent" parameter. Made static. (grub_gzfile_open): Removed. All users updated. (GRUB_MOD_INIT): New function. (GRUB_MOD_FINI): Likewise. * grub-core/kern/file.c (grub_file_filters_all): New variable. (grub_file_filters_enabled): Likewise. (grub_file_open): Handle filters. * grub-core/loader/i386/bsd.c (GRUB_MOD_INIT): Load gzio. * grub-core/normal/main.c (GRUB_MOD_INIT): Likewise. * include/grub/file.h (grub_file_filter_id_t): New type. (grub_file_filter_t): Likewise. (grub_file_filters_all): New extern variable. (grub_file_filters_enabled): Likewise. (grub_file_filter_register): New inline function. (grub_file_filter_unregister): Likewise. (grub_file_filter_disable): Likewise. (grub_file_filter_disable_compression): Likewise. * include/grub/gzio.h: Removed. 2010-09-04 BVK Chaitanya Filename expansion support for wildcards in GRUB script. * tests/grub_script_expansion.in: New test. * Makefile.util.def: Rule for new test. * grub-core/commands/wildcard.c: New file, implements filename expansion support for GRUB script. * grub-core/Makefile.core.def: Rule update for regexp.mod. * grub-core/script/argv.c: Cosmetic changes. * grub-core/script/execute.c (grub_script_arglist_to_argv): Refactored to perform wildcard expansion on arguments. * include/grub/script_sh.h (grub_script_wildcard_translator): New struct. * tests/util/grub-shell.in: Fix quoting for read input. 2010-09-04 BVK Chaitanya Support for updating environment variables with matched substrings of regexp. * tests/grub_cmd_regexp.in: New test. * Makefile.util.def: Rule for new test. * grub-core/commands/regexp.c: New option -s to update environment variables with regexp matches. 2010-09-04 Szymon Janc * include/grub/file.h (grub_file): New member not_easly_seekable. (grub_file_seekable): New inline function. * grub-core/io/gzio.c (test_header): Don't test end magic if file isn't easily seekable. (grub_gzio_open): Set not_easly_seekable. * grub-core/fs/i386/pc/pxe.c (grub_pxefs_open): Set not_easily_seekable. * grub-core/io/bufio.c (grub_bufio_open): Propagate not_easily_seekable. 2010-09-04 BVK Chaitanya Support for options to appear multiple times on cmdline. * include/grub/lib/arg.h (grub_arg_list_alloc): New prototype. * grub-core/commands/extcmd.c: Support for repeatable option. * grub-core/lib/arg.c (grub_arg_list_alloc): New function for repeatable option support. Refactor menuentry into a regular command. * grub-core/commands/menuentry.c: New file, menuentry command implementation. * grub-core/Makefile.core.def: Rule update for normal.mod. * grub-core/normal/main.c: Moved menuentry creation to grub-core/commands/menuentry.c. * grub-core/normal/menu.c (grub_menu_execute_entry): Removed. (grub_menu_execute_entry_real): Removed. * grub-core/script/execute.c (grub_script_execute_sourcecode): New function. (grub_script_execute_menuentry): Removed. * grub-core/script/parser.y (menuentry): Removed. * grub-core/script/script.c (grub_script_create_cmdmenu): Removed. * grub-core/script/yylex.l (menuentry): Removed. * include/grub/menu.h (grub_menu_init): New prototype. (grub_menu_fini): New prototype. * include/grub/normal.h (grub_normal_add_menu_entry): Removed. * include/grub/script_sh.h (grub_script_cmd_menuentry): Removed. (grub_script_execute_sourcecode): New prototype. 2010-09-04 BVK Chaitanya "return" command for GRUB script functions. * tests/grub_script_return.in: New test. * Makefile.util.def: Rules for new test. * grub-core/script/execute.c (grub_script_return): New function. * grub-core/script/main.c: Register/unregister return commaond. * include/grub/script_sh.h (grub_script_return): New prototype. 2010-09-04 BVK Chaitanya "setparams" command to update positional parameters. * tests/grub_script_setparams.in: New test. * Makefile.util.def: Rules for new test. * grub-core/script/argv.c (grub_script_argv_make): New function. * grub-core/script/execute.c (replace_scope): New function. (grub_script_setparams): New function. * grub-core/script/lexer.c: Remove unused variables. * grub-core/script/main.c: Register/unregister setparams command. * include/grub/script_sh.h (grub_script_argv_make): New prototype. (grub_script_setparams): New prototype. 2010-09-04 BVK Chaitanya * grub-core/normal/completion.c (grub_normal_do_completion): Fix grub_free order. 2010-09-04 BVK Chaitanya Support for passing block of commands as an argument to extcmds. * Makefile.util.def: Rules for new test. * tests/grub_script_blockarg.in: New test. * grub-core/tests/test_blockarg.c: New file, block argument command used in the test. * include/grub/extcmd.h (grub_extcmd_context): New struct. (grub_register_extcmd_prio): New function prototype. (grub_extcmd_dispatcher): New function prototype. * include/grub/command.h (GRUB_COMMAND_FLAG_BLOCKS): New command type. * include/grub/script_sh.h (struct grub_script): New members `children', `next_siblings' and `refcnt' for block arguments and reference counting. (GRUB_SCRIPT_ARG_TYPE_BLOCK): New argument type. (grub_script_arg): New member `script' for block argument. (grub_script_argv): New member `script' for block argument. (grub_parser_param): New member `scripts' for block argument. (grub_script_mem_free): New extern function prototype. (grub_script_ref): New function prototype. (grub_script_unref): New function prototype. * grub-core/normal/dyncmd.c (grub_dyncmd_dispatcher): Moved to extcmd form to support block arguments. * grub-core/script/argv.c: Block arguments support. * grub-core/script/execute.c: Likewise. * grub-core/script/lexer.c: Likewise. * grub-core/script/main.c: Likewise. * grub-core/script/script.c: Likewise. * grub-core/script/parser.y: Likewise. New `block' and `block0' non-terminals. * grub-core/commands/acpi.c: Update extcmd implementations with grub_extcmd_context_t. * grub-core/commands/cat.c: Likewise. * grub-core/commands/echo.c: Likewise. * grub-core/commands/extcmd.c: Likewise. * grub-core/commands/hashsum.c: Likewise. * grub-core/commands/hdparm.c: Likewise. * grub-core/commands/help.c: Likewise. * grub-core/commands/hexdump.c: Likewise. * grub-core/commands/i386/cpuid.c: Likewise. * grub-core/commands/i386/pc/drivemap.c: Likewise. * grub-core/commands/i386/pc/halt.c: Likewise. * grub-core/commands/i386/pc/sendkey.c: Likewise. * grub-core/commands/iorw.c: Likewise. * grub-core/commands/keystatus.c: Likewise. * grub-core/commands/loadenv.c: Likewise. * grub-core/commands/ls.c: Likewise. * grub-core/commands/lspci.c: Likewise. * grub-core/commands/memrw.c: Likewise. * grub-core/commands/probe.c: Likewise. * grub-core/commands/search_wrap.c: Likewise. * grub-core/commands/setpci.c: Likewise. * grub-core/commands/sleep.c: Likewise. * grub-core/disk/loopback.c: Likewise. * grub-core/hello/hello.c: Likewise. * grub-core/loader/i386/bsd.c: Likewise. * grub-core/loader/xnu.c: Likewise. * grub-core/term/gfxterm.c: Likewise. * grub-core/term/serial.c: Likewise. * grub-core/tests/lib/functional_test.c: Likewise. 2010-09-04 BVK Chaitanya Multi-line quoted strings support. * grub-core/script/lexer.c (append_newline): Removed. (grub_script_lexer_yywrap): Refactored. (grub_script_lexer_init): Refactored. * grub-core/script/yylex.l (yywrap): New function. (grub_lexer_resplit): New function. (grub_lexer_unput): New function. * include/grub/script_sh.h (grub_lexer_param): New members, unput and resplit. * tests/grub_script_echo1.in: Added few more testcases. 2010-09-04 Vladimir Serbinenko * grub-core/kern/misc.c: Don't add abort alias in utils. Reported by: echoline. 2010-09-03 BVK Chaitanya Add missing files into "make dist" tarball for other platforms. * gentpl.py (script): Use dist_noinst_DATA instead of EXTRA_DIST. * conf/Makefile.common (dist_noinst_DATA): New variable. * conf/Makefile.extra-dist: Added missing make dist files. * grub-core/Makefile.core.def: Likewise. 2010-09-03 Vladimir Serbinenko Compress grub_prefix. * grub-core/boot/i386/pc/lnxboot.S: Use GRUB_KERNEL_I386_PC_MULTIBOOT_SIGNATURE. * grub-core/kern/i386/pc/startup.S: Move grub_prefix to compressed part. * include/grub/offsets.h: Rename GRUB_MACHINE_DATA_END to GRUB_MACHINE_PREFIX_END. All users updated. (GRUB_KERNEL_I386_PC_PREFIX): Set to GRUB_KERNEL_I386_PC_RAW_SIZE. (GRUB_KERNEL_I386_PC_PREFIX_END): Set to GRUB_KERNEL_I386_PC_PREFIX + 0x40. (GRUB_KERNEL_I386_PC_RAW_SIZE): Decrease. * util/grub-mkimage.c (image_target_desc): Change data_end to prefix_end. All users updated. 2010-09-03 Vladimir Serbinenko * grub-core/loader/i386/bsd.c (grub_freebsd_boot): Set %ebp to sane value. (grub_openbsd_boot): Likewise. (grub_netbsd_boot): Likewise. * grub-core/loader/i386/xnu.c (grub_xnu_boot_resume): Likewise. (grub_xnu_boot): Likewise. 2010-09-02 Vladimir Serbinenko * configure.ac: Clean LIBS variable after tests. 2010-09-02 Colin Watson * INSTALL: Document that libdevmapper needs to be 1.02.34 or later. 2010-09-02 Vladimir Serbinenko * configure.ac: Check for dm_log_with_errno_init in libdevmapper and echo if libdevmapper will be used. 2010-09-02 Ian Turner * grub-core/fs/i386/pc/pxe.c (grub_pxefs_read): Keep the blocksize constant for the same file. 2010-09-02 Vladimir Serbinenko * grub-core/kern/i386/multiboot_mmap.c: Remove leftover include. 2010-09-02 Colin Watson * .bzrignore: Add *.pp, **/.dirstamp, grub-core/*.module, and grub-core/*.pp. 2010-09-02 Colin Watson Zero %ebp and %edi when entering Linux's 32-bit entry point, as required by the boot protocol. * include/grub/i386/relocator.h (struct grub_relocator32_state): Add ebp and edi members. * grub-core/lib/i386/relocator.c (grub_relocator_boot): Handle state.ebp and state.edi. * grub-core/lib/i386/relocator32.S (grub_relocator32_start): Set %ebp and %edi according to grub_relocator32_ebp and grub_relocator32_edi respectively. * grub-core/loader/i386/linux.c (grub_linux_boot): Zero state.ebp and state.edi. 2010-09-02 Vladimir Serbinenko Add i386-pc-pxe image target. * util/grub-mkimage.c (image_target_desc): New enum value IMAGE_I386_PC_PXE. (image_targets): New target i386-pc-pxe. (generate_image): Handle i386-pc-pxe image. 2010-09-02 Vladimir Serbinenko Fix grub_pxe_scan. * grub-core/fs/i386/pc/pxe.c (grub_pxe_pxenv): Put correct type bangpxe. (grub_pxe_scan): Fix types and pxe_rm_entry computation. All users updated. * include/grub/i386/pc/pxe.h (grub_pxe_bangpxe): New struct. (grub_pxe_pxenv): Correct type. 2010-09-01 Colin Watson * NEWS: Document most of the important changes since 1.98. 2010-09-01 Colin Watson * util/grub-mkrescue.in (usage): Tidy up usage output (and hence generated manual page) a little. 2010-09-01 Colin Watson * docs/grub.texi: Add myself as an author. 2010-09-01 Vladimir Serbinenko * Makefile.util.def (libgrub.a): Add missing sunpc. Reported by: Seth Goldberg. 2010-08-30 Vladimir Serbinenko Interrupt wrapping and code simplifications. * Makefile.util.def (grub-mkrescue): Use x86 tg instead of x86_noieee1275 which are functionaly equivalent in this case. (grub-install): Make source on each platform explicit. Enable on all noemu. * gentpl.py (x86_efi_pc): Removed group. (x86_noefi): Likewise. (i386_noefi): Likewise. (x86_noieee1275): Likewise. (i386_noieee1275): Likewise. (i386_noefi_noieee1275): Likewise. (i386_pc_qemu_coreboot): Likewise. (i386_coreboot_multiboot): Likewise. (i386_pc_coreboot_multiboot_qemu): Likewise. (x86_noefi_mips): Likewise. (noieee1275): Likewise. (ieee1275_mips): Likewise. (noemu_noieee1275): Likewise. (cmos): New group. (usb): Likewise. (videoinkernel): Likewise. (videomodules): Likewise. * grub-core/Makefile.am (KERNEL_HEADER_FILES): Remove include/grub/elf.h, include/grub/elfload.h, include/grub/net.h, include/grub/reader.h, include/grub/symbol.h, include/grub/types.h, include/grub/loader.h, include/grub/msdos_partition.h, include/grub/machine/biosdisk.h, include/grub/machine/boot.h, include/grub/machine/console.h, include/grub/machine/vga.h, include/grub/machine/vbe.h, include/grub/machine/init.h, include/grub/machine/kernel.h, include/grub/cpu/time.h, include/grub/cpu/types.h, include/grub/gzio.h and include/grub/menu.h (KERNEL_HEADER_FILES) [i386-pc]: Add include/grub/machine/int.h. (KERNEL_HEADER_FILES) [i386-ieee1275]: Add include/grub/i386/pit.h * grub-core/Makefile.core.def (kernel): Explicit the source for startup. Explicit the platforms using kern/generic/rtc_get_time_ms.c. Split ieee1275_mips. Remove kern/i386/halt.c. Remove kern/i386/misc.S. Enable kern/i386/pit.c on all x86. Remove kern/i386/ieee1275/init.c. Use videoinkernel tag. (usb): Enable on all usb. (usbserial_common): Likewise. (usbserial_pl2303): Likewise. (usbserial_ftdi): Likewise. (uhci): Enable on all x86. (ohci): Enable on all pci. (cmostest): Enable on all CMOS. (acpi): Include commands/acpi.c on all platforms. (halt): Add relevant lib/*/halt.c. (hdparm): Enable on all pci. (lspci): Likewise. (usbtest): Enable on all usb. (ata): Enable on all pci. (ata_pthru): Likewise. (usbms): Enable on all usb. (usb_keyboard): Likewise. (font): Use tag videomodules. (bufio): Likewise. (datetime): Use tag cmos. Enable on all noemu. (mmap): Use tags common and x86. (gfxterm): Use tag videomodules. (bitmap): Likewise. (bitmap_scale): Likewise. (video_fb): Likewise. (video): Likewise. * grub-core/bus/usb/ohci.c (grub_ohci_td): Make link_td a pointer and adjust padding accordingly. All users updated. (grub_ohci_transaction): Fix bad format specification. (GRUB_MOD_INIT): Add asserts for struct size. * grub-core/bus/usb/uhci.c (grub_uhci_pci_iter): Add explicit casts. (grub_alloc_td): Likewise. (grub_free_queue): Likewise. (grub_uhci_transfer): Likewise. (grub_uhci_transaction): Fix bad format specification. * grub-core/bus/usb/usbtrans.c (grub_usb_control_msg): Likewise. (grub_usb_bulk_readwrite): Likewise. * grub-core/kern/i386/misc.S (grub_stop): Moved from here ... * grub-core/commands/i386/pc/halt.c (stop): ...here. Transformed into C. Made static. * grub-core/lib/i386/halt.c (stop): ... and here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_halt): Moved from here ... * grub-core/commands/i386/pc/halt.c (grub_halt): ...here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_int13_extensions): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_int13_extensions): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_rw_standard): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_rw_standard): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_check_int13_extensions): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_check_int13_extensions): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_get_cdinfo_int13_extensions): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_cdinfo_int13_extensions): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_int13_extensions): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_diskinfo_int13_extensions): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_standard): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_diskinfo_standard): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_biosdisk_get_num_floppies): Moved from here ... * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_num_floppies): ... here. Transformed into C. Made static. * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_get_diskinfo_real): New function. * grub-core/kern/i386/pc/startup.S (grub_pxe_scan): Moved from here ... * grub-core/fs/i386/pc/pxe.c (grub_pxe_scan): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_rm_entry): Moved from here ... * grub-core/fs/i386/pc/pxe.c (grub_rm_entry): ... here. Transformed into C. Made static. * grub-core/kern/i386/ieee1275/init.c: Removed. * grub-core/kern/i386/misc.S: Likewise. * grub-core/kern/i386/pc/startup.S (grub_get_memsize): Splitted from here ... * grub-core/kern/i386/pc/init.c (grub_get_conv_memsize): ... here. Transformed into C. Made static. All users updated. * grub-core/kern/i386/pc/mmap.c (grub_get_ext_memsize): ... and here. Transformed into C. Made static. All users updated. * grub-core/kern/i386/pc/startup.S (grub_get_eisa_mmap): Moved from here... * grub-core/kern/i386/pc/mmap.c (grub_get_eisa_mmap): ... here. Transformed into C. Made static. All users updated. * grub-core/kern/i386/pc/startup.S (grub_get_mmap_entry): Moved from here... * grub-core/kern/i386/pc/mmap.c (grub_get_mmap_entry): ... here. Transformed into C. Made static. All users updated. * grub-core/kern/i386/pc/startup.S (grub_stop_floppy): Removed (replaced by C version). * grub-core/kern/i386/pc/startup.S (grub_vga_set_mode): Moved from here... * grub-core/video/i386/pc/vga.c (grub_vga_set_mode): ...here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_controller_info): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_controller_info): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode_info): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode_info): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_mode): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_mode): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_mode): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_mode): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_getset_dac_palette_width):Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_getset_dac_palette_width):... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_memory_window): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_memory_window): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_memory_window): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_memory_window): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_scanline_length): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_scanline_length): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_scanline_length): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_scanline_length): ... here. Transformed into C. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_display_start): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_display_start): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_get_display_start): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_get_display_start): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_vbe_bios_set_palette_data): Moved from here... * grub-core/video/i386/pc/vbe.c (grub_vbe_bios_set_palette_data): ... here. Transformed into C. Made static. * grub-core/kern/i386/pc/startup.S (grub_pxe_call): Receive pxe_rm_entry as third argument. (grub_bios_interrupt): New function. * grub-core/kern/i386/qemu/mmap.c: Remove useless include. * grub-core/kern/i386/qemu/startup.S (codestart): Do cli;hlt instead of calling grub_stop. * grub-core/kern/efi/efi.c (grub_halt): Moved from here ... * grub-core/lib/efi/halt.c (grub_halt): ...here. * grub-core/kern/emu/main.c (grub_halt): Moved from here ... * grub-core/lib/emu/halt.c (grub_halt): ... here. * grub-core/lib/i386/halt.c: Moved from here ... * grub-core/lib/i386/halt.c: ... here. * grub-core/kern/ieee1275/openfw.c (grub_halt): Moved from here ... * grub-core/lib/ieee1275/halt.c (grub_halt): ... here. * grub-core/loader/i386/pc/linux.c (grub_linux16_boot): Call grub_stop_floppy. * grub-core/loader/i386/xnu.c (guessfsb) [IEEE1275]: Enable. * include/grub/i386/coreboot/init.h: Removed. * include/grub/i386/multiboot/init.h: Likewise. * include/grub/i386/pc/biosdisk.h: Removed all function prototypes. * include/grub/i386/pc/init.h: Likewise except grub_gate_a20. * include/grub/i386/pc/int.h: New file. * include/grub/i386/pc/pxe.h (GRUB_PXE_SIGNATURE): New definition. (grub_pxe_scan): Removed. (grub_pxe_call): Update prototype. * include/grub/i386/pc/vbe.h: Removed EXPORT_FUNC and useless prototypes. * include/grub/i386/pc/vga.h (grub_vga_set_mode): Removed. * include/grub/i386/qemu/init.h: Removed. * include/grub/mips/yeeloong/kernel.h (grub_reboot): Add missing noreturn. (grub_halt): Likewise. * include/grub/misc.h (grub_halt): Removed EXPORT_FUNC. (grub_reboot): Likewise. * grub-core/kern/i386/coreboot/init.c (grub_stop_floppy): Moved from here... * include/grub/i386/floppy.h (grub_stop_floppy): ...here. Inlined. * grub-core/kern/i386/pc/startup.S (grub_hard_stop): Removed. 2010-08-30 Robert Millan * NEWS: Document addition of ZFS support in `grub-install' and `grub-mkconfig'. 2010-08-30 BVK Chaitanya * conf/Makefile.common (CPPFLAGS_DEFAULT): Remove leading / from dprintf output. 2010-08-30 Vladimir Serbinenko Remove leftover embedding of font objects. * include/grub/kernel.h (OBJ_TYPE_FONT): Removed. * util/grub-install.in (font): Removed. * util/grub-mkimage.c (generate_image): Remove font support. All users updated. 2010-08-30 Vladimir Serbinenko Remove leftover embedding of font objects. * include/grub/kernel.h (OBJ_TYPE_FONT): Removed. * util/grub-install.in (font): Removed. * util/grub-mkimage.c (generate_image): Remove font support. All users updated. 2010-08-30 Vladimir Serbinenko * docs/grub.texi (Network): Fix reference to pxe_blksize. Reported by: Ian Turner 2010-08-30 Vladimir Serbinenko * grub-core/normal/menu.c (grub_wait_after_message): Add a 10 second timeout to avoid indefinite boot stalling. 2010-08-30 Vladimir Serbinenko * grub-core/normal/color.c (grub_env_write_color_normal): Fix a warning. (grub_env_write_color_highlight): Likewise. 2010-08-30 Vladimir Serbinenko * grub-core/normal/term.c (print_more): Return to normal and not to standard state after printing "---MORE---". 2010-08-30 Vladimir Serbinenko * grub-core/term/i386/vga_common.c (grub_console_setcolorstate): Mask out the bit 0x80 since it has other meaning that specifiing color. 2010-08-29 Vladimir Serbinenko New relocator. Allows for more kernel support and more straightforward loader writing. * Makefile.am (BOOTTARGET): New variable. (QEMU32): Likewise. (linux.init.x86_64): New target. (linux.init.i386): Likewise. (multiboot.elf): Likewise. (kfreebsd.elf): Likewise. (kfreebsd.aout): Likewise. (pc-chainloader.elf): Likewise. (pc-chainloader.bin): Likewise. (ntldr.elf): Likewise. (ntldr.bin): Likewise. (multiboot2.elf): Likewise. (kfreebsd.init.x86_64): Likewise. (kfreebsd.init.i386): Likewise. (knetbsd.init.i386): Likewise. (kopenbsd.init.i386): Likewise. (knetbsd.init.x86_64): Likewise. (kopenbsd.init.x86_64): Likewise. (linux-initramfs.i386): Likewise. (linux-initramfs.x86_64): Likewise. (kfreebsd-mfsroot.i386.img): Likewise. (knetbsd.image.i386): Likewise. (kopenbsd.image.i386): Likewise. (kopenbsd.image.x86_64): Likewise. (knetbsd.miniroot-image.i386.img): Likewise. (kfreebsd-mfsroot.x86_64.img): Likewise. (knetbsd.image.x86_64): Likewise. (knetbsd.miniroot-image.x86_64.img): Likewise. (kfreebsd-mfsroot.i386.gz): Likewise. (bootcheck-kfreebsd-i386): Likewise. (kfreebsd-mfsroot.x86_64.gz): Likewise. (bootcheck-kfreebsd-x86_64): Likewise. (knetbsd.miniroot-image.i386.gz): Likewise. (bootcheck-knetbsd-i386): Likewise. (bootcheck-kopenbsd-i386): Likewise. (bootcheck-kopenbsd-x86_64): Likewise. (knetbsd.miniroot-image.x86_64.gz): Likewise. (bootcheck-knetbsd-x86_64): Likewise. (bootcheck-linux-i386): Likewise. (bootcheck-linux-x86_64): Likewise. (bootcheck-linux16-i386): Likewise. (bootcheck-linux16-x86_64): Likewise. (bootcheck-multiboot): Likewise. (bootcheck-multiboot2): Likewise. (bootcheck-kfreebsd-aout): Likewise. (bootcheck-pc-chainloader): Likewise. (bootcheck-ntldr): Likewise. (CLEANFILES): Add new targets. (BOOTCHECKS): New variable. (.PHONY): Add bootchecks. (SUCCESSFUL_BOOT_STRING): New variable. (BOOTCHECK_TIMEOUT): Likewise. (bootcheck): New target * Makefile.util.def (grub-mkrescue): Enable on i386-multiboot. * configure.ac: Correct efiemu excuse. * docs/grub.texi (Supported kernels): New chapter. * grub-core/Makefile.am (KERNEL_HEADER_FILES): Add include/grub/mm_private.h. Simplify inclusion of include/grub/boot.h, include/grub/loader.h and include/grub/msdos_partition.h (KERNEL_HEADER_FILES) [i386_coreboot]: Remove include/grub/machine/loader.h. Add include/grub/i386/pit.h. (KERNEL_HEADER_FILES) [i386_multiboot]: Likewise. (KERNEL_HEADER_FILES) [i386_qemu]: Likewise. (KERNEL_HEADER_FILES) [i386_ieee1275]: Remove include/grub/machine/loader.h. (KERNEL_HEADER_FILES) [x86_64-efi]: Likewise. * grub-core/Makefile.core.def (kernel): Remove kern/i386/loader.S from extra_dist. (pci.mod): Enable on i386-multiboot. (acpi.mod): Enable on i386-multiboot and i386-coreboot. (efiemu.mod): Enable on i386-coreboot, i386-ieee1275, i386-multiboot and i386-qemu. (relocator.mod): Rewritten. (aout.mod): Enable on all x86. (bsd.mod): Likewise. (ntldr.mod): New module. (linux.mod): Use loader/i386/linux.c on all x86. (xnu.mod): Enable on all x86. (vga_text.mod): disable on EFI and QEMU. * grub-core/efiemu/i386/coredetect.c: Remove useless include. * grub-core/efiemu/i386/pc/cfgtables.c: Likewise. * grub-core/efiemu/loadcore.c: Likewise. * grub-core/efiemu/main.c: Likewise. (grub_efiemu_exit_boot_services): Removed. (grub_efiemu_finish_boot_services): Likewise. * grub-core/efiemu/mm.c (grub_efiemu_finish_boot_services): New function. * grub-core/efiemu/i386/nocfgtables.c: New file. * grub-core/kern/dl.c (grub_dl_unload_all): Removed. * grub-core/kern/efi/efi.c (grub_efi_exit_boot_services): Removed. (grub_efi_finish_boot_services): Moved from here ... * grub-core/kern/efi/mm.c (grub_efi_finish_boot_services): ...here. Fille finish memory map and related data. (finish_mmap_buf): New variable. (grub_efi_uintn_t finish_mmap_size): Likewise. (grub_efi_uintn_t finish_key): Likewise. (grub_efi_uintn_t finish_desc_size): Likewise. (grub_efi_uint32_t finish_desc_version): Likewise. (grub_efi_is_finished): Likewise. (grub_efi_get_memory_map): Use saved memory map if EFI is already finished. * grub-core/kern/elf.c (grub_elf32_phdr_iterate): Make global. (grub_elf64_phdr_iterate): Likewise. * grub-core/kern/i386/coreboot/init.c (grub_os_area_addr): Removed. (grub_os_area_size): Likewise. (grub_machine_init): Don't reserve os area. * grub-core/kern/i386/coreboot/startup.S: Don't include loader.S. * grub-core/kern/i386/ieee1275/startup.S: Likewise. * grub-core/kern/i386/loader.S: Removed. * grub-core/kern/i386/pc/init.c (grub_os_area_addr): Removed. (grub_os_area_size): Likewise. (grub_machine_init): Don't reserve os area. * grub-core/kern/i386/pc/startup.S (grub_chainloader_real_boot): Don't call grub_dl_unload_all. Don't include loader.S. * grub-core/kern/i386/qemu/mmap.c (grub_machine_mmap_iterate): Declare the memory after _end as available. * grub-core/kern/mm.c (GRUB_MM_FREE_MAGIC): Moved from here... * include/grub/mm_private.h (GRUB_MM_FREE_MAGIC): ... here. (GRUB_MM_ALLOC_MAGIC): Moved from here... * include/grub/mm_private.h (GRUB_MM_ALLOC_MAGIC): ... here. * grub-core/kern/mm.c (grub_mm_header): Moved from here... * include/grub/mm_private.h (grub_mm_header): ... here. * grub-core/kern/mm.c (GRUB_MM_ALIGN): Moved from here... * include/grub/mm_private.h (GRUB_MM_ALIGN): ... here. * grub-core/kern/mm.c (grub_mm_region): Moved from here ... (grub_mm_region): ..here. Removed addr. Added pre_size. All users updated. * grub-core/kern/mm.c (base): Renamed to ... (grub_mm_base): ... this. Made global. (grub_real_malloc): Alloc from end of region. (grub_memalign): Don't attempt to malloc if grub_mm_base is NULL. * grub-core/kern/powerpc/cache.S (grub_arch_sync_caches): Move to ... * grub-core/kern/powerpc/cache_flush.S: ... here. * grub-core/lib/efi/relocator.c: New file. * grub-core/lib/i386/relocator.c: Rewritten. * grub-core/lib/i386/relocator16.S: New file. * grub-core/lib/i386/relocator32.S: Likewise. * grub-core/lib/i386/relocator64.S: Likewise. * grub-core/lib/i386/relocator_asm.S: Rewritten. * grub-core/lib/i386/relocator_common.S: New file. * grub-core/lib/ieee1275/relocator.c: Likewise. * grub-core/lib/mips/relocator.c: Rewritten. * grub-core/lib/mips/relocator_asm.S: Renamed variables and minor stylistic adjustments. * grub-core/lib/powerpc/relocator.c: New file. * grub-core/lib/powerpc/relocator_asm.S: Likewise. * grub-core/lib/relocator.c: Rewritten. * grub-core/lib/x86_64/relocator_asm.S: New file. * grub-core/loader/aout.c (grub_aout_load): Make load_addr a void *. * grub-core/loader/i386/bsd.c (NETBSD_DEFAULT_VIDEO_MODE): New const. (bsd_tag): New struct. (tags): New variable. (tags_last): Likewise. (netbsd_module): New struct. (netbsd_mods): New variable. (netbsd_mods_last): Likewise. (openbsd_opts): New parameter "serial". (OPENBSD_SERIAL_ARG): New definition. (netbsd_opts): New parameter "serial". (NETBSD_SERIAL_ARG): New definition. (grub_freebsd_add_meta): Reorganised into ... (grub_bsd_add_meta): ...this. All users updated. (grub_freebsd_add_mmap): Reorganised into ... (generate_e820_mmap): ...this... (grub_bsd_add_mmap): ...and this. All users updated. (grub_freebsd_list_modules): Use tags. (grub_netbsd_add_meta_module): New function. (grub_netbsd_list_modules): Likewise. (grub_freebsd_boot): Use relocator and finish EFI. (grub_openbsd_boot): Likewise. (grub_netbsd_setup_video): New function. (grub_netbsd_add_modules): Likewise. (grub_netbsd_boot): Use grub_netbsd_add_modules, relocator, netbsd_tags and finish EFI. (grub_bsd_unload): Unload tags. (grub_bsd_load_aout): Use relocator. (grub_bsd_elf32_size_hook): New function. (grub_bsd_elf32_hook): Use relocator. (grub_bsd_elf64_size_hook): New function. (grub_bsd_elf64_hook): Use relocator. (grub_bsd_load_elf): Use relocator and call grub_openbsd_find_ramdisk. (grub_bsd_load): Zero-out openbsd_ramdisk. (grub_bsd_load): Use relocator. (grub_cmd_openbsd): Support serial. (grub_cmd_netbsd): Support modules. (grub_cmd_freebsd_module): Use relocator. (grub_netbsd_module_load): New function. (grub_cmd_netbsd_module): Likewise. (grub_cmd_openbsd_ramdisk): Likewise. (GRUB_MOD_INIT): Register knetbsd_module, knetbsd_module_elf and kopenbsd_ramdisk. (GRUB_MOD_FINI): Unregister new commands. * grub-core/loader/i386/bsdXX.c (load): Remove useless checks. (grub_freebsd_load_elfmodule_obj): Use relocator. (grub_freebsd_load_elfmodule): Likewise. (grub_freebsd_load_elf_meta): Likewise. (grub_netbsd_load_elf_meta): New function. (grub_openbsd_find_ramdisk): Likewise. * grub-core/loader/i386/bsd_helper.S: Removed. * grub-core/loader/i386/bsd_pagetable.c: Support relocator. * grub-core/loader/i386/bsd_trampoline.S: Removed. * grub-core/loader/i386/efi/linux.c: Likewise. * grub-core/loader/i386/ieee1275/linux.c: Likewise. * grub-core/loader/i386/linux.c (HAS_VGA_TEXT): New const. (DEFAULT_VIDEO_MODE): Likewise. (real_mode_target): New variable. (prot_mode_target): Likewise. (initrd_mem_target): Likewise. (relocator): Likewise. (efi_mmap_buf): Likewise. (efi_mmap_size): Likewise. (find_efi_mmap_size): Moved from grub-core/loader/i386/efi/linux.c. (free_pages): Use relocator. (allocate_pages): Account for efi_mmap and use relocator. Return error. (grub_linux_setup_video): Return error. (grub_linux_trampoline_start): Removed. (grub_linux_trampoline_end): Likewise. (grub_linux_boot): Use relocator and DEFAULT_VIDEO_MODE. Pass console andd video parameters depending on firmware. [GRUB_MACHINE_IEEE1275]: Pass OFW parameters. [GRUB_MACHINE_EFI]: Pass EFI parameters. (grub_cmd_linux) [GRUB_MACHINE_EFI]: Likewise. (grub_cmd_initrd): Use relocator. * grub-core/loader/i386/linux_trampoline.S: Removed. * grub-core/loader/i386/multiboot_mbi.c (elf_sec_num): New variable. (elf_sec_entsize): Likewise. (elf_sec_shstrndx): Likewise. (elf_sections): Likewise. (grub_multiboot_load): Use relocator. (grub_multiboot_get_mbi_size): Account for sections. (grub_multiboot_make_mbi): Use relocator and support sections. (grub_multiboot_add_elfsyms): New function. (grub_multiboot_free_mbi): Free sections. * grub-core/loader/i386/pc/linux.c (relocator): New variable. (grub_linux_real_target): Likewise. (grub_linux_real_chunk): Likewise. (grub_linux16_prot_size): Likewise. (grub_linux16_boot): Use relocator. (grub_linux_unload): Unload relocator. (grub_cmd_linux): Use relocator. (grub_cmd_initrd): Likewise. * grub-core/loader/i386/pc/ntldr.c: New file. * grub-core/loader/i386/xnu.c (guessfsb) [GRUB_MACHINE_IEEE1275]: Don't try to guess CPU frequency. (grub_xnu_set_video): Stretch bitmap. (grub_xnu_boot): Use relocator. * grub-core/loader/mips/linux.c (grub_linux_boot): Use relocator. (grub_linux_unload): Free relocator. (grub_linux_load32): Use relocator. (grub_linux_load64): Likewise. (grub_cmd_initrd): Likewise. * grub-core/loader/multiboot.c (grub_multiboot_boot): Use relocator. (grub_multiboot_unload): Unload relocator. (grub_cmd_multiboot): Use relocator. (grub_cmd_module): Likewise. * grub-core/loader/multiboot_elfxx.c (grub_multiboot_load_elfXX): Use relocator and support sections. * grub-core/loader/multiboot_mbi2.c(elf_sec_num): New variable. (elf_sec_entsize): Likewise. (elf_sec_shstrndx): Likewise. (elf_sections): Likewise. (grub_multiboot_load): Use relocator. (grub_multiboot_get_mbi_size): Account for sections. (grub_multiboot_make_mbi): Use relocator and support sections. (grub_multiboot_add_elfsyms): New function. * grub-core/loader/powerpc/ieee1275/linux.c: Remove useless include. * grub-core/loader/sparc64/ieee1275/linux.c: Likewise. * grub-core/loader/xnu.c (grub_xnu_heap_malloc): Use relocator. Prototype changed. All users updated. (grub_xnu_align_heap): Simplified. (grub_xnu_writetree_toheap): Likewise. (grub_xnu_unload): Unload relocator. (grub_cmd_xnu_kernel): Use relocator. (grub_cmd_xnu_kernel64): Likewise. (grub_xnu_register_memory): Simplified. * grub-core/loader/xnu_resume.c (grub_xnu_resume): Use relocator. * grub-core/term/efi/console.c (grub_console_putchar): Abort if EFI is finished. (grub_console_checkkey): Likewise. (grub_console_getkey): Likewise. (grub_console_getwh): Likewise. (grub_console_getxy): Likewise. (grub_console_gotoxy): Likewise. (grub_console_cls): Likewise. (grub_console_setcolorstate): Likewise. (grub_console_setcursor): Likewise. * grub-core/term/ns8250.c (grub_ns8250_hw_get_port): New function. * grub-core/tests/boot/kbsd.init-i386.S: New file. * grub-core/tests/boot/kbsd.init-x86_64.S: Likewise. * grub-core/tests/boot/kbsd.spec.txt: Likewise. * grub-core/tests/boot/kernel-8086.S: Likewise. * grub-core/tests/boot/kernel-i386.S: Likewise. * grub-core/tests/boot/kfreebsd-aout.cfg: Likewise. * grub-core/tests/boot/kfreebsd.cfg: Likewise. * grub-core/tests/boot/kfreebsd.init-i386.S: Likewise. * grub-core/tests/boot/kfreebsd.init-x86_64.S: Likewise. * grub-core/tests/boot/knetbsd.cfg: Likewise. * grub-core/tests/boot/kopenbsd.cfg: Likewise. * grub-core/tests/boot/kopenbsdlabel.txt: Likewise. * grub-core/tests/boot/linux.cfg: Likewise. * grub-core/tests/boot/linux.init-i386.S: Likewise. * grub-core/tests/boot/linux.init-x86_64.S: Likewise. * grub-core/tests/boot/linux16.cfg: Likewise. * grub-core/tests/boot/multiboot.cfg: Likewise. * grub-core/tests/boot/multiboot2.cfg: Likewise. * grub-core/tests/boot/ntldr.cfg: Likewise. * grub-core/tests/boot/pc-chainloader.cfg: Likewise. * include/grub/aout.h (grub_aout_load): Make load_addr a void *. * include/grub/autoefi.h (grub_autoefi_finish_boot_services): New definition. * include/grub/dl.h (grub_dl_unload_all): Removed. * include/grub/efi/efi.h (grub_efi_exit_boot_services): Likewise. (grub_efi_finish_boot_services): Change prototype. (grub_efi_is_finished): New variable. * include/grub/efiemu/efiemu.h (grub_efiemu_finish_boot_services): Changed prototype. (grub_efiemu_finish_boot_services): Removed. (grub_machine_efiemu_init_tables): New prototype. * include/grub/elfload.h (grub_elf32_phdr_iterate): Likewise. (grub_elf64_phdr_iterate): Likewise. * include/grub/i386/bsd.h: Include relocator.h. (freebsd_tag_header): New struct. (grub_openbsd_bios_mmap): Removed. (grub_unix_real_boot): Removed. (grub_freebsd_load_elfmodule32): Changed prototype. (grub_freebsd_load_elfmodule_obj64): Likewise. (grub_freebsd_load_elf_meta32): Likewise. (grub_freebsd_load_elf_meta64): Likewise. (grub_freebsd_add_meta): Removed. (grub_netbsd_load_elf_meta32): New prototype. (grub_netbsd_load_elf_meta64): Likewise. (grub_bsd_add_meta): Likewise. (grub_openbsd_ramdisk_descriptor): New struct. (grub_openbsd_find_ramdisk32): New prototype. (grub_openbsd_find_ramdisk64): Likewise. * include/grub/i386/coreboot/loader.h: Removed. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/ieee1275/loader.h: Likewise. * include/grub/i386/linux.h (linux_kernel_header): Change void * to grub_uint32_t. * include/grub/i386/loader.h: Removed. * include/grub/i386/memory.h (GRUB_MEMORY_CPU_CR4_PAE_ON): Correct the value. (GRUB_MEMORY_CPU_CR4_PSE_ON): New definition. (grub_phys_addr_t): New type. (grub_vtop): New inline function. (grub_map_memory): Likewise. (grub_unmap_memory): Likewise. * include/grub/i386/multiboot/loader.h: Removed. * include/grub/i386/netbsd_bootinfo.h (NETBSD_BTINFO_BOOTDISK): Removed. (NETBSD_BTINFO_CONSOLE): New definition. (NETBSD_BTINFO_SYMTAB): Likewise. (NETBSD_BTINFO_MODULES): Likewise. (NETBSD_BTINFO_FRAMEBUF): Likewise. (grub_netbsd_bootinfo): New struct. (grub_netbsd_btinfo_common): Use explicit bitsize. (grub_netbsd_btinfo_mmap_entry): Removed. (GRUB_NETBSD_MAX_BOOTPATH_LEN): New definition. (grub_netbsd_btinfo_bootdisk): New struct. (grub_netbsd_btinfo_symtab): Likewise. (grub_netbsd_btinfo_serial): Likewise. (grub_netbsd_btinfo_modules): Likewise. (grub_netbsd_btinfo_framebuf): Likewise. (GRUB_NETBSD_MAX_ROOTDEVICE_LEN): New definition. * include/grub/i386/openbsd_bootarg.h (OPENBSD_BOOTARG_CONSOLE): Likewise. (grub_openbsd_bootargs): Use explicit bitsize. (grub_openbsd_bootarg_console): New struct. (GRUB_OPENBSD_COM_MAJOR): New definition. (GRUB_OPENBSD_VGA_MAJOR): Likewise. * include/grub/i386/pc/efiemu.h: Removed. * include/grub/i386/pc/loader.h: Don't include cpu/loader.h. * include/grub/i386/qemu/loader.h: Removed. * include/grub/i386/relocator.h: Rewritten. * include/grub/i386/xnu.h (grub_xnu_heap_will_be_at): Removed. * include/grub/mips/memory.h: New file. * include/grub/mips/multiboot.h: Rewritten. * include/grub/mips/relocator.h: Rewritten. * include/grub/mips/yeeloong/memory.h (grub_phys_addr_t): New type. (grub_vtop): New function. (grub_map_memory): Likewise. (grub_unmap_memory): Likewise. * include/grub/misc.h (ALIGN_DOWN): New definition. * include/grub/mm.h (grub_mm_check_real): New proto. (GRUB_MM_CHECK): New definition. * include/grub/mm_private.h: New file. * include/grub/multiboot.h (grub_multiboot_relocator): New variable. (grub_multiboot_get_mbi_size): Removed. (grub_multiboot_make_mbi): Change prottype. (grub_multiboot_set_accepts_video): New proto. (grub_multiboot_add_elfsyms): Likewise. (grub_multiboot_payload_eip): New variable. * include/grub/ns8250.h (grub_ns8250_hw_get_port) [!ASM_FILE]: New prototype. * include/grub/offsets.h (GRUB_KERNEL_I386_MULTIBOOT_PREFIX): New definition. (GRUB_KERNEL_I386_MULTIBOOT_DATA_END): Likewise. (GRUB_KERNEL_I386_MULTIBOOT_MOD_ALIGN): Likewise. * include/grub/powerpc/ieee1275/loader.h: Removed. * include/grub/powerpc/memory.h: New file. * include/grub/powerpc/relocator.h: Likewise. * include/grub/relocator.h: Likewise. * include/grub/relocator_private.h: Likewise. * include/grub/sparc64/ieee1275/loader.h: Removed. * include/grub/x86_64/memory.h: New file. * include/grub/xnu.h (grub_xnu_writetree_toheap): Changed prototype. (grub_xnu_heap_malloc): Likewise. (grub_xnu_heap_real_start): Removed. (grub_xnu_heap_start): Likewise. (grub_xnu_relocator): New variable. (grub_xnu_heap_target_start): Likewise. * tests/util/grub-shell.in: Support non-pc. * util/grub-mkimage.c (image_targets): Fix multiboot target. 2010-08-29 Vladimir Serbinenko * grub-core/normal/charset.c (grub_utf8_to_ucs4_alloc): Avoid deadloop on malloc error. (grub_bidi_logical_to_visual): Check that malloc succeded. * grub-core/normal/term.c (grub_puts_terminal): Fix fallback to dumb puts. (grub_xputs_normal): Likewise. 2010-08-29 Vladimir Serbinenko * grub-core/Makefile.core.def (kernel): Add kern/mips/cache_flush.S to extra_dist. 2010-08-29 Vladimir Serbinenko * grub-core/efiemu/runtime/efiemu.sh: Removed. 2010-08-29 Vladimir Serbinenko * Makefile.util.def (grub-ofpathname): Add missing ldadd. 2010-08-29 Vladimir Serbinenko * grub-core/kern/misc.c (grub_real_dprintf): Always refresh after dprintf. 2010-08-29 BVK Chaitanya * Makefile.util.def: Use ldadd instead of ldflags for libraries. 2010-08-28 Vladimir Serbinenko * grub-core/normal/term.c (print_more): Fix a memory leak. (grub_puts_terminal): Revert to dumb puts if memory allocation fails. (grub_xputs_normal): Likewise. 2010-08-28 Vladimir Serbinenko * grub-core/script/lexer.c (grub_script_lexer_init): Don't look before the begining of the string 2010-08-28 Vladimir Serbinenko * grub-core/script/script.c (grub_script_parse): Free parsed on failure. 2010-08-28 Vladimir Serbinenko * grub-core/normal/completion.c (grub_normal_do_completion): Free argv on failure. 2010-08-28 Vladimir Serbinenko * grub-core/normal/cmdline.c (grub_cmdline_get): Free cl_terms on return. 2010-08-28 Vladimir Serbinenko * grub-core/term/gfxterm.c (grub_gfxterm_term_fini): Free the text buffer. (scroll_up): Fix a memory leak. 2010-08-28 Vladimir Serbinenko * grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Handle grub_disk_read errors. 2010-08-27 Vladimir Serbinenko Handle USB pendrives exposed as floppies. * grub-core/boot/i386/pc/boot.S: Check LBA even on what appears to be floppy. * grub-core/disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise. Check for partitions on all devices. 2010-08-25 Vladimir Serbinenko * grub-core/term/ieee1275/ofconsole.c (put): Correct prototype. (readkey): Likewise. 2010-08-25 BVK Chaitanya Multiple variable names support to "export" command. * normal/context.c (grub_cmd_export): "export" command supports multiple variable names. 2010-08-23 Samuel Thibault * util/grub.d/30_os-prober.in: Fix conversion from grub-probe --target=drive output to Mach device name. 2010-08-23 BVK Chaitanya New Automake based build system for GRUB. * ABOUT-NLS: New file. * Makefile.am: New file. GRUB host utils' rules that doesn't fit in Makefile.util.def file. * Makefile.util.def: New file. Autogen build definitions file for GRUB host utils. * conf/Makefile.common: New file. Common variables for GRUB host utils and target modules. * conf/Makefile.extra-dist: New file. Extra files for make dist. * docs/Makefile.am: New file. Automake file for docs. * gentpl.py: New file. Python script to generate Autogen template. * grub-core/Makefile.am: New file. GRUB target modules' rules that doesn't fit in Makefile.core.def file. * grub-core/Makefile.core.def: New file. Autogen build definitions file for GRUB target modules. * grub-core/lib/setjmp.S: New file. Wrapper for target_cpu specific setjmp.S file. * po/Makefile.am: New file. * .bzrignore: New ignores. * INSTALL: New requirements, without Ruby. * acinclude.m4: Use TARGET_IMG_BASE_LDOPT variable instead. * autogen.sh: Updated to invoke autogen as necessary. * configure.ac: Separate *FLAGS with HOST_ and TARGET_ prefixes, and defines for Automake conditionals. * geninit.sh: Refactoring. * include/grub/dl.h: Allow build rules to define GRUB_MOD_* if necessary. * include/grub/emu/getroot.h (grub_make_system_path_relative_to_its_root): New prototype. * include/grub/test.h: Fix functional test modules' naming. * grub-core/tests/example_functional_test.c: Fix test module name. * util/misc.c: Hosted versions' of grub functions for libgrub.a * tests/lib/unit_test.c: Remove hosted versions of grub functions. * util/grub-editenv.c: Likewise. * util/grub-fstest.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-mkfont.c: Likewise. * util/grub-mkimage.c: Likewise. * util/grub-mkpasswd-pbkdf2.c: Likewise. * util/grub-probe.c: Likewise. * util/grub-script-check.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. * tests/util/grub-shell.in: Fix override directory path. * util/grub-mkrescue.in: Replace @pkglib_DATA@ with files. * util/import_gcry.py: Create Makefile.gcry.def file instead. * util/lvm.c: Update #includes. * util/raid.c: Likewise. * util/resolve.c: Likewise. * grub-core/bus/emu/pci.c: Likewise. * grub-core/lib/posix_wrap/stdlib.h: Likewise. * grub-core/lib/posix_wrap/string.h: Likewise. * grub-core/kern/emu/main.c: Likewise. * grub-core/gensymlist.sh: New file. Script for generating kernel symbols file. * grub-core/genmoddep.awk: Support new kernel_syms.lst format. * grub-core/gentrigtables.c: Fix unused variable warnings. * Makefile.in: Removed. * conf/any-emu.rmk: Removed. * conf/common.rmk: Removed. * conf/i386-coreboot.rmk: Removed. * conf/i386-efi.rmk: Removed. * conf/i386-ieee1275.rmk: Removed. * conf/i386-multiboot.rmk: Removed. * conf/i386-pc.rmk: Removed. * conf/i386-qemu.rmk: Removed. * conf/i386.rmk: Removed. * conf/mips-yeeloong.rmk: Removed. * conf/mips.rmk: Removed. * conf/powerpc-ieee1275.rmk: Removed. * conf/sparc64-ieee1275.rmk: Removed. * conf/tests.rmk: Removed. * conf/x86-efi.rmk: Removed. * conf/x86_64-efi.rmk: Removed. * gendistlist.sh: Removed. * geninitheader.sh: Removed. * genkernsyms.sh.in: Removed. * genmk.rb: Removed. * gensymlist.sh.in: Removed. * mkinstalldirs: Removed. * boot: Moved ... * grub-core/boot: ... to here. * bus: Moved ... * grub-core/bus: ... to here. * commands: Moved ... * grub-core/commands: ... to here. * disk: Moved ... * grub-core/disk: ... to here. * efiemu: Moved ... * grub-core/efiemu: ... to here. * font: Moved ... * grub-core/font: ... to here. * fs: Moved ... * grub-core/fs: ... to here. * gencmdlist.sh: Moved ... * grub-core/gencmdlist.sh: ... to here. * genemuinit.sh: Moved ... * grub-core/genemuinit.sh: ... to here. * genemuinitheader.sh: Moved ... * grub-core/genemuinitheader.sh: ... to here. * genfslist.sh: Moved ... * grub-core/genfslist.sh: ... to here. * genhandlerlist.sh: Moved ... * grub-core/genhandlerlist.sh: ... to here. * genmoddep.awk: Moved ... * grub-core/genmoddep.awk: ... to here. * genmodsrc.sh: Moved ... * grub-core/genmodsrc.sh: ... to here. * genpartmaplist.sh: Moved ... * grub-core/genpartmaplist.sh: ... to here. * genparttoollist.sh: Moved ... * grub-core/genparttoollist.sh: ... to here. * genterminallist.sh: Moved ... * grub-core/genterminallist.sh: ... to here. * gentrigtables.c: Moved ... * grub-core/gentrigtables.c: ... to here. * genvideolist.sh: Moved ... * grub-core/genvideolist.sh: ... to here. * gettext: Moved ... * grub-core/gettext: ... to here. * gfxmenu: Moved ... * grub-core/gfxmenu: ... to here. * gnulib: Moved ... * grub-core/gnulib: ... to here. * hello: Moved ... * grub-core/hello: ... to here. * hook: Moved ... * grub-core/hook: ... to here. * io: Moved ... * grub-core/io: ... to here. * kern: Moved ... * grub-core/kern: ... to here. * lib: Moved ... * grub-core/lib: ... to here. * loader: Moved ... * grub-core/loader: ... to here. * mmap: Moved ... * grub-core/mmap: ... to here. * normal: Moved ... * grub-core/normal: ... to here. * partmap: Moved ... * grub-core/partmap: ... to here. * parttool: Moved ... * grub-core/parttool: ... to here. * script: Moved ... * grub-core/script: ... to here. * term: Moved ... * grub-core/term: ... to here * tests/example_functional_test.c: Moved ... * grub-core/tests/example_functional_test.c: ... to here. * tests/lib/functional_test.c: Moved ... * grub-core/tests/lib/functional_test.c: ... to here. * tests/lib/test.c: Moved ... * grub-core/tests/lib/test.c: ... to here. * video: Moved ... * grub-core/video: ... to here. 2010-08-23 BVK Chaitanya Replace --enable-grub-emu-modules with grub-emu-lite. * kern/emu/cache.S: New file. Wrapper for $target_cpu specific cache.S. * include/grub/emu/misc.h (grub_emu_init): New prototype. * kern/emu/full.c: New file. For grub-emu specific initialization. * kern/emu/lite.c: New file. For grub-emu-lite initialization. * kern/emu/main.c: Call initialization function grub_emu_init. * Makefile.in: Include grub-emu-lite in install. * commands/parttool.c: Use grub_no_autoload to differentiate between grub-emu and grub-emu-lite. * include/grub/misc.h: New variable grub_no_autoload. * conf/any-emu.rmk: New rules for grub-emu-lite. * configure.ac: Remove --enable-grub-emu-modules. * genmk.rb: Cleanup unnecessary rules. * include/grub/dl.h: Remove GRUB_NO_MODULES macro. * normal/main.c: Don't load list files on grub-emu-lite. * util/misc.c (grub_arch_sync_caches): Removed. 2010-08-23 Colin Watson * kern/mips/startup.S (grub_prefix): Update comment to refer to grub-mkimage rather than grub-mkelfimage. * kern/powerpc/ieee1275/startup.S (grub_prefix): Likewise. 2010-08-22 Vladimir Serbinenko * term/at_keyboard.c (grub_at_keyboard_getkey_noblock): Don't discard a key after CapsLock or NumLock. It's just a qemu bug. 2010-08-21 Vladimir Serbinenko * include/grub/usb.h (grub_usb_device): Add 'data' field back. It's needed by libusb wrapper. 2010-08-21 Samuel Thibault * docs/grub.texi (GNU/Hurd): Document booting GNU/Hurd. 2010-08-21 Vladimir Serbinenko * loader/multiboot.c (grub_cmd_module): Don't unzip module if --nounzip is passed. 2010-08-20 Vladimir Serbinenko USB hotunplugging and USB serial support. * bus/usb/ohci.c (grub_ohci_transfer): Fill *actual and respect timeout. * bus/usb/uhci.c (grub_free_queue): Compute *actual. (grub_uhci_transfer): Respect timeout and set *actual. * bus/usb/usb.c (grub_usb_device_initialize): Correctly skip fields of non-standard length. (grub_usb_device_attach): Autoload modules. (GRUB_MOD_INIT): Set grub_term_poll_usb. (GRUB_MOD_FINI): Unset grub_term_poll_usb. * bus/usb/usbhub.c (grub_usb_hub): Replace speed with devices. All users updated. (grub_usb_add_hub): Fill nports and children. (attach_root_port): Receive hub instead of controller. All users updated. Fill hub->devices. (grub_usb_root_hub): Allocate hub->devices. (detach_device): New function. (poll_nonroot_hub): Fill children and detach devices. * bus/usb/usbtrans.c (grub_usb_bulk_readwrite): Accept timeout and actual arguments. All users updated. (grub_usb_bulk_read_extended): New function. * bus/usb/serial/common.c: New file. * bus/usb/serial/ftdi.c: Likewise. * bus/usb/serial/pl2303.c: Likewise. * commands/terminal.c (handle_command): Support wildcard. * commands/usbtest.c: Output "Unknown" instead of empty string. * conf/any-emu.rmk (pkglib_MODULES): Add usbserial_common.mod. (usbserial_common_mod_SOURCES): New variable. (usbserial_common_mod_CFLAGS): Likewise. (usbserial_common_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add usbserial_pl2303.mod. (usbserial_pl2303_mod_SOURCES): New variable. (usbserial_pl2303_mod_CFLAGS): Likewise. (usbserial_pl2303_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add usbserial_ftdi.mod. (usbserial_ftdi_mod_SOURCES): New variable. (usbserial_ftdi_mod_CFLAGS): Likewise. (usbserial_ftdi_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add serial.mod. (serial_mod_SOURCES): New variable. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk: Likewise. * conf/mips-yeeloong.rmk: Likewise. * conf/i386.rmk (serial_mod_SOURCES): Add term/ns8250.c. * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise. * disk/usbms.c (first_available_slot): New variable. (grub_usbms_attach): Don't reuse free slots due to potential cache problems. * include/grub/serial.h: Moved to .. * include/grub/ns8250.h: ...this. * include/grub/serial.h: New file. * include/grub/term.h (grub_term_poll_usb): New variable. * include/grub/terminfo.h (grub_terminfo_input_state): Pass term to readkey. All users updated. (grub_terminfo_output_state): Pass term to put. * include/grub/usb.h (GRUB_USB_REQTYPE): New enum. (grub_usb_controller_dev): Add timeout and actual arguments to transfer. All users updated. (grub_usb_interface): New field detach_data. (grub_usb_device): New fields children and nports. (grub_usb_ep_type_t): New type. (grub_usb_get_ep_type): New function. (grub_usb_bulk_read_extended): Likewise. * include/grub/usbdesc.h (grub_usb_desc): New type. * include/grub/usbserial.h: New file. * include/grub/usbtrans.h (grub_usb_transaction): New field preceding. * kern/term.c (grub_term_poll_usb): New variable. (grub_getkey): Call grub_term_poll_usb if set. (grub_checkkey): Likewise. (grub_getkeystatus): Likewise. * term/serial.c: Moved controller-specific parts to ... * term/ns8250.c: ... here. * term/serial.c: Mostly rewritten. * term/usb_keyboard.c: Reorganised to use GET_REPORT only on attaching according to spec. 2010-08-20 Robert Millan Make kFreeBSD code more generic to support ext2fs as root, ufs as a separate module and maybe other interesting combinations. * util/grub.d/10_kfreebsd.in (load_kfreebsd_module): New function. (kfreebsd_entry): Use load_kfreebsd_module() to load modules. (kfreebsd_entry): Add generic filesystem module load routine. Map GRUB `ext2' to kFreeBSD `ext2fs'. 2010-08-20 Colin Watson * commands/i386/pc/sendkey.c (keysym_table): Rename "numlock" to "numcenter" (I misunderstood the purpose of this entry). * docs/grub.texi (sendkey): Likewise. 2010-08-20 Colin Watson * commands/i386/pc/sendkey.c (options): Remove "keep" from all status flag options; simply omitting the option is equivalent and simpler. Rename "wait" to "pause". Rename "sysreq" to "sysrq". (keysym_table): Rename "num5numlock" to "numlock". (grub_cmd_sendkey): Reinitialise `andmask' and `ormask', so that we can uniformly say that only the last of multiple `sendkey' invocations has any effect. * docs/grub.texi (sendkey): New section. 2010-08-19 Colin Watson * commands/i386/pc/sendkey.c (options): Fix three typos. 2010-08-19 Vladimir Serbinenko Implement sendkey support. * commands/i386/pc/sendkey.c: New file. * conf/i386-pc.rmk (pkglib_MODULES): Add sendkey.mod. (sendkey_mod_SOURCES): New variable. (sendkey_mod_CFLAGS): Likewise. (sendkey_mod_LDFLAGS): Likewise. 2010-08-18 Colin Watson * configure.ac: Move AM_INIT_AUTOMAKE after AC_CANONICAL_TARGET to fix warnings from Autoconf. 2010-08-18 Colin Watson * acinclude.m4 (grub_ASM_USCORE): Use a more accurate grep pattern, to avoid false positives with some assemblers that output things like "someprefix_func" as part of their output. 2010-08-15 Robert Millan * kern/emu/misc.c (grub_get_libzfs_handle): Handle libzfs_init() errors. * kern/emu/getroot.c (find_root_device_from_libzfs): Handle grub_get_libzfs_handle() errors. 2010-08-14 Robert Millan * kern/emu/misc.c (grub_find_zpool_from_dir): Abort function if filesystem is not ZFS. 2010-08-12 BVK Chaitanya Fix for misspelled color names defaulting to black/black (bug reported by Doug Nazar) * include/grub/normal.h (grub_parse_color_name_pair): Add return status to prototype. * normal/color.c (grub_parse_color_name_pair): Return failure status. (grub_env_write_color_normal): Ignore bad color names. (grub_env_write_color_highlight): Likewise. * normal/main.c (GRUB_MOD_INIT): Set default color names. 2010-08-12 BVK Chaitanya "shift" command support to GRUB script. * include/grub/script_sh.h (grub_script_shift): New prototype. * script/execute.c (grub_script_shift): New function. * script/main.c (grub_script_init): Register shift command. (grub_script_fini): Unregister shift command. * util/grub-script-check.c (grub_script_cmd_shift): New function. * tests/grub_script_shift.in: New testcase. * conf/tests.rmk: Rules for new testcase. 2010-08-12 BVK Chaitanya "continue" command support to GRUB script. * script/execute.c (grub_script_execute_cmdwhile): Continue support. (grub_script_break): Continue support. * script/main.c (grub_script_init): Register continue command. (grub_script_fini): Unregister continue command. * tests/grub_script_continue.in: New testcase. * conf/tests.rmk: Rules for new testcase. 2010-08-12 BVK Chaitanya "break" command support to GRUB script. * conf/common.rmk: Rule updates to grub-script-check. * include/grub/misc.h (grub_min): New function. * include/grub/script_sh.h (grub_script_init): New prototype. (grub_script_fini): New prototype. (grub_script_break): New prototype. * script/main.c (grub_script_init): New function. (grub_script_fini): New function. * script/execute.c (grub_script_break): New function. * normal/main.c: Calls to grub_script_{init,fini}. * util/grub-script-check.c (grub_script_break): New function. * tests/grub_script_break.in: New testcase. * conf/tests.rmk: Rules for new test case. 2010-08-12 BVK Chaitanya Function parameters support to GRUB script. * script/yylex.l (VARIABLE): Regular expression update. * script/function.c (grub_script_function_call): Moved ... * script/execute.c (grub_script_function_call): ... to here. (grub_script_execute_arglist_to_argv): Removed. (grub_script_arglist_to_argv): New function. * script/argv.c: New file. (grub_script_argv_free): New function. (grub_script_argv_next): Likewise. (grub_script_argv_append): Likewise. (grub_script_argv_split_append): Likewise. * include/grub/script_sh.h (grub_script_argv): New struct. (grub_script_argv_free): New function. (grub_script_argv_next): Likewise. (grub_script_argv_append): Likewise. (grub_script_argv_split_append): Likewise. * conf/common.rmk (normal.mod): New source script/argv.c. * tests/grub_script_echo1.in: More tests. * tests/grub_script_vars1.in: Likewise. * tests/grub_script_functions.in: New test case. * conf/tests.rmk: Rules for new testcase. 2010-08-12 BVK Chaitanya Remove grub_script_cmdblock struct. * include/grub/script_sh.h: Remove grub_script_cmdblock. * script/parser.y: Likewise. * script/execute.c: Rename cmdblock suffix to cmdlist. * script/script.c: Likewise. * util/grub-script-check.c: Likewise. 2010-08-11 Yves Blusseau * .bzrignore: add grub-macho2img 2010-08-11 Vladimir Serbinenko * kern/i386/qemu/init.c (grub_qemu_init_cirrus): Fix compilation error. 2010-08-11 Vladimir Serbinenko Remove the dump of sm712 initialisation sequence. * include/grub/pci.h (GRUB_PCI_CLASS_SUBCLASS_VGA): New const. * include/grub/vga.h (GRUB_VGA_IO_ARX_READ): New register. (GRUB_VGA_IO_MISC_WRITE): Likewise. (GRUB_VGA_CR_*): Added many registers. (GRUB_VGA_SR_*): Likewise. (GRUB_VGA_GR_*): Likewise. (grub_vga_write_arx): New function. (grub_video_hw_config): New struct. (grub_vga_set_geometry): New function. * kern/i386/qemu/init.c (load_palette): Use grub_vga_write_arx and GRUB_PCI_CLASS_SUBCLASS_VGA. * video/cirrus.c (grub_video_cirrus_setup): Use grub_vga_set_geometry. * video/sm712.c (grub_sm712_write_reg): New function (grub_sm712_read_reg): Likewise. (grub_sm712_sr_write): Likewise. (grub_sm712_gr_write): Likewise. (grub_sm712_cr_write): Likewise. (grub_sm712_write_arx): Likewise. (grub_sm712_cr_shadow_write): Likewise. (grub_sm712_write_dda_lookup): Likewise. (grub_video_sm712_setup): Initialise the video rather then blindly replay the dump. (main) [TEST]: Add a routine to be able to compile as standalone for tests. * video/sm712_init.c (sm712_init): Removed. (sm712_sr_seq1): New array. (sm712_sr_seq2): Likewise. 2010-08-10 Vladimir Serbinenko * include/grub/vga.h: Add missing grub/pci.h include. 2010-08-10 Yves Blusseau * util/grub-macho2img.c (main): fix typo 2010-08-10 Vladimir Serbinenko * include/grub/vga.h (grub_vga_gr_write): Add GRUB_MACHINE_PCI_IO_BASE. (grub_vga_gr_read): Likewise. (grub_vga_cr_write): Likewise. (grub_vga_cr_read): Likewise. (grub_vga_sr_write): Likewise. (grub_vga_sr_read): Likewise. (grub_vga_palette_read): Likewise. (grub_vga_palette_write): Likewise. * video/sm712.c (GRUB_SM712_REG_BASE): New definition. (grub_sm712_sr_read): New function. (grub_video_sm712_setup): Use grub_vga_sr_write and grub_sm712_sr_read. * video/sm712_init.c (sm712_init): Substract GRUB_MACHINE_PCI_IO_BASE. 2010-08-09 Robert Millan * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Filter out unused variables on non-ZFS build. 2010-08-08 Robert Millan Fix path generation for sub-filesystems in ZFS. * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Add missing slash. 2010-08-08 Robert Millan * util/grub-fstest.c (read_file, cmd_cmp): Improve error message. 2010-08-08 Robert Millan * util/grub.d/10_kfreebsd.in: When files required for ZFS do not exist, issue a proper error message (rely on `ls' for translated strings). 2010-08-08 Robert Millan Fix grub-probe invocation. * util/grub.d/10_kfreebsd.in: s/label/fs_label/g. 2010-08-04 Robert Millan * configure.ac: Remove checks for getfsstat() and getmntany(). Add checks for `' and `'. * kern/emu/misc.c [HAVE_GETMNTANY]: Remove `'. [HAVE_SYS_PARAM_H]: Include `'. [HAVE_SYS_MOUNT_H]: Include `'. [HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_mount_point_from_dir): Remove function. (grub_find_zpool_from_dir): Use statfs() instead of indirect matching via find_mount_point_from_dir() and getfsstat() / getmntany(). 2010-08-04 Robert Millan * include/grub/emu/misc.h (grub_find_mount_point_from_dir) (grub_find_zpool_from_mount_point): Merge into ... (grub_find_zpool_from_dir): ... this. * kern/emu/misc.c: Likewise. * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): Replace grub_find_mount_point_from_dir() / grub_find_zpool_from_mount_point() with grub_find_zpool_from_dir(). * kern/emu/getroot.c (find_root_device_from_libzfs): Likewise. 2010-08-04 Robert Millan Support OpenSolaris in ZFS device resolution. * configure.ac: Check for getmntany(). * kern/emu/misc.c [HAVE_GETMNTANY]: Include `'. [HAVE_GETMNTANY] (grub_find_zpool_from_mount_point): Add OpenSolaris support. 2010-08-03 Robert Millan Fix grub-emu build. * include/grub/util/misc.h: Move `' to ... * include/grub/emu/misc.h: ... here. * include/grub/util/misc.h (grub_get_libzfs_handle): Move function ... * include/grub/emu/misc.h (grub_get_libzfs_handle): ... here. * util/misc.c: Remove `'. [HAVE_LIBZFS] (libzfs_handle, fini_libzfs) (grub_get_libzfs_handle): Move to ... * kern/emu/misc.c [HAVE_LIBZFS] (__libzfs_handle, fini_libzfs) (grub_get_libzfs_handle): ... here. 2010-08-03 BVK Chaitanya * script/execute.c (grub_script_execute_cmdline): Check for NULL as command name case. 2010-08-02 Colin Watson * disk/raid.c (insert_array): Select unique numbers for named arrays as well, for use as keys in the disk cache. 2010-08-01 Robert Millan * util/grub.d/10_kfreebsd.in: Initialize ${kfreebsd_device} as the kFreeBSD device name, except on ZFS where the filesystem label is used. (kfreebsd_entry): On ZFS root, load `opensolaris.ko', `zfs.ko' and `/boot/zfs/zpool.cache'. Set mountfrom kernel variable using ${kfreebsd_device}. 2010-08-01 Robert Millan Make it even harder to use uninitialized `libzfs_handle' (and make the interface a bit simpler). * include/grub/util/misc.h (grub_util_init_libzfs) (libzfs_handle): Remove. (grub_get_libzfs_handle): New prototype. * util/misc.c [HAVE_LIBZFS] (libzfs_handle): Add `static' attribute. (grub_util_init_libzfs): Remove. (grub_get_libzfs_handle): New function. * kern/emu/getroot.c (find_root_device_from_libzfs): Use grub_get_libzfs_handle() to obtain a libzfs handle instead of accessing `libzfs_handle' directly. 2010-08-01 Robert Millan * include/grub/emu/misc.h (grub_find_mount_point_from_dir) (grub_find_zpool_from_mount_point): New function prototypes. * kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `' to ... * kern/emu/misc.c [HAVE_GETFSSTAT]: ... here. * kern/emu/getroot.c (find_mount_point_from_dir): Move to ... * kern/emu/misc.c (grub_find_mount_point_from_dir): ... this. Remove `static' attribute. * kern/emu/getroot.c (find_root_device_from_libzfs): Split code for finding zpool from mount point into ... * kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this. * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When requested path is part of a ZFS pool, use grub_find_zpool_from_mount_point() to detect its filesystem name, and generate a path with `/fsname@path' syntax. 2010-08-01 Colin Watson * include/grub/util/libzfs.h (libzfs_init): Set argument list to (void) rather than () so that this is a proper prototype. 2010-08-01 Vladimir Serbinenko * lib/arg.c (grub_arg_show_help): Add the necessary spacing. 2010-08-01 Vladimir Serbinenko * kern/emu/getroot.c (find_mount_point_from_dir): Compile only if [HAVE_LIBZFS && HAVE_LIBNVPAIR] 2010-08-01 Colin Watson * util/grub-mkrescue.in: Remove ${efi_dir} after building efi.img. 2010-08-01 Colin Watson * script/yylex.l (NAME): Remove [:digit:], redundant with [:alnum:]. 2010-08-01 Colin Watson * docs/grub.texi (Simple configuration): Document GRUB_CMDLINE_XEN and GRUB_CMDLINE_XEN_DEFAULT. Recommend setting GRUB_GFXPAYLOAD_LINUX=text rather than unsetting it in order to disable gfxpayload. (Shell-like scripting): Add real content. (Serial terminal): Suggest `terminal_input serial; terminal_output serial' rather than putting the two commands on separate lines, since console input will be inoperative after the first command. (menuentry): Document --class, --users, and --hotkey options. (terminfo): Describe what `visually-ordered UTF-8' means (thanks, Vladimir Serbinenko). 2010-08-01 Vladimir Serbinenko 2010-08-01 Colin Watson * kern/misc.c (grub_memset): Optimise to reduce cache stalls. 2010-08-01 Robert Millan * include/grub/emu/misc.h (grub_find_mount_point_from_dir) (grub_find_zpool_from_mount_point): New function prototypes. * kern/emu/getroot.c [HAVE_GETFSSTAT]: Move `' to ... * kern/emu/misc.c [HAVE_GETFSSTAT]: ... here. * kern/emu/getroot.c (find_mount_point_from_dir): Move to ... * kern/emu/misc.c (grub_find_mount_point_from_dir): ... this. Remove `static' attribute. * kern/emu/getroot.c (find_root_device_from_libzfs): Split code for finding zpool from mount point into ... * kern/emu/misc.c (grub_find_zpool_from_mount_point): ... this. * kern/emu/misc.c (grub_make_system_path_relative_to_its_root): When requested path is part of a ZFS pool, use grub_find_zpool_from_mount_point() to detect its filesystem name, and generate a path with `/fsname@path' syntax. 2010-08-01 Robert Millan Prevent accidental use of uninitialized libzfs_handle. * util/grub-probe.c (main): Move grub_util_init_libzfs() call to ... * kern/emu/getroot.c (find_root_device_from_libzfs): ... here. * util/misc.c (grub_util_init_libzfs): Make this function idempotent. 2010-08-01 Colin Watson * util/grub.d/20_linux_xen.in: Don't use UUID for LVM root (matching util/grub.d/10_linux.in). Fixes Debian bug #591093. 2010-08-01 Robert Millan * kern/emu/getroot.c: Include `'. 2010-07-31 Robert Millan * util/grub.d/10_kfreebsd.in: Make module handling more generic. 2010-07-31 Robert Millan * kern/emu/misc.c: Add missing license header. 2010-07-31 Robert Millan * configure.ac: Check for `libzfs.h' and `libnvpair.h'. * include/grub/util/libnvpair.h: Include `'. [HAVE_LIBNVPAIR_H]: Include `' instead of declaring libnvpair prototypes ourselves. * include/grub/util/libzfs.h: Include `'. [HAVE_LIBZFS_H]: Include `' instead of declaring libzfs prototypes ourselves. (libzfs_handle): Moved to ... * include/grub/util/misc.h (libzfs_handle): ... here. Include `'. 2010-07-30 Robert Millan * include/grub/emu/misc.h: Add missing license header. 2010-07-30 Robert Millan Enable `grub-probe -t device' resolution on ZFS. * configure.ac: Check for getfsstat(), libzfs and libnvpair. * include/grub/util/libnvpair.h: New file. * include/grub/util/libzfs.h: New file. * kern/emu/getroot.c: Include `' and `'. [HAVE_LIBZFS && HAVE_LIBNVPAIR]: Include `' and `'. [HAVE_GETFSSTAT]: Include `'. (find_mount_point_from_dir): New static function. [HAVE_LIBZFS && HAVE_LIBNVPAIR] (find_root_device_from_libzfs): New function. [HAVE_LIBZFS && HAVE_LIBNVPAIR] (grub_guess_root_device): Use find_root_device_from_libzfs() before ressorting to find_root_device(). * include/grub/util/misc.h (grub_util_init_libzfs): New function prototype. * util/misc.c: Include `'. (grub_util_init_libzfs): New function. [HAVE_LIBZFS] (libzfs_handle): New global variable. [HAVE_LIBZFS] (fini_libzfs): New static function. (grub_util_init_libzfs): New function. * util/grub-probe.c (main): Call grub_util_init_libzfs(). 2010-07-30 Robert Millan * include/grub/emu/misc.h (grub_make_system_path_relative_to_its_root) (xmalloc, xrealloc, xstrdup, xasprintf): Add `warn_unused_result' attribute. * include/grub/misc.h (grub_strdup, grub_strndup, grub_strlen) (grub_xasprintf, grub_xvasprintf): Likewise. * include/grub/emu/misc.h (xasprintf): Remove duplicate prototype. 2010-07-29 Robert Millan * util/grub-probe.c (PRINT_FS_LABEL): New enum value. (probe): Handle `PRINT_FS_LABEL'. (main): Handle `-t fs_label'. 2010-07-29 Robert Millan * configure.ac: Remove grub-mkisofs checks. 2010-07-28 Vladimir Serbinenko * util/ieee1275/grub-install.in: Don't use empty grub_device. Reported by: Lennart Sorensen. 2010-07-20 Vladimir Serbinenko * util/grub.d/00_header.in: Remove compatibility with terminal.mod prior to terminal_input/terminal_output separation. It's been over 1.5 years and those versions weren't widely deployed. 2010-07-22 Colin Watson * disk/raid.c (insert_array): Don't count named arrays when looking for unused array numbers. Reported and tested by: Michael Guntsche. 2010-07-20 Colin Watson * bus/usb/emu/usb.c (grub_usb_poll_devices): Add a dummy implementation of this so that grub-emu links again, with a note that this should support hotplugging in the future. 2010-07-20 Colin Watson * kern/emu/getroot.c (grub_util_get_grub_dev): Use xasprintf. 2010-07-20 Colin Watson * disk/loopback.c (grub_cmd_loopback): Don't leak a grub_file_t handle on failure. (grub_loopback_close): Remove empty function. (grub_loopback_dev): Remove close method. 2010-07-20 Colin Watson Disable EFI cursor when the EFI console becomes inactive. * term/efi/console.c (grub_efi_console_init): New function. (grub_efi_console_fini): New function. (grub_console_term_output): Register init and fini methods. 2010-07-20 Vladimir Serbinenko * tests/util/grub-shell-tester.in: Remove bashism and declare as sh script. 2010-07-20 Vladimir Serbinenko * disk/loopback.c (grub_loopback): Replace filename with file. (delete_loopback): Handle new semantics. (grub_cmd_loopback): Likewise. (grub_loopback_iterate): Likewise. (grub_loopback_close): Likewise. 2010-07-20 Vladimir Serbinenko * util/i386/efi/grub-install.in: Revert to platform-specific behaviour with -p "". Reported by: Tito Keitel. 2010-07-20 Vladimir Serbinenko * docs/grub.texi (Naming convention): Document new naming convention. 2010-07-20 Vadim Solomin 2010-07-20 Colin Watson Generate device.map in something closer to the old ordering. * util/deviceiter.c (struct device): New declaration. (compare_file_names): Rename to ... (compare_devices): ... this. Sort by kernel name in preference to the stable by-id name, but keep the latter as a fallback comparison. Update header comment. (grub_util_iterate_devices) [__linux__]: Construct and sort an array of `struct device' rather than of plain file names. 2010-07-20 Thomas Frauendorfer * lib/i386/relocator_asm.S [! __x86_64__]: Don't try to disable amd64 on i386. 2010-07-20 Vladimir Serbinenko * commands/acpi.c (setup_common_tables): Use sizeof instead of hardcoding size. (setv1table): Likewise. 2010-07-20 Colin Watson * disk/raid.c (insert_array): Use md/%s to name mdadm 1.x devices, removing the homehost if present. * kern/emu/getroot.c (get_mdadm_name) [__linux__]: New function. (grub_util_get_grub_dev): Use md/%s to name mdadm 1.x devices, removing the homehost if present. (grub_util_get_grub_dev) [__linux__]: Get the array name from mdadm if possible. * util/i386/pc/grub-setup.c (main): Handle md/* devices. * disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Add start_sector parameter. Set its pointer target to 0. * disk/mdraid_linux.c (grub_mdraid_detect): Add start_sector parameter. Set its pointer target to 0 for 0.9 metadata, or to the `data_offset' value from the superblock for 1.x metadata. * disk/raid.c (grub_raid_read): Offset reads by the start sector of data on the device. (insert_array): Record the start sector of data on the device. (grub_raid_register): Pass start_sector parameters to grub_raid_list->detect and insert_array. * include/grub/raid.h (struct grub_raid_array): Add start_sector member. (struct grub_raid): Add start_sector parameter to `detect'. * disk/mdraid_linux.c (struct grub_raid_super_1x): Remove __attribute__ ((packed)), leaving a comment. (grub_mdraid_detect): Split out 0.9 and 1.x detection to ... (grub_mdraid_detect_09): ... here and ... (grub_mdraid_detect_1x): ... here. 2010-07-20 Peter Henn * disk/mdraid_linux.c (grub_mdraid_detect): Fix calculation of 1.x chunk size and disk size, which are already given as sector counts as distinct from the 0.90 units. Fetch the correct device number from the role table instead of using the table index. 2010-07-20 Felix Zielcke * disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Set array->name to NULL. * disk/mdraid_linux.c (grub_raid_super_1x): New structure. (WriteMostly1): New macro. Set array->name to NULL for metadata format 0.90. Add support for metadata 1.x. Fix some comments. * disk/raid.c (): Add support for name based RAID arrays. Fix a few comments. * util/getroot.c (grub_util_get_grub_dev): Add support for /dev/md/name style devices. 2010-07-20 Colin Watson * .bzrignore: Ignore 20_linux_xen. 2010-07-17 Colin Watson * util/import_unicode.py: Remove unnecessary imports. 2010-07-17 Aleš Nesrsta Hotplugging and USB hub support. * bus/usb/ohci.c (grub_ohci_td): Add convenience fields. (grub_ohci): Likewise. (GRUB_OHCI_REG_CONTROL_BULK_ENABLE): New definition. (GRUB_OHCI_REG_CONTROL_CONTROL_ENABLE): Likewise. (GRUB_OHCI_RESET_CONNECT_CHANGE): Likewise. (GRUB_OHCI_CTRL_EDS): Likewise. (GRUB_OHCI_BULK_EDS): Likewise. (GRUB_OHCI_TDS): Likewise. (GRUB_OHCI_ED_ADDR_MASK): Likewise. (grub_ohci_ed_phys2virt): New function. (grub_ohci_virt_to_phys): Likewise. (grub_ohci_td_phys2virt): Likewise. (grub_ohci_td_virt2phys): Likewise. (grub_ohci_pci_iter): Allocate memory and don't wait for stable attachment. (grub_ohci_find_ed): New function. (grub_ohci_alloc_td): Likewise. (grub_ohci_free_td): Likewise. (grub_ohci_free_tds): Likewise. (grub_ohci_transfer): Use previously allocated memory. (grub_ohci_portstatus): Reset status changed bit. (grub_ohci_detect_dev): Supply status changed. (grub_ohci_fini_hw): Free memory. (grub_ohci_restore_hw): Reallocate memory. * bus/usb/uhci.c (grub_uhci_portstatus): Don't reset on disable. Reset status change. (grub_uhci_detect_dev): Supply status_change. * bus/usb/usb.c (attach_hooks): New var. (grub_usb_device_attach): New function. (grub_usb_register_attach_hook_class): Likewise. (grub_usb_unregister_attach_hook_class): Likewise. * bus/usb/usbhub.c (grub_usb_hub_add_dev): Handle errors correctly. (grub_usb_add_hub): Reset connection changed bit. (attach_root_port): New function. (grub_usb_root_hub): Likewise. (poll_nonroot_hub): Likewise. (grub_usb_poll_devices): Likewise. * commands/usbtest.c (grub_cmd_usbtest): Poll devices before listing. * disk/usbms.c (grub_usbms_open): Use device hooks. (grub_usbms_iterate) :Poll devices. (grub_usbms_finddevs): Split into ... (grub_usbms_attach): ... this ... (grub_usbms_attach): ... and this. * include/grub/usb.h (grub_usb_controller_dev): Supply status_changed in detect_dev. (grub_usb_interface): New fields attached and detach_hook. (grub_usb_attach_hook_class): New type. (grub_usb_attach_desc): New struct. (grub_usb_register_attach_hook_class): New function. (grub_usb_unregister_attach_hook_class): Likewise. (grub_usb_poll_devices): Likewise. (grub_usb_device_attach): Likewise. * include/grub/usbtrans.h (GRUB_USB_HUB_FEATURE_C_CONNECTED): New const. (GRUB_USB_HUB_STATUS_C_CONNECTED): Likewise. 2010-07-17 Vladimir Serbinenko * include/grub/bsdlabel.h (GRUB_PC_PARTITION_BSD_LABEL_WHOLE_DISK_PARTITION): New definition. * partmap/bsdlabel.c (bsdlabel_partition_map_iterate): Use FreeBSD delta determination style. Works with most NetBSD partitions too. 2010-07-17 Vladimir Serbinenko * kern/partition.c [GRUB_UTIL]: Add missing util/misc.h inclusion. * partmap/bsdlabel.c [GRUB_UTIL]: Likewise. 2010-07-17 Vladimir Serbinenko * disk/scsi.c (grub_scsi_open): Fix incorrect pointer dereference. 2010-07-14 Anton Blanchard * loader/powerpc/ieee1275/linux.c (grub_cmd_linux): Do not reject ET_DYN files. 2010-07-14 Grégoire Sutre * Makefile.in: Use the substituted @USE_NLS@ instead of ENABLE_NLS. 2010-07-14 Grégoire Sutre * kern/partition.c (grub_partition_check_containment): New function to check that a partition is physically contained in a parent. Since offsets are relative (and non-negative), this reduces to checking that the partition ends before its parent. (grub_partition_map_probe): Discard out-of-range sub-partitions. (grub_partition_iterate): Likewise. * include/grub/partition.h (grub_partition_map): Slightly more detailed comments. * partmap/bsdlabel.c (bsdlabel_partition_map_iterate): Discard partitions that start before their parent, and add debug printfs. 2010-07-13 Colin Watson * Makefile.in (.SUFFIX): Spell correctly, as ... (.SUFFIXES): ... this. Fixes bug where `make foo' (where foo is a bare module name without `.mod', e.g. `test') tried to invoke a Modula-2 compiler. 2010-07-13 Colin Watson * README: Point to the Info manual. 2010-07-13 Jiro SEKIBA * fs/nilfs2.c: fix macro NILFS_2ND_SUPER_BLOCK to calculate 2nd superblock position from partition size. 2010-07-10 Colin Watson * Makefile.in (MAINTAINER_CLEANFILES): Remove unicode/UnicodeData.txt, unicode/BidiMirroring.txt, and unicode/ArabicShaping.txt again; these are inputs to autogen.sh, not outputs. 2010-07-10 Vladimir Serbinenko Restructure SCSI .id handling. Reported and tested by: Aleš Nesrsta. * disk/ata.c (grub_atapi_close): Removed. All users updated. (grub_atapi_dev): Changed .name to "ata". New field .id. * disk/usbms.c (grub_usbms_close): Removed. All users updated. (grub_usbms_dev): New field .id. * disk/scsi.c (grub_scsi_iterate): Generate name. (grub_scsi_open): Parse name. * include/grub/scsi.h (grub_make_scsi_id): New function. (grub_scsi_dev): Change iterate and open to number instead of naming busses. All users updated. (grub_scsi): Remove name. Add .bus. 2010-07-10 Vladimir Serbinenko * commands/help.c (grub_cmd_help): Fix a typo. 2010-07-10 Vladimir Serbinenko * normal/term.c (put_glyphs_terminal): Fix state->num_lines counting. Reported and tested by: Colin Watson. 2010-07-10 Vladimir Serbinenko * util/grub-mkrescue.in: Don't use tar GNU-ism since it's not necessary in this context. 2010-07-07 Vladimir Serbinenko * tests/util/grub-shell.in: Remove bashisms and declare as sh script. 2010-07-07 Colin Watson * term/gfxterm.c (grub_gfxterm_background_image_cmd): Fix indentation. 2010-07-06 Colin Watson * conf/common.rmk (grub_probe_SOURCES): Add disk/raid5_recover.c and disk/raid6_recover.c. * conf/i386-pc.rmk (grub_setup_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_setup_SOURCES): Likewise. 2010-07-06 Colin Watson * term/gfxterm.c (repaint_schedulded): Rename to ... (repaint_scheduled): ... this. Update all callers. (repaint_was_schedulded): Rename to ... (repaint_was_scheduled): ... this. Update all callers. 2010-07-06 Colin Watson * util/deviceiter.c (grub_util_iterate_devices): Skip MD devices, which we expect to be handled by upper layers. 2010-07-06 BVK Chaitanya * bus/usb/usbhub.c: #include time.h header. 2010-07-06 Colin Watson * fs/reiserfs.c (grub_reiserfs_iterate_dir): Zero out first byte of entry_name also for entries without stat blocks (e.g. ".."); fixes corruption of the first entry in a directory. 2010-07-06 Colin Watson * util/grub.d/00_header.in: Process GRUB_THEME and GRUB_BACKGROUND after setting gfxterm as the active terminal. GRUB_BACKGROUND doesn't work otherwise. 2010-07-05 Colin Watson * docs/grub.texi (Features): Update list of supported file systems. (GNU/Linux): Update for GRUB 2. (Serial terminal): Remove mention of --disable-serial, which was a GRUB Legacy configure option. Update instructions to use `terminal_input' and `terminal_output' rather than `terminal'. (Vendor power-on keys): Copy-edit. Add cross-references to `Simple configuration' and `Installing GRUB using grub-install'. (Menu entry editor): Update for GRUB 2. (terminfo): Add vt100-color, ieee1275, and dumb terminal types. Document new -a, -u, and -v options. (initrd): New section. (initrd16): New section. (linux): New section. (linux16): New section. (search): The `var' argument to `--set' is optional. (GRUB only offers a rescue shell): Go into a little more detail on drive ordering. 2010-07-05 Colin Watson * Makefile.in: Set LINGUAS to empty if ENABLE_NLS is undefined. 2010-07-05 Colin Watson * Makefile.in (MAINTAINER_CLEANFILES): Add unicode/UnicodeData.txt, unicode/BidiMirroring.txt, unicode/ArabicShaping.txt, and unidata.c. 2010-07-05 Colin Watson * util/i386/pc/grub-setup.c (setup): Rename prefix to install_prefix, in line with install_dos_part and install_bsd_part. Add new prefix variable, which is copied to install_prefix after comparing core.img in memory with the one read from disk in the no-embedding case, and use that rather than overwriting install_prefix immediately when installing to a partition. Fixes Debian bug #586621; based on patches by Matt Kraai and M. Vefa Bicakci. 2010-07-04 Grégoire Sutre * configure.ac: Avoid == in test command, it's not portable. * util/grub.d/30_os-prober.in: Likewise. 2010-07-04 Colin Watson * kern/emu/getroot.c [__GNU__]: Include for munmap. 2010-07-04 Grégoire Sutre * util/i386/pc/grub-setup.c (setup): Do not embed when there are multiple (top-level) partmaps. 2010-07-02 Vladimir Serbinenko * util/i386/efi/grub-install.in: Don't use empty grub_device. Reported by: Tino Keitel. 2010-07-02 Vladimir Serbinenko Bidi and diacritics support. * Makefile.in (widthspec.bin): New target. (widthspec.h): Likewise. (TARGET_CFLAGS): Add -DHAVE_UNIFONT_WIDTHSPEC=1 if font was available. * autogen.sh: Generate unidata.c. * commands/cat.c (grub_cmd_cat): Don't use grub_putchar. * commands/ls.c (grub_ls_list_devices): Likewise. (grub_ls_list_files): Likewise. * commands/minicmd.c (grub_mini_cmd_cat): Likewise. (grub_mini_cmd_lsmod): Likewise. * commands/read.c: Likewise. * kern/corecmd.c (grub_core_cmd_ls): Likewise. * kern/rescue_reader.c (grub_rescue_read_line): Likewise. * lib/arg.c (grub_arg_show_help): Likewise. * lib/crypto.c (grub_password_get): Likewise. * normal/auth.c (grub_username_get): Likewise. * normal/misc.c (grub_normal_print_device_info): Likewise. * commands/help.c (grub_cmd_help): Use grub_unicode_aglomerate_comb. * conf/common.rmk (grub_mkfont_SOURCES): Add unidata.c. (gfxmenu_mod_SOURCES): Add gfxmenu/font.c. (normal/charset.c_DEPENDENCIES): New variable. (normal_mod_SOURCES): Add normal/charset.c and unidata.c. (pkglib_MODULES): Remove charset.mod. (charset_mod_SOURCES): Removed. (charset_mod_CFLAGS): Likewise. (charset_mod_LDFLAGS): Likewise. (pkglib_MODULES) [ieee1275]: Remove terminfo.mod. * conf/powerpc-ieee1275.rmk (kernel_img_SOURCES): Add term/terminfo.c and term/tparm.c. * conf/sparc64-ieee1275.rmk (kernel_img_SOURCES): Likewise. * conf/i386-ieee1275.rmk (kernel_img_SOURCES): Likewise. (kernel_img_HEADERS): Add terminfo.h. * font/font.c (ascii_glyph_lookup): Return NULL on failure. Fill ->font. Reverse ascii bitmaps. (grub_font_get_xheight): New function. * font/font.c (grub_font_get_string_width): Moved from here ... * gfxmenu/font.c (grub_font_get_string_width): ... here. * font/font.c (grub_font_draw_string): Moved from here ... * gfxmenu/font.c (grub_font_draw_string): ... here. * font/font.c (grub_font_dup_glyph): New function. (grub_font_blit_glyph): Likewise. (grub_font_blit_glyph_mirror): Likewise. (blit_comb): Likewise. (grub_font_construct_dry_run): Likewise. (grub_font_get_constructed_device_width): Likewise. (grub_font_construct_glyph): Likewise. * include/grub/charset.h (grub_ucs4_to_utf8): New proto. * include/grub/misc.h (grub_utf8_to_ucs4): Moved from here ... * include/grub/charset.h (grub_utf8_to_ucs4): ... here. * include/grub/font.h (GRUB_FONT_CODE_CHAR_MASK): New constant. (GRUB_FONT_CODE_RIGHT_JOINED): Likewise. (GRUB_FONT_CODE_LEFT_JOINED): Likewise. (grub_font_get_xheight): New proto. (grub_font_get_constructed_device_width): Likewise. (grub_font_construct_glyph): Likewise. * include/grub/font.h (grub_font_get_string_width): Moved from here ... * include/grub/gfxmenu_view.h (grub_font_get_string_width): ... here. * include/grub/font.h (grub_font_draw_string): Moved from here ... * include/grub/gfxmenu_view.h (grub_font_draw_string): ... here. * include/grub/i386/vga_common.h (grub_console_putchar): Moved from here.. * include/grub/i386/pc/console.h (grub_console_putchar): ... here. * include/grub/i386/vga_common.h (grub_console_real_putchar): Removed. (grub_console_getcharwidth): Likewise. * include/grub/misc.h (grub_xputs): New proto. (grub_puts): Inlined. * include/grub/normal.h (grub_print_ucs4): Add margin specification. (grub_normal_get_line_counter): Removed. (grub_install_newline_hook): Likewise. (grub_normal_get_char_counter): New proto. (grub_normal_reset_more): Likewise. (grub_xputs_normal): Likewise. * include/grub/powerpc/ieee1275/console.h: Removed. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/term.h (GRUB_TERM_CODE_TYPE_MASK): New definition. (GRUB_TERM_CODE_TYPE_ASCII): Likewise. (GRUB_TERM_CODE_TYPE_CP437): Likewise. (GRUB_TERM_CODE_TYPE_UTF8_LOGICAL): Likewise. (GRUB_TERM_CODE_TYPE_UTF8_VISUAL): Likewise. (GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS): Likewise. (grub_term_input): Pass reference to self. All users updated. (grub_term_output): Pass grub_unicode_glyph to putchar and getcharwidth. Pass reference to self. New fields normal_color, highlight_color and data. All users updated. (grub_putchar): Removed. (grub_putcode): Remove EXPORT_FUNC since it's not in kernel anymore. (grub_unicode_estimate_width): New function. (grub_term_getcharwidth): Add defaults. (GRUB_TERM_DEFAULT_NORMAL_COLOR): New definition. (GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR): Likewise. (GRUB_TERM_DEFAULT_STANDARD_COLOR): Likewise. (grub_cls): Remove EXPORT_FUNC. (grub_setcolorstate): Inline. (grub_newline_hook): Removed. * include/grub/terminfo.h: Rewritten. All users updated. * include/grub/unicode.h: New file. * include/grub/video.h (grub_video_signed_rect): New type. * kern/emu/console.c (grub_console_highlight_color): Removed. (grub_console_normal_color): Likewise. (grub_console_standard_color): Made static. (grub_ncurses_putchar): Remove mapping. (grub_ncurses_getcharwidth): Removed. (grub_ncurses_term_output): Declare as GRUB_TERM_CODE_TYPE_ASCII. (grub_ncurses_setcolor): Removed. (grub_ncurses_getcolor): Likewise. * kern/i386/pc/startup.S (grub_console_real_putchar): Renamed to ... (grub_console_putchar): ... this. (grub_console_putchar): Handle argument difference. * kern/ieee1275/init.c (grub_machine_init): Split console_init into console_init_early and console_init_lately. * kern/sparc64/ieee1275/init.c (grub_machine_init): Likewise. * kern/misc.c (grub_puts): Removed. (grub_vprintf): Store UTF-8 string instead of outputting it directly. (grub_vsnprintf_real): Remove str = NULL support. * kern/misc.c (grub_utf8_to_ucs4): Move from here ... * normal/charset.c (grub_utf8_to_ucs4): ... here. * kern/term.c (grub_putcode): Renamed to ... (grub_putcode_dumb): ... this. Pass grub_unicode_glyph instead of code. (grub_putchar): Removed. (grub_xputs_dumb): New function. (grub_xputs): New variable. * lib/charset.c: Move from here ... * normal/charset.c: ... to here. (grub_ucs4_to_utf8): New function. (grub_ucs4_to_utf8_alloc): Use grub_ucs4_to_utf8. (join_types): New variable. (unpack_join): New function. (bidi_types): New variable. (unpack_bidi): New function. (get_bidi_type): Likewise. (get_join_type): Likewise. (is_mirrored): Likewise. (grub_unicode_get_comb_type): Likewise. (grub_unicode_estimate_width) [HAVE_UNIFONT_WIDTHSPEC]: Likewise. (is_type_after): Likewise. (grub_unicode_aglomerate_comb): Likewise. (bidi_line_wrap): Likewise. (grub_bidi_line_logical_to_visual): Likewise. (grub_bidi_logical_to_visual): Likewise. (grub_unicode_mirror_code): Likewise. (grub_unicode_shape_code): Likewise. * normal/cmdline.c (grub_cmdline_get): Reset more counter. Don't use grub_putchar. * normal/main.c (grub_normal_init_page): Use grub_putcode. (grub_normal_reader_init): Likewise. (grub_xputs_saved): New variable. (GRUB_MOD_INIT): Set grub_xputs. (GRUB_MOD_FINI): Restore grub_xputs. * normal/menu.c (grub_wait_after_message): Don't use grub_putchar. (menu_init): Avoid printing gfxmenu error. (show_menu): Use grub_normal_get_char_counter. * normal/menu_entry.c (update_screen): Fix out-of-array. (complete): Avoid NULL dereferencing. * grub_menu_entry_run (grub_menu_entry_run): Don't use putchar. * normal/menu_text.c (print_spaces): Removed. (grub_print_ucs4): Likewise. (grub_print_message_indented): Use grub_print_ucs4. (print_message): Use grub_putcode. (print_entry): Hanlde diacritics. * normal/term.c (term_state): New type. (grub_more_lines): Removed. (term_states): New variable. (grub_normal_line_counter): Renamed to .. (grub_normal_char_counter): ...this. All users updated. (grub_normal_get_line_counter): Renamed to ... (grub_normal_get_char_counter): ... this. (grub_normal_reset_more): New function. (process_newline): Removed. (print_more): New function. (grub_install_newline_hook): Removed. (map_code): New function. (grub_puts_terminal): Use grub_print_ucs4. (putglyph): New function. (putcode_real): Likewise. (grub_putcode): Use putcode_real. (get_maxwidth): New function. (get_startwidth): Likewise. (print_ucs4_terminal): Likewise. (find_term_state): Likewise. (put_glyphs_terminal): Likewise. (print_backlog): Likewise. (print_ucs4_real): Likewise. (grub_print_ucs4): Likewise. (grub_xputs_normal): Likewise. * term/efi/console.c (grub_console_putchar): Output diacritics. (grub_console_getcharwidth): Removed. (grub_console_term_output): Declare as GRUB_TERM_CODE_TYPE_UCS4_VISUAL. * term/gfxterm.c (clear_char): Free chars. (scroll_up): Avoid leaking memory. (grub_gfxterm_putchar): Support diacritics. (grub_video_term): Declare as GRUB_TERM_CODE_TYPE_UCS4_VISUAL. * term/i386/pc/console.c (grub_console_term_output): Declare as GRUB_TERM_CODE_TYPE_VGA. * term/i386/pc/vga.c (grub_vga_term): Declare as GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS. * term/i386/pc/vga_text.c (grub_vga_text_term): Declare as GRUB_TERM_CODE_TYPE_VGA. * term/i386/vga_common.c (map_char): Removed. (grub_console_putchar): Likewise. (grub_console_getcharwidth): Likewise. * term/ieee1275/ofconsole.c: Simplify using terminfo. (colors): Reordered to match terminfo. (grub_ofconsole_normal_color): Removed. (grub_ofconsole_writeesc): Likewise. (grub_ofconsole_highlight_color): Likewise. (grub_ofconsole_getcharwidth): Likewise. (grub_ofconsole_setcolorstate): Likewise. (grub_ofconsole_setcolor): Likewise. (grub_ofconsole_getcolor): Likewise. (grub_ofconsole_readkey): Renamed to ... (readkey): ... this. Remove escape sequence handling. Return -1 on no key. (grub_ofconsole_checkkey): Removed. (grub_ofconsole_getkey): Likewise. (grub_ofconsole_getxy): Likewise. (grub_ofconsole_gotoxy): Likewise. (grub_ofconsole_cls): Likewise. (grub_ofconsole_refresh): Likewise. (grub_ofconsole_terminfo_input): New struct. (grub_ofconsole_terminfo_output): Likewise. (grub_ofconsole_term_input): Use terminfo. (grub_ofconsole_term_output): Likewise. (grub_console_init): Split into ... (grub_console_init_early): ...this and ... (grub_console_init_lately): ...this. Use terminfo. (grub_ofconsole_putchar): Renamed to ... (put): ... this. Remove mapping. (grub_ofconsole_term_output): Declare as GRUB_TERM_CODE_TYPE_ASCII. * term/serial.c: Simplify using terminfo. (xpos): Removed. (ypos): Likewise. (keep_track): Likewise. (registered): Likewise. (input_buf): Likewise. (npending): Likewise. (serial_translate_key_sequence): Likewise. (fill_input_buf): Likewise. (grub_serial_checkkey): Likewise. (grub_serial_getkey): Likewise. (grub_serial_getxy): Likewise. (grub_serial_gotoxy): Likewise. (grub_serial_putchar): Likewise. (grub_serial_cls): Likewise. (grub_serial_setcolorstate): Likewise. (grub_serial_setcursor): Likewise. (serial_hw_init): Use serial_hw_fetch. (grub_serial_terminfo_input): New variable. (grub_serial_terminfo_output): Likewise. (grub_serial_term_input): Use terminfo. (grub_serial_term_output): Likewise. * term/terminfo.c (putstr): Use put. (grub_terminfo_all_free): New function (grub_terminfo_set_current): New types vt100-color, ieee1275 and dumb. (grub_terminfo_output_register): New function. (grub_terminfo_output_unregister): Likewise. (grub_terminfo_getxy): Likewise. (grub_terminfo_readkey): Likewise. (grub_terminfo_checkkey): Likewise. (grub_terminfo_getkey): Likewise. (grub_terminfo_input_init): Likewise. (print_terminfo): Likewise. (grub_cmd_terminfo): Handle encoding. (grub_terminfo_gotoxy): Track position. (grub_terminfo_cls): Likewise. (grub_terminfo_putchar): Likewise. (grub_terminfo_setcolorstate): Handle colors (grub_terminfo_cursor_on): This ... (grub_terminfo_cursor_off): ... and this merged into ... (grub_terminfo_setcursor): ... this. * term/tparm.c (grub_terminfo_tparm): Avoid NULL dereferencing. * unicode/ArabicShaping.txt: New file (imported from Unicode). * unicode/BidiMirroring.txt: Likewise. * unicode/UnicodeData.txt: Likewise. * unicode/COPYING: Likewise. * util/grub-editenv.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/grub-fstest.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/grub-mkdevicemap.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/grub-probe.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/grub-script-check.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/i386/pc/grub-setup.c (grub_putchar): Removed. (grub_xputs_real): New function. (grub_xputs): New variable. * util/import_unicode.py: New file. * util/grub-mkfont.c (ft_errmsgs): New array. (grub_glyph_info): Make bitmap a pointer. (file_formats): New type WIDTH_SPEC. (grub_font_info): New members glyphs_unsorted, glyphs_sorted, num_glyphs. (options): Add width-spec. (help): Likewise. (add_char): Renamed to ... (add_glyph): ... this. (add_glyph): Use index. Show freetype errors. Cut blank space at borders. (glyph_replace): New type. (subst_rightjoin), (subst_leftjoin), (subst_medijoin): New variables. (add_char): New function. (add_subst): Likewise. (process_cursive): Likewise. (add_font): Handle GSUB. (write_font_width_spec): New function. (main): Sort glyphs. * commands/minicmd.c (grub_mini_cmd_clear): Moved from here ... * normal/main.c (grub_mini_cmd_clear): ..here. All users updated. * kern/term.c (grub_cls): Moved from here... * normal/term.c (grub_cls): ... here. 2010-07-02 Colin Watson * include/grub/types.h: Define the C99-style PRIxGRUB_SIZE macro, suitable for using within the format argument of printf when converting grub_size_t. * disk/usbms.c (grub_usbms_transfer): Use PRIxGRUB_SIZE rather than "x" to convert grub_size_t arguments. 2010-07-02 Vladimir Serbinenko * gfxmenu/gui_list.c (draw_menu): Use viewport to simplify code and fix too long captions. (list_get_minimal_size): Take selection box into account. 2010-07-02 Vladimir Serbinenko * font/font.c (grub_font_get_glyph_with_fallback): Avoid dereferencing NULL font. 2010-07-02 Colin Watson * util/deviceiter.c (grub_util_iterate_devices): Skip device-mapper devices when iterating over /dev/disk/by-id; they will be handled later if appropriate, which they aren't always (e.g. LVM). 2010-07-02 Colin Watson * include/grub/misc.h (grub_reboot): Declare as noreturn. * kern/efi/efi.c (grub_reboot): Don't return, even if reset_system fails. (grub_halt): Likewise. * kern/ieee1275/openfw.c (grub_reboot): Don't return, even if reset-all fails. (grub_halt): Don't return, even if all of shut-down, power-off, and poweroff fail. 2010-07-02 Colin Watson * kern/efi/init.c (grub_efi_init): set_watchdog_timer takes four arguments, not three. 2010-07-02 Colin Watson * util/grub-mkconfig_lib.in (uses_abstraction): New function. * util/grub.d/10_linux.in: Use it to check for LVM, so that LVM-on-RAID is handled correctly. 2010-07-02 Colin Watson * docs/grub.texi (Changes from GRUB Legacy): New section. (Future): Fix typo. 2010-07-02 Colin Watson * util/grub-mkconfig_lib.in (grub_file_is_not_garbage): Sometimes grub.d/README accidentally ends up executable for one reason or another. Ignore it. 2010-07-02 Vladimir Serbinenko * partmap/gpt.c (MAX_SECTOR_LOG): New definition. (gpt_partition_map_iterate): Support non-512B sectors. 2010-07-02 Vladimir Serbinenko * kern/efi/init.c (grub_efi_init): Disable watchdog. Tested by: Seth Goldberg. 2010-07-02 Vladimir Serbinenko * loader/multiboot.c (grub_multiboot_boot) [GRUB_USE_MULTIBOOT2]: Properly align mbi. Reported by: Seth Goldberg. 2010-07-01 Vladimir Serbinenko * util/grub-mkrescue.in: Avoid module duplication. 2010-07-01 Sean Finney * util/grub.d/10_linux.in: Don't use UUID for LVM root. 2010-07-01 Sean Finney * disk/lvm.c (grub_lvm_scan_device): Skip snapshots. 2010-07-01 Vladimir Serbinenko * disk/lvm.c (grub_lvm_checkvalue): New function. (grub_lvm_check_flag): Likewise. 2010-07-01 Robert Millan * kern/emu/hostdisk.c (convert_system_partition_to_system_disk): Support 'p' as partition separator on kernel of FreeBSD (used with GPT labels). (grub_util_biosdisk_get_grub_dev): Likewise. 2010-07-01 Vladimir Serbinenko Yeeloong firmware port. * boot/mips/yeeloong/fwstart.S: New file. * bus/cs5536.c (gpiodump): New const. (set_io_space): New function. (set_iod): Likewise. (set_p2d): Likewise. (grub_cs5536_init_geode): Likewise. * commands/mips/yeeloong/lsspd.c: New file. * conf/mips-qemu-mips.rmk (pkglib_MODULES): Add serial.mod. (serial_mod_SOURCES): New variable. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Add term/serial.c, term/terminfo.c and term/tparm.c. (pkglib_IMAGES): Add fwstart.img. (fwstart_img_SOURCES): New variable. (fwstart_img_CFLAGS): Likewise. (fwstart_img_ASFLAGS): Likewise. (fwstart_img_LDFLAGS): Likewise. (fwstart_img_FORMAT): Likewise. (pkglib_MODULES): Add lsspd.mod. (lsspd_mod_SOURCES): New variable. (lsspd_mod_CFLAGS): Likewise. (lsspd_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add halt.mod. (halt_mod_SOURCES): New variable. (halt_mod_CFLAGS): Likewise. (halt_mod_LDFLAGS): Likewise. * conf/mips.rmk (pkglib_MODULES): Remove serial.mod. (serial_mod_SOURCES): Removed. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * disk/ata.c (check_device): New function. (grub_ata_device_initialize): Use check_device. (grub_ata_iterate): Recheck devices. (grub_ata_open): Likewise. (grub_atapi_iterate): Likewise. (grub_atapi_open): Likewise. * include/grub/ata.h (GRUB_ATA_CH0_PORT1): New macro. (GRUB_ATA_CH1_PORT1): Likewise. (GRUB_ATA_CH0_PORT2): Likewise. (GRUB_ATA_CH1_PORT2): Likewise. * include/grub/mips/loongson.h: New file. * include/grub/mips/yeeloong/ec.h: Likewise. * include/grub/mips/yeeloong/serial.h (GRUB_MACHINE_SERIAL_PORT): New definition. (GRUB_MACHINE_SERIAL_DIVISOR_115200): Likewise. (GRUB_MACHINE_SERIAL_PORTS) [ASM_FILE]: Remove. * include/grub/misc.h (grub_halt): Declare as noreturn. * include/grub/serial.h (UART_ENABLE_FIFO): Renamed to ... (UART_ENABLE_FIFO_TRIGGER14): ... this. All users updated. (UART_ENABLE_FIFO_TRIGGER1): New definition. (UART_ENABLE_DTRRTS): Likewise. (UART_ENABLE_MODEM): Removed. (UART_ENABLE_OUT2): New const. * include/grub/term.h (grub_term_register_input_active): New function. (grub_term_register_output_active): Likewise. * kern/mips/startup.S [GRUB_MACHINE_MIPS_YEELOONG]: Handle 0xffffffff argument. * kern/mips/yeeloong/init.c (grub_get_rtc): Macroify. (init_pci): New function. (grub_machine_init): Execute platform init when firmware. Init serial. (grub_halt): Implement. (grub_exit): Likewise. (grub_reboot): Likewise. * term/serial.c (serial_hw_init): Update macros. [GRUB_MACHINE_MIPS_YEELOONG]: Init on startup. * util/grub-mkimage.c (image_target_desc): New id IMAGE_YEELOONG_FLASH. (image_targets): New target mipsel-yeeloong-flash. (generate_image): Support IMAGE_YEELOONG_FLASH. * video/sm712.c (GRUB_SM712_TOTAL_MEMORY_SPACE): New definition. (grub_video_sm712_setup): Init card. (grub_video_sm712_set_palette): Removed. * video/sm712_init.c: New file. 2010-06-30 Colin Watson * Makefile.in (install-local): Temporarily prepend $(builddir) to PATH when running help2man and then run it on the unadorned executable names, rather than passing $(builddir)/* paths to help2man. This avoids the build directory ending up in generated manual pages. 2010-06-29 Colin Watson * util/grub-mkconfig.in: Use 'set -e' rather than '#! /bin/sh -e', to avoid accidents when debugging with 'sh -x'. * util/grub-mkrescue.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub.d/10_netbsd.in: Likewise. * util/grub.d/10_windows.in: Likewise. * util/grub.d/20_linux_xen.in: Likewise. * util/grub.d/30_os-prober.in: Likewise. * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. 2010-06-29 Colin Watson * commands/cat.c (grub_cmd_cat): Fix buffer overrun if '\r' is the last character in the buffer. Reported by: Vladimir Serbinenko. 2010-06-29 Robert Millan * docs/grub.texi (Simple configuration): Document ${GRUB_BADRAM}. (Command-line and menu entry commands): Document `badram' command. 2010-06-28 Robert Millan * util/grub-mkconfig.in: Export `GRUB_BADRAM' variable. * util/grub.d/00_header.in: When `GRUB_BADRAM' is set, issue badram command using ${GRUB_BADRAM} as parameter. 2010-06-28 Colin Watson * docs/grub.texi (Device map): New section. (Themes): New section (stub). * Makefile.in (docs/grub.info): The info documentation now builds without errors. Make sure it stays that way. 2010-06-28 Vladimir Serbinenko Use normal parser for menu entries. Reported by: Thomas Frauendorfer * include/grub/parser.h (grub_parser_execute): Don't export. * normal/menu.c (grub_menu_execute_entry_real): New function. (grub_menu_execute_entry): Use grub_menu_execute_entry_real. 2010-06-28 Colin Watson * docs/grub.texi (Embedded configuration): New section (replacing old "Preset Menu" stub). (Images): New section. (configfile): Note that any menu entries defined in `file' are shown immediately. 2010-06-28 Josh Triplett * mmap/i386/pc/mmap_helper.S: Set CF on return. 2010-06-28 Colin Watson * util/grub-install.in: Add --debug-image= option. 2010-06-28 Colin Watson Change grub-mkdevicemap to emit /dev/disk/by-id/ names where possible on Linux. * util/deviceiter.c (check_device): Rename to ... (check_device_readable_unique): ... this. Update all callers. Maintain and check a list of which devices (by canonicalized name) have already been seen. (clear_seen_devices): New function. (compare_file_names) [__linux__]: New function. (grub_util_iterate_devices): Clear the list of seen devices on exit and (just in case) on entry. (grub_util_iterate_devices) [__linux__]: Iterate over non-partition devices in /dev/disk/by-id/, in sorted order. Remove DM-RAID seen-devices list, superseded by general code in check_device. 2010-06-28 Colin Watson * commands/cat.c (options): New variable. (grub_cmd_cat): Parse options. If the --dos option is given, print DOS-style "\r\n" line endings as simple newlines (Debian bug #586358). (GRUB_MOD_INIT): Use extcmd. (GRUB_MOD_FINI): Likewise. * docs/grub.texi (cat): Document --dos. 2010-06-28 Vladimir Serbinenko XEN with Linux grub-mkconfig support. * conf/common.rmk (grub-mkconfig_SCRIPTS) [linux]: Add 20_linux_xen. * util/grub-mkconfig.in: Export GRUB_CMDLINE_XEN and GRUB_CMDLINE_XEN_DEFAULT. * util/grub.d/20_linux_xen.in: New file. 2010-06-28 Vladimir Serbinenko Initialise VGA video on qemu ourselves. * boot/i386/qemu/boot.S: Don't call 0xc000. * conf/i386-qemu.rmk (kern/i386/qemu/init.c_DEPENDENCIES): New variable. (kernel_img_SOURCES): Add kern/i386/qemu/init.c and bus/pci.c. (kernel_img_HEADERS): Add pci.h. * conf/i386.rmk (pkglib_MODULES) [qemu]: Remove pci.mod. * configure.ac: Force unifont on qemu and yeeloong. * include/grub/i386/qemu/kernel.h (grub_qemu_init_cirrus): New proto. (grub_vga_palette_write): Use correct register. * kern/i386/coreboot/init.c (grub_machine_init) [GRUB_MACHINE_QEMU]: Call grub_qemu_init_cirrus. * kern/i386/qemu/init.c: New file. * term/i386/pc/vga_text.c (inc_y): Never read outside the screen. * commands/videotest.c (grub_cmd_videotest): Handle double buffering. 2010-06-26 Pavel Roskin * util/grub.d/10_linux.in: Add support for initrd images on Fedora 13. 2010-06-26 Colin Watson * docs/grub.texi (Simple configuration): Explain that GRUB_DISABLE_LINUX_RECOVERY and GRUB_DISABLE_NETBSD_RECOVERY must be set to `true' to disable their respective recovery entries, not merely set. 2010-06-26 Colin Watson Make the `source' command slightly faster. * normal/main.c (grub_normal_execute): Don't re-read list files when nested. 2010-06-23 Colin Watson * loader/i386/multiboot_mbi.c (retrieve_video_parameters): Set red field position and mask size to red fields from mode_info, not green. * loader/multiboot_mbi2.c (retrieve_video_parameters): Likewise. Remove redundant tag->common.framebuffer_type assignment. Reported by: Seth Goldberg. 2010-06-23 Colin Watson Sync up other versions of the Linux loader with Robert Millan's change of 2010-01-09, "Make loader output a bit more user-friendly". * loader/i386/efi/linux.c (grub_linux_boot): Move debug info to grub_dprintf(). (grub_cmd_linux): Likewise. (grub_cmd_initrd): Likewise. * loader/i386/ieee1275/linux.c (grub_cmd_linux): Likewise. * loader/i386/pc/linux.c (grub_cmd_linux): Likewise. 2010-06-21 Colin Watson * kern/efi/mm.c (grub_efi_mm_init): Handle systems with memory maps larger than MEMORY_MAP_SIZE. 2010-06-21 BVK Chaitanya Fix parallel build. * conf/common.rmk: Add grub_script.tab.h as a grub-script-check dependency. * script/parser.y: #include grub_script.tab.h header. 2010-06-20 Vladimir Serbinenko Support >3GiB and <16MiB RAM in i386-qemu. * kern/i386/qemu/mmap.c (QEMU_CMOS_MEMSIZE2_HIGH): New const. (QEMU_CMOS_MEMSIZE2_LOW): Likewise. (grub_lower_mem): Removed. (grub_upper_mem): Likewise. (mem_size): Made static. (above_4g): New variable. (grub_machine_mmap_init): Detect small mem_size and above_4g. (grub_machine_mmap_iterate): Order in ascending order and add above_4g support. 2010-06-20 Vladimir Serbinenko Cirrus 5446 and Bochs video cards support. * conf/i386.rmk (pkglib_MODULES): Add video_cirrus.mod and video_bochs.mod (video_cirrus_mod_SOURCES): New variable. (video_cirrus_mod_CFLAGS): Likewise. (video_cirrus_mod_LDFLAGS): Likewise. (video_bochs_mod_SOURCES): Likewise. (video_bochs_mod_CFLAGS): Likewise. (video_bochs_mod_LDFLAGS): Likewise. * include/grub/vga.h: New file. * include/grub/video_fb.h (grub_video_fb_doublebuf_blit_init): Removed. (grub_video_fb_set_page_t): New type. (grub_video_fb_setup): New prototype. (grub_video_fb_swap_buffers): Likewise. (grub_video_fb_get_info_and_fini): Likewise. * term/i386/pc/vga_text.c (CRTC_ADDR_PORT): Moved to include/grub/vga.h. (CRTC_DATA_PORT): Likewise. (CRTC_CURSOR): Likewise. (CRTC_CURSOR_ADDR_HIGH): Likewise. (CRTC_CURSOR_ADDR_LOW): Likewise. (CRTC_CURSOR_DISABLE): Likewise. (update_cursor): Use grub_vga_cr_write. (grub_vga_text_setcursor): Likewise. * video/bochs.c: New file. * video/fb/video_fb.c (render_target): Moved into framebuffer variable. (palette): Likewise. (palette_size): Likewise. (framebuffer): New variable. (grub_video_fb_init): Use 'framebuffer'. (grub_video_fb_fini): Likewise. (grub_video_fb_get_info): Likewise. (grub_video_fb_get_palette): Likewise. (grub_video_fb_set_palette): Likewise. (grub_video_fb_set_viewport): Likewise. (grub_video_fb_get_viewport): Likewise. (grub_video_fb_map_color): Likewise. (grub_video_fb_map_rgb): Likewise. (grub_video_fb_map_rgba): Likewise. (grub_video_fb_unmap_color): Likewise. (grub_video_fb_unmap_color_int): Likewise. (grub_video_fb_fill_rect): Likewise. (grub_video_fb_blit_bitmap): Likewise. (grub_video_fb_blit_render_target): Likewise. (grub_video_fb_scroll): Likewise. (grub_video_fb_create_render_target): Likewise. (grub_video_fb_doublebuf_blit_init): Likewise. (grub_video_fb_set_active_render_target): Handle doublebuffering. (doublebuf_pageflipping_update_screen): New function. (doublebuf_pageflipping_init): Likewise. (grub_video_fb_setup): Likewise. (grub_video_fb_swap_buffers): Likewise. (grub_video_fb_get_info_and_fini): Likewise. * video/i386/pc/vbe.c (framebuffer): Remove all doublebuffering fields. All users updated. (doublebuf_pageflipping_commit): Restructured into ... (doublebuf_pageflipping_set_page): ... this. (doublebuf_pageflipping_update_screen): Removed. (doublebuf_pageflipping_init): Likewise. (double_buffering_init): Likewise. (grub_video_vbe_setup): Use grub_video_fb_setup. (grub_video_vbe_swap_buffers): Removed. (grub_video_vbe_set_active_render_target): Likewise. (grub_video_vbe_get_active_render_target): Likewise. (grub_video_vbe_get_info_and_fini): Use grub_video_fb_get_info_and_fini. (grub_video_vbe_adapter): Use grub_video_fb_swap_buffers, grub_video_fb_set_active_render_target and grub_video_fb_get_active_render_target. * video/i386/pc/vga.c (SEQUENCER_ADDR_PORT): Move to include/grub/vga.h. (SEQUENCER_DATA_PORT): Likewise. (MAP_MASK_REGISTER): Likewise. (CRTC_ADDR_PORT): Likewise. (CRTC_DATA_PORT): Likewise. (START_ADDR_HIGH_REGISTER): Likewise. (START_ADDR_LOW_REGISTER): Likewise. (GRAPHICS_ADDR_PORT): Likewise. (GRAPHICS_DATA_PORT): Likewise. (READ_MAP_REGISTER): Likewise. (INPUT_STATUS1_REGISTER): Likewise. (INPUT_STATUS1_VERTR_BIT): Likewise. (get_map_mask): Use grub_vga_sr_read. (set_map_mask): Use grub_vga_sr_write. (set_read_map): Use grub_vga_gr_write. (set_start_address): Use grub_vga_cr_write. * video/sm712.c (framebuffer): Remove leftover fields. 2010-06-20 Colin Watson * util/grub-mkconfig.in: Capitalise and export GRUB_PREFIX. Stop setting GRUB_VIDEO_BACKEND. Make it available as a user override instead. Replace the gfxterm backend check with a check that ${GRUB_PREFIX}/video.lst is non-empty. * util/grub.d/00_header.in: Use GRUB_PREFIX rather than computing it again. (load_video): New generated function. Call it before loading gfxterm rather than loading ${GRUB_VIDEO_BACKEND}. * util/grub.d/10_linux.in (linux_entry): Call load_video. * util/grub.d/30_os-prober.in (osx_entry): Likewise. * docs/grub.texi (Simple configuration): Document GRUB_VIDEO_BACKEND. 2010-06-20 Vladimir Serbinenko Use video functions in linux and xnu loaders. * conf/i386-pc.rmk (xnu_mod_SOURCES): Remove loader/i386/pc/xnu.c. * conf/x86-efi.rmk (xnu_mod_SOURCES): Remove loader/i386/efi/xnu.c. * include/grub/i386/xnu.h (grub_xnu_set_video): Removed. * loader/i386/efi/linux.c (grub_linux_setup_video): Copied from loader/i386/pc/linux.c. (grub_linux_boot): Resynced with loader/i386/pc/linux.c. (find_line_len): Removed. (find_framebuf): Likewise. (grub_cmd_linux): Declare grub_linux_boot as possibly returning. * loader/i386/efi/xnu.c: Removed. * loader/i386/pc/xnu.c: Moved from here... * loader/i386/xnu.c: ...here. Enable priorities in video drivers. * include/grub/video.h (grub_video_adapter_prio_t): New type. (grub_video_adapter): New field prio. (grub_video_register): Respect prio when inserting. * video/efi_gop.c (grub_video_gop_adapter): Add prio. * video/efi_uga.c (grub_video_uga_adapter): Likewise. * video/emu/sdl.c (grub_video_sdl_adapter): Likewise. * video/i386/pc/vbe.c (grub_video_vbe_adapter): Likewise. * video/i386/pc/vga.c (grub_video_vga_adapter): Likewise. * video/ieee1275.c (grub_video_ieee1275_adapter): Likewise. * video/sm712.c (grub_video_sm712_adapter): Likewise. Fix SDL driver ID. * include/grub/video.h (grub_video_driver_id_t): New value GRUB_VIDEO_DRIVER_SDL. * video/emu/sdl.c (grub_video_sdl_adapter): Add id. 2010-06-17 Colin Watson * util/i386/pc/grub-setup.c (usage): Pass an extra `program_name' argument to printf. * util/sparc64/ieee1275/grub-setup.c (usage): Likewise. 2010-06-17 Colin Watson * util/i386/pc/grub-setup.c (usage): Fix syntax error. * util/sparc64/ieee1275/grub-setup.c (usage): Likewise. 2010-06-17 Colin Watson * util/i386/pc/grub-setup.c (usage): Warn against running grub-setup directly, and recommend grub-install instead. * util/sparc64/ieee1275/grub-setup.c (usage): Likewise. 2010-06-17 Colin Watson Fix i386-pc prefix handling with nested partitions (Debian bug #585068). Note that the case where the core image is booted using multiboot and relocated from its original location still requires more work. * kern/i386/pc/init.c (make_install_device): If the prefix starts with "(,", fill the boot drive in between those two characters, but expect that a full partition specification including partition map names will follow. * util/i386/pc/grub-setup.c (setup): Unless an explicit prefix was specified, write a prefix without the drive name but including a full partition specification. 2010-06-16 Colin Watson * util/grub-mkconfig.in: Ignore non-option arguments, for compatibility with older versions (before 2010-06-12) which did the same. In particular, this makes it easier to ship an update-grub wrapper which is compatible with that used with GRUB Legacy (Debian bug #586056). 2010-06-14 Grégoire Sutre * Makefile.in (install-local): Use $$file.h2m instead of $$dest.h2m for manual page generation. 2010-06-14 Grégoire Sutre * po/POTFILES: Remove leftover commands/handler.c. 2010-06-14 Colin Watson * util/grub-mkconfig.in: Remove vestige of old argument parsing that left this script non-functional. 2010-06-14 Colin Watson * docs/man/grub-emu.h2m: New file. 2010-06-13 Colin Watson * docs/grub.texi (Commands): Document reduced command set in rescue mode. (cpuid): New section. 2010-06-13 Grégoire Sutre * kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev): Use the new partition naming style. * util/grub-install.in: Adapt sed subtitutions in grub-probe calls. 2010-06-12 BVK Chaitanya Add "-o grub.iso" like cmdline options support. * util/grub-install.in: Improve cmdline option parsing. * util/grub-mkconfig.in: Likewise. * util/grub-mkrescue.in: Likewise. * util/grub-reboot.in: Likewise. * util/grub-set-default.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. 2010-06-12 Colin Watson * .bzrignore: Ignore 41_custom. 2010-06-12 Thomas Schmitt * util/grub-mkrescue.in: Pass unrecognized options to xorriso. 2010-06-12 Colin Watson Avoid false positives in fs.lst, partmap.lst, and video.lst due to prototype declarations. * genmk.rb (PModule::rule): Define GRUB_LST_GENERATOR when generating fs, partmap, and video lists. * include/grub/fs.h (grub_fs_register): Omit prototype if GRUB_LST_GENERATOR is defined. * include/grub/partition.h (grub_partition_map_register): Likewise. * include/grub/video.h (grub_video_register): Likewise. 2010-06-12 Javier Martín * include/grub/types.h: Check for GRUB_CPU_SIZEOF_LONG when appropriate. 2010-06-12 Thomas Schmitt * util/grub-mkrescue.in: Support --xorriso argument. 2010-06-12 Vladimir Serbinenko * util/grub-mkrescue.in: Use -graft-points instead of -pathspecs. Suggested by: Thomas Schmitt. 2010-06-12 Vladimir Serbinenko * util/grub-mkrescue.in: Add --sort-weight arguments to xorriso. Suggested by: Thomas Schmitt. 2010-06-12 Vladimir Serbinenko custom.cfg support. * conf/common.rmk (grub-mkconfig_SCRIPTS): Add 41_custom. * util/grub.d/41_custom.in: New file. 2010-06-12 Colin Watson * util/grub-mkrescue.in (make_image): Remove sh module, which has been merged back into normal. 2010-06-11 Colin Watson * include/grub/efi/uga_draw.h (GRUB_EFI_UGA_GLT_MAX): Rename to ... (GRUB_EFI_UGA_BLT_MAX): ... this (typo fix). 2010-06-11 Colin Watson * Makefile.in (install-local): Include $(srcdir)/docs/man/$$dest.h2m when generating manual pages. * docs/man/grub-bin2h.h2m: New file. * docs/man/grub-editenv.h2m: New file. * docs/man/grub-fstest.h2m: New file. * docs/man/grub-install.h2m: New file. * docs/man/grub-macho2img.h2m: New file. * docs/man/grub-mkconfig.h2m: New file. * docs/man/grub-mkdevicemap.h2m: New file. * docs/man/grub-mkfont.h2m: New file. * docs/man/grub-mkimage.h2m: New file. * docs/man/grub-mkpasswd-pbkdf2.h2m: New file. * docs/man/grub-mkrelpath.h2m: New file. * docs/man/grub-mkrescue.h2m: New file. * docs/man/grub-ofpathname.h2m: New file. * docs/man/grub-pe2elf.h2m: New file. * docs/man/grub-probe.h2m: New file. * docs/man/grub-reboot.h2m: New file. * docs/man/grub-script-check.h2m: New file. * docs/man/grub-set-default.h2m: New file. * docs/man/grub-setup.h2m: New file. 2010-06-10 Vladimir Serbinenko Use FOR_* macros instead of *_iterate whenever possible. * commands/handler.c: Removed. * commands/help.c (grub_cmd_help): Use FOR_COMMANDS. * commands/minicmd.c (grub_mini_cmd_lsmod): Use FOR_DL_MODULES. * conf/any-emu.rmk (kernel_img_SOURCES): Remove kern/handler.c. * conf/common.rmk (script/lexer.c_DEPENDENCIES): Add grub_script.yy.h. (grub_probe_SOURCES): Remove kern/parser.c. (util/grub-script-check.c_DEPENDENCIES): Removed. (grub_script_check_SOURCES): Remove kern/handler.c, kern/parser.c and grub_script_check_init.c. (grub_script_check_init.lst): Removed. (grub_script_check_init.h): Likewise. (grub_script_check_init.c): Likewise. (pkglib_MODULES): Remove handler.mod and sh.mod. (handler_mod_SOURCES): Removed. (handler_mod_CFLAGS): Likewise. (handler_mod_LDFLAGS): Likewise. (normal_mod_SOURCES): Remove normal/handler.c. Add script/main.c, script/script.c, script/execute.c, script/function.c, script/lexer.c, grub_script.tab.c and grub_script.yy.c. * conf/i386-coreboot.rmk (kernel_img_SOURCES): Remove kern/handler.c. * conf/i386-ieee1275.rmk (kernel_img_SOURCES): Likewise. * conf/i386-pc.rmk (kernel_img_SOURCES): Likewise. (grub_setup_SOURCES): Remove kern/parser.c. * conf/i386-qemu.rmk (kernel_img_SOURCES): Remove kern/handler.c. * conf/mips-qemu-mips.rmk (kernel_img_SOURCES): Likewise. * conf/mips-yeeloong.rmk (kernel_img_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (kernel_img_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (kernel_img_SOURCES): Likewise. (grub_setup_SOURCES): Remove kern/parser.c. * conf/x86-efi.rmk (kernel_img_SOURCES): Remove kern/handler.c. * gettext/gettext.c (grub_gettext_delete_list): Don't use grub_list_pop. * include/grub/command.h (grub_command_iterate): Removed. (FOR_COMMANDS): New macro. * include/grub/dl.h (grub_dl): New member next. (grub_dl_iterate): Removed. (grub_dl_head): New variable declaration. (FOR_DL_MODULES): New macro. * include/grub/fs.h: Include list.h. (grub_fs): Make next first element. (grub_fs_list): New variable declaration. (grub_fs_register): Make inline. (grub_fs_unregister): Likewise. (grub_fs_iterate): Removed. (FOR_FILESYSTEMS): New macro. * include/grub/handler.h: Removed. * include/grub/list.h (grub_list_hook_t): Removed. (grub_list_test_t): Likewise. (grub_list_pop): Likewise. (grub_list_iterate): Likewise. (grub_list_insert): Likewise. (FOR_LIST_ELEMENTS): New macro. * include/grub/parser.h (grub_parser_class): Removed. (grub_parser_register): Likewise. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. (grub_register_rescue_parser): Likewise. (grub_rescue_parse_line): New function. * include/grub/partition.h (FOR_PARTITION_MAPS): Use FOR_LIST_ELEMENTS. * include/grub/script_sh.h (grub_script_function_list): New variable declaration. (FOR_SCRIPT_FUNCTIONS): New macro. (grub_script_function_iterate): Removed. (grub_normal_parse_line): New prototype. * include/grub/term.h (FOR_ACTIVE_TERM_INPUTS): Use FOR_LIST_ELEMENTS. (FOR_DISABLED_TERM_INPUTS): Likewise. (FOR_ACTIVE_TERM_OUTPUTS): Likewise. (FOR_DISABLED_TERM_OUTPUTS): Likewise. * include/grub/video.h (grub_video_adapter): Move 'next' to first element. (grub_video_register): Inline. (grub_video_unregister): Likewise. (grub_video_adapter_list): New variable declaration. (grub_video_iterate): Removed. (FOR_VIDEO_ADAPTERS): New macro. * kern/dl.c (grub_dl_list): Removed. All users updated. (grub_dl_iterate): Removed. * kern/fs.c (grub_fs_list): Make global. (grub_fs_register): Removed. (grub_fs_unregister): Likewise. (grub_fs_iterate): Likewise. * kern/handler.c: Removed. * kern/list.c (grub_list_pop): Removed. (grub_list_iterate): Likewise. (grub_list_insert): Likewise. (grub_named_list_find): Use FOR_LIST_ELEMENTS. (grub_prio_list_insert): Don't use grub_list_insert. * kern/main.c (grub_register_rescue_parser): Don't call grub_register_rescue_parser. * kern/parser.c (grub_parser_class): Removed. (grub_parser_execute): Use grub_rescue_parse_line. * kern/rescue_parser.c (grub_rescue_parse_line): Make global. (grub_rescue_parser): Removed. (grub_register_rescue_parser): Likewise. * kern/rescue_reader.c (grub_rescue_run): Use grub_rescue_parse_line. * normal/auth.c (is_authenticated): Use FOR_LIST_ELEMENTS. (grub_auth_check_authentication): Likewise. * normal/completion.c (iterate_command): Removed. (grub_normal_do_completion): Use FOR_COMMANDS. * normal/handler.c: Removed. * normal/main.c (read_config_file): Remove parser changing. (grub_normal_execute): Don't call read_handler_list. (grub_normal_read_line_real): Statically allocate prompt. (grub_cmdline_run): Use grub_normal_parse_line. (GRUB_MOD_FINI): Don't call free_handler_list. * normal/menu_entry.c (run): Likewise. * script/function.c (grub_script_function_list): Make global. (grub_script_function_iterate): Removed. * script/main.c (grub_normal_parse_line): Make global. (grub_sh_parser): Removed. (GRUB_MOD_INIT): Likewise. (GRUB_MOD_FINI): Likewise. * tests/lib/functional_test.c (grub_functional_test): Use FOR_LIST_ELEMENTS. * tests/lib/test.c (free_failures): Don't use grub_list_pop. (grub_test_run): Use FOR_LIST_ELEMENTS. * tests/lib/unit_test.c (main): Likewise. * util/deviceiter.c (grub_util_iterate_devices): Don't use grub_list_pop. * util/grub-fstest.c (grub_term_input_class): Removed. (grub_term_output_class): Likewise. * util/grub-probe.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. * util/grub-script-check.c (main): Don't call grub_init_all and grub_fini_all. * video/video.c (grub_video_adapter_list): Make global. (grub_video_register): Removed. (grub_video_unregister): Likewise. (grub_video_iterate): Likewise. 2010-06-09 Vladimir Serbinenko * docs/grub.texi (Vendor power-on button): Add Asus EeePC 1005PE as reported by Henrique Ferreiro. 2010-06-09 Robert Millan * util/grub.d/10_linux.in: Prefer compressed images over non-compressed ones, when both are available. 2010-06-08 Grégoire Sutre Make --version uniform and avoid hard-coded program name. * util/grub-mkimage.c (main): Use `program_name' instead of hard-coded string. * util/i386/pc/grub-setup.c (main): Likewise. * util/sparc64/ieee1275/grub-setup.c (parse_options): Likewise. * util/grub-install.in: Save the basename of $0 in $self, and use the latter in informational messages. Use the same format for --version as the binary programs. * util/grub-mkconfig.in: Likewise. * util/grub-mkrescue.in: Likewise. * util/grub-reboot.in: Likewise. * util/grub-set-default.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkrescue.in: Likewise. 2010-06-08 Grégoire Sutre * util/i386/pc/grub-setup.c (setup): Use absolute offsets for start of embedding area. Use <= instead of == when checking for non-emptiness. 2010-06-08 Grégoire Sutre * configure.ac: Add `.' to the directories searched for unifont. 2010-06-08 Colin Watson * .bzrignore: Add ascii.bitmaps, ascii.h, grub_script.yy.c, and grub_script.yy.h. 2010-06-08 Colin Watson * docs/grub.texi (History): Expand to cover GRUB 2. (Serial terminal): Refer to `terminal_input' and `terminal_output' commands, not `terminal'. (serial): Likewise. (terminal_input): New section. (terminal_output): New section. (uppermem): New section (stub). (Obtaining and Building GRUB): Refer to Bazaar, not Subversion. 2010-06-08 Colin Watson * docs/grub.texi (Security): Menu entries are unrestricted by default, not restricted to superusers as I had previously thought. Reword to account for this. 2010-06-07 Colin Watson * kern/emu/misc.c (device_mapper_null_log): New function. (grub_device_mapper_supported): New function. * include/grub/emu/misc.h (grub_device_mapper_supported): Add prototype. * kern/emu/hostdisk.c (find_partition_start): Check whether device-mapper is supported before trying to use it. * util/deviceiter.c (grub_util_iterate_devices): Likewise. 2010-06-07 Colin Watson * docs/grub.texi (Naming convention): Use GRUB 2 syntax. (File name syntax): Likewise. (help): --all is no longer supported in GRUB 2. Be more precise about pattern matching. 2010-06-07 Colin Watson * normal/completion.c (grub_normal_do_completion): When completing arguments to "set" and the current word contains an equals sign, skip to after the equals sign before starting completion. 2010-06-07 Colin Watson * fs/i386/pc/pxe.c (grub_pxe_open): Fix parsing of gateway_ip. 2010-06-07 Colin Watson * docs/grub.texi (Network): New section. (Device syntax): The network device is called `(pxe)' in GRUB 2, not `(nd)' as in GRUB Legacy. (pxe_unload): New section. 2010-06-07 Colin Watson * docs/grub.texi (Troubleshooting): `echo' is not usually available in the rescue shell, so recommend using `set' instead. Thanks, Jordan Uggla. 2010-06-07 Colin Watson * docs/grub.texi (Filesystem): Refer to `search' instead of `find'. (password): New section. (password_pbkdf2): New section. (search): New section. (Security): New section. (Troubleshooting): New section, currently very incomplete. (Invoking grub-mkpasswd-pbkdf2): New section. (Internals): New section, currently very incomplete. 2010-06-07 Colin Watson * util/grub.d/00_header.in: Add some more quoting (of "${prev_saved_entry}" and "${boot_once}") needed to make savedefault work again. Reported by: Mario 'BitKoenig' Holbe (Debian bug #584812). 2010-06-07 Colin Watson * util/grub-mkpasswd-pbkdf2.c (main): Rename top-level `c' variable to `count', fixing variable shadowing that broke the -c option. 2010-06-05 Colin Watson * util/grub.d/00_header.in: Quote values assigned to `saved_entry', in case they contain spaces. 2010-06-04 Colin Watson * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Prepend "part_" to partmap module names, in line with grub-install. Reported by: Jindřich Makovička (Debian bug #584426). 2010-06-04 Colin Watson * util/grub-mkimage.c: Make target-related error messages slightly more helpful; -O talks about "format". Explicitly point to the use of -O if no target is specified. Reported by: Didier Raboud (Debian bug #584415). 2010-06-03 Colin Watson * INSTALL: Document several build requirements for optional features (libdevmapper, ncurses, libusb, SDL, FreeType, GNU Unifont). 2010-06-02 Grégoire Sutre * kern/emu/hostdisk.c (convert_system_partition_to_system_disk) [__NetBSD__]: Handle all device names matching /dev/r[a-z]+[0-9][a-z]. (find_partition_start) [__NetBSD__]: Correct error messages for NetBSD. 2010-06-02 Colin Watson * docs/grub.texi (Simple configuration): Fix copy-and-paste typo. Thanks to Jordan Uggla for spotting this. 2010-06-02 Aleš Nesrsta Finally make USB usable. * bus/usb/ohci.c (grub_ohci_reg_t): Add missing values. (GRUB_OHCI_RHUB_PORT_POWER_MASK): New macro. (GRUB_OHCI_RHUB_PORT_ALL_POWERED): Likewise. (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_MASK): Likewise. (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_SHIFT): Likewise. (GRUB_OHCI_REG_FRAME_INTERVAL_FI_SHIFT): Likewise. (GRUB_OHCI_FSMPS): Likewise. (GRUB_OHCI_PERIODIC_START): Likewise. (GRUB_OHCI_FRAME_INTERVAL): Likewise. (GRUB_OHCI_SET_PORT_ENABLE): Likewise. (GRUB_OHCI_CLEAR_PORT_ENABLE): Likewise. (GRUB_OHCI_SET_PORT_RESET): Likewise. (GRUB_OHCI_SET_PORT_RESET_STATUS_CHANGE): Likewise. * bus/usb/ohci.c (grub_ohci_pci_iter): Various important fixups. (grub_ohci_transaction): Likewise. (grub_ohci_transfer): Improve condition detection algorithms. Handle toggle property. Program the transactions correctly. Improve error handling. Various important fixups. (grub_ohci_portstatus): Put register writes in right order. * bus/usb/uhci.c (grub_free_queue): Compute last_trans. (grub_uhci_transfer): Don't show "failed" message on success. * bus/usb/usb.c (grub_usb_set_configuration): Zero-fill whole "toggle" array. (grub_usb_device_initialize): Read first 8 bytes of descriptor to determine its size. * bus/usb/usbtrans.c (grub_usb_control_msg): Use descdev.maxsize0 even before initialization is completed. Use IN direction for empty transfers. Use last_trans and compute toggle. * include/grub/usbtrans.h (grub_usb_transfer): New field last_trans. (GRUB_USB_FEATURE_ENDP_HALT): Correct the value. (GRUB_USB_FEATURE_DEV_REMOTE_WU): Likewise. (GRUB_USB_FEATURE_TEST_MODE): Likewise. * include/grub/usb.h (grub_usb_err_t): New value GRUB_USB_ERR_UNRECOVERABLE. (grub_usb_device): Increase toggle to 256. (grub_usbms_subclass_t): New values GRUB_USBMS_SUBCLASS_RBC, GRUB_USBMS_SUBCLASS_MMC2, GRUB_USBMS_SUBCLASS_UFI and GRUB_USBMS_SUBCLASS_SFF8070. * include/grub/scsicmd.h (grub_scsi_test_unit_ready): New structure. (grub_scsi_inquiry): New member page and alloc_length. (grub_scsi_request_sense): New structure. (grub_scsi_request_sense_data): Likewise. (grub_scsi_read_capacity): New fields logical_block_addr, PMI and control. * disk/scsi.c (grub_scsi_request_sense): New function. (grub_scsi_test_unit_ready): Likewise. (grub_scsi_inquiry): Fill new fields. (grub_scsi_read_capacity): Likewise. (grub_scsi_read10): Add request sense at the end. (grub_scsi_read12): Likewise. (grub_scsi_write10): Likewise. (grub_scsi_write12): Likewise. (grub_scsi_open): Add Test Unit Ready. * disk/usbms.c (grub_usbms_finddevs): Check configcnt. Support additional subclasses. Con't clear halt yet. Activate the proper config. Calculate LUNs correctly. (grub_usbms_transfer): Various important fixups. 2010-06-02 Vladimir Serbinenko * bus/pci.c (grub_pci_iterate) [GRUB_MACHINE_MIPS_YEELOONG]: Skip ghosts. * bus/usb/ohci.c (grub_ohci_portstatus): Handle R/WC correctly. (grub_ohci_fini_hw): New function. (grub_ohci_restore_hw): Likewise. (GRUB_MOD_INIT(ohci)): Register preboot hook. (GRUB_MOD_FINI(ohci)): Shutdown OHCI. * term/usb_keyboard.c: Remove include of grub/machine/console.h. 2010-06-02 Vladimir Serbinenko Dedicated DMA allocations. * bus/pci.c (grub_memalign_dma32): New function (grub_dma_free): Likewise. (grub_dma_get_virt): Likewise. (grub_dma_get_phys): Likewise. * bus/usb/ohci.c (grub_ohci): New members hcca_addr and hcca_chunk. (grub_ohci_pci_iter): Use dma32_alloc. (grub_ohci_transfer): Likewise. * bus/usb/usbtrans.c (grub_usb_control_msg): Likewise. (grub_usb_bulk_readwrite): Likewise. * include/grub/pci.h: Add declarations. 2010-06-02 Vladimir Serbinenko CS5536 support. * bus/cs5536.c: New file. * bus/usb/ohci.c (grub_ohci_pci_iter): Check for CS5536. * conf/i386.rmk (pkglib_MODULES): Add cs5536.mod. (cs5536_mod_SOURCES): New variable. (cs5536_mod_CFLAGS): Likewise. (cs5536_mod_LDFLAGS): Likewise. * conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add cs5536.h and machine/pci.h. (kernel_img_SOURCES): Add bus/cs5536.c. (pkglib_MODULES): Add usb.mod, usbtest.mod, ohci.mod, usbms.mod and usb_keyboard.mod. (usb_mod_SOURCES): New variable. (usb_mod_CFLAGS): New variable. (usb_mod_LDFLAGS): New variable. (usbtest_mod_SOURCES): New variable. (usbtest_mod_CFLAGS): New variable. (usbtest_mod_LDFLAGS): New variable. (ohci_mod_SOURCES): New variable. (ohci_mod_CFLAGS): New variable. (ohci_mod_LDFLAGS): New variable. (usbms_mod_SOURCES): New variable. (usbms_mod_CFLAGS): New variable. (usbms_mod_LDFLAGS): New variable. (usb_keyboard_mod_SOURCES): New variable. (usb_keyboard_mod_CFLAGS): New variable. (usb_keyboard_mod_LDFLAGS): New variable. * include/grub/smbus.h: New file. * include/grub/cs5536.h: New file. 2010-06-02 Colin Watson * util/grub.d/00_header.in: Add safety check to make sure that ${locale_dir} exists before trying to probe it. 2010-06-02 Colin Watson * docs/grub.texi (SCO UnixWare): Remove, at Vladimir's request and per the GNU Coding Standards; this is now too obscure to be worth documenting. (QNX): Likewise. (chainloader): Remove cross-reference to `SCO UnixWare'. 2010-06-02 Colin Watson * docs/grub.texi (Chain-loading): New section. (DOS/Windows): New section, borrowed from GRUB Legacy with details adjusted for GRUB 2. (SCO UnixWare): Likewise. (QNX): Likewise. (chainloader): Add reference to `Block list syntax'. (drivemap): New section. (parttool): New section. 2010-06-02 Colin Watson * docs/grub.texi (GNU GRUB manual): Remove reference to `Invoking the grub shell'. (Installation): Add reference to `Making a GRUB bootable CD-ROM'. (Installing GRUB using grub-install): Remove reference to the grub shell; mention `grub-mkimage' and `grub-setup' instead. (Invoking grub-install): Likewise. (Interface): Add reference to `Menu entry editor'. (serial): Remove `--device' option. 2010-06-02 Colin Watson * docs/grub.texi (Configuration): New section, documenting configuration file generation using grub-mkconfig. I've left a slot for documenting the full shell scripting format but have not yet started on writing that up. (Invoking grub-mkconfig): New section. 2010-06-02 Colin Watson * docs/grub.texi (direntry): Remove grub-terminfo reference. (GNU GRUB manual): Likewise. (General commands): Update description of `terminfo' for GRUB 2. 2010-06-02 Colin Watson * commands/gptsync.c (grub_cmd_gptsync): Fix typos. (GRUB_MOD_INIT): Fix capitalisation. * docs/grub.texi (Command-line and menu entry commands): Document gettext and gptsync commands. 2010-06-02 Colin Watson * conf/any-emu.rmk (kernel_img_SOURCES) [!x86]: Include kern/$(target_cpu)/cache.S even if TARGET_NO_MODULES = yes. 2010-06-01 Colin Watson Add btrfs probing support, currently only in the single-device case. * kern/emu/getroot.c (find_root_device_from_mountinfo): New function. (grub_guess_root_device): Call find_root_device_from_mountinfo before looking in /dev. 2010-05-31 Vladimir Serbinenko * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Use GRUB_DISK_SIZE_UNKNOWN. * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Likewise. 2010-05-31 Jiro SEKIBA * include/grub/disk.h (GRUB_DISK_SIZE_UNKNOWN): New macro. * fs/nilfs.c: Support 2nd super block in case 1st one is accidently corrupted or not synced properly. 2010-05-31 Vladimir Serbinenko * normal/main.c (grub_normal_add_menu_entry): Avoid going out of args. Reported by: Seth Goldberg. 2010-05-31 Vladimir Serbinenko * loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix incorrect addition of dest. Reported by: Seth Goldberg. 2010-05-31 Vladimir Serbinenko * commands/setpci.c (grub_setpci_iter): Fix an incorrect function check. Reported by: Seth Goldberg. 2010-05-31 Vladimir Serbinenko * loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check 64-bit address as signed on MIPS. 2010-05-28 Colin Watson * configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not to the empty string. 2010-05-28 BVK Chaitanya Fix grub-emu issues on NetBSD, with gcc 4.1.3. * conf/any-emu.rmk: Remove unnecessary COMMON_CFLAGS. * include/grub/emu/misc.h (canonicalize_file_name): New Prototype. * kern/misc.c (__enable_execute_stack): Disable on GRUB_MACHINE_EMU. 2010-05-28 Colin Watson Make grub-probe work with symbolic links under /dev/mapper as well as with real block devices. The Linux world seems to be (at best) in transition here, and GRUB shouldn't get caught in the middle. * kern/emu/getroot.c (find_root_device): Follow symbolic links under /dev/mapper. 2010-05-27 Colin Watson * util/grub-script-check.c (main): Ensure defined behaviour on empty input files (in which case exit zero). 2010-05-27 Colin Watson * kern/emu/misc.c (canonicalize_file_name): realpath can still return NULL for various reasons even if it has a maximum-length buffer: for example, there might be a symlink loop, or the path might exceed PATH_MAX. If this happens, return NULL. 2010-05-27 Robert Millan * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Insert partmap module to handle cross-partmap setups. Reported by Orestes Mas. Gràcies! 2010-05-27 Colin Watson * util/grub-mkrescue.in: Initialise override_dir rather than assuming that it's unset or empty in the environment. 2010-05-26 Grégoire Sutre * kern/emu/hostdisk.c (find_partition_start) [__NetBSD__]: Renamed variable index into p_index to suppress a warning with -Wshadow. 2010-05-25 BVK Chaitanya * INSTALL: Added flex >= 2.5.35 requirement. 2010-05-23 Vladimir Serbinenko * commands/usbtest.c (grub_usb_get_string): Properly support UTF-16. 2010-05-23 Vladimir Serbinenko cmostest support. * commands/i386/cmostest.c: New file. * conf/i386-coreboot.rmk (pkglib_MODULES): Add cmostest.mod. (cmostest_mod_SOURCES): New variable. (cmostest_mod_CFLAGS): Likewise. (cmostest_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk: Likewise. * docs/grub.texi (Vendor power-on keys): New section. * util/grub-mkconfig.in: export GRUB_DEFAULT_BUTTON, GRUB_HIDDEN_TIMEOUT_BUTTON, GRUB_TIMEOUT_BUTTON and GRUB_BUTTON_CMOS_ADDRESS. * util/grub.d/00_header.in: Handle powering-on by separate button. 2010-05-23 Vladimir Serbinenko * gfxmenu/gui_list.c (draw_menu): Don't add scrollbar width to padding. Removed drawing_scrollbar argument. All users updated Fixes #29792. Reported by Jo Shields 2010-05-23 Vladimir Serbinenko * gfxmenu/view.c (grub_gfxmenu_draw_terminal_box): Apply only to current buffer since gfxterm handles double repaint. 2010-05-23 Vladimir Serbinenko * gfxmenu/gfxmenu.c (grub_gfxmenu_try): Change viewport on both buffers. * term/gfxterm.c (real_scroll): Likewise. 2010-05-21 Vladimir Serbinenko * kern/i386/pc/mmap.c (grub_machine_mmap_iterate): Zero-fill entry before calling BIOS. 2010-05-21 Vladimir Serbinenko * include/grub/i18n.h: Always enable grub_gettext. 2010-05-21 Vladimir Serbinenko * kern/i386/pc/init.c (make_install_device): Fix a leftover usage of old partition naming style. 2010-05-21 Colin Watson * util/grub-mkconfig.in: Fix handling of -o so that it works when not the first option. 2010-05-20 Colin Watson * util/grub-mkrelpath.c (usage): Remove excess apostrophe. 2010-05-20 Colin Watson * util/misc.c: Move inclusion of to ... * kern/emu/misc.c: ... here. Needed for canonicalize_file_name. 2010-05-20 Grégoire Sutre * kern/emu/hostdisk.c (grub_util_biosdisk_get_grub_dev) [__NetBSD__]: Fix merge error in NetBSD code. (find_partition_start) [__NetBSD__]: Likewise. 2010-05-19 BVK Chaitanya Fix grub-mkrescue usage unit testing. * tests/util/grub-shell.in: Use --grub-mkimage with grub-mkrescue. 2010-05-18 Christian Franke * util/grub.d/10_windows.in: Use path names instead of drive letters to prevent warning from Cygwin 1.7. Add drivemap command to menuentry if needed. 2010-05-18 Justus Winter <4winter@informatik.uni-hamburg.de> * util/grub.d/10_hurd.in: Include all gnumach* kernels, not only gnumach and gnumach.gz. 2010-05-18 Vladimir Serbinenko * include/grub/i18n.h (gettext): Inline instead of using #define. (grub_gettext): Likewise. (_): Likewise. 2010-05-18 Vladimir Serbinenko * Makefile.in (CPPFLAGS): Replace -DGRUB_LIBDIR with -DGRUB_PKGLIBROOTDIR= and prepend @PACKAGE_TARNAME@. All users updated. * util/grub-mkimage.c (image_targets): Add i386-multiboot. (main): Add a slash after pkglibdirroot. 2010-05-18 Vladimir Serbinenko * util/grub-install.in: Add missing "in" keyword. 2010-05-18 Vladimir Serbinenko * util/grub-mkrescue.in: Remove -O i386-pc duplication. Reported by: Seth Goldberg. 2010-05-18 Vladimir Serbinenko * po/POTFILES: Rename util/grub-mkrawimage.c to util/grub-mkimage.c. 2010-05-18 Colin Watson * configure.ac: Check for Linux device-mapper support. * util/hostdisk.c (device_is_mapped): New function. (find_partition_start): New function, partly broken out from linux_find_partition and grub_util_biosdisk_get_grub_dev but with device-mapper support added. (linux_find_partition): Use find_partition_start. (convert_system_partition_to_system_disk): Add `st' argument. Support Linux /dev/mapper/* devices if device-mapper support is available; only DM-RAID devices are understood at present. (find_system_device): Add `st' argument. Pass it to convert_system_partition_to_system_disk. (grub_util_biosdisk_get_grub_dev): Pass stat result to find_system_device and convert_system_partition_to_system_disk. Use find_partition_start. * conf/common.rmk (grub_mkdevicemap_SOURCES): Add kern/env.c, kern/err.c, kern/list.c, kern/misc.c, and kern/emu/mm.c. * util/deviceiter.c [__linux__]: Define MINOR. (grub_util_iterate_devices): Add support for DM-RAID disk devices. * util/mkdevicemap.c (grub_putchar): New function. (grub_getkey): New function. (grub_refresh): New function. (main): Set debug=all if -v -v is used. 2010-05-18 Colin Watson Fix build with non-GNU libcs. * util/misc.c (canonicalize_file_name): Move to ... * kern/emu/misc.c (canonicalize_file_name): ... here. Needed by grub_make_system_path_relative_to_its_root. 2010-05-18 Colin Watson * util/grub-mkrescue.in: Sync up with grub-install in terms of how we handle finding grub-mkimage. Default to finding grub-mkimage in ${bindir} with program_transform_name applied, and provide a --grub-mkimage option to override this. 2010-05-17 Vladimir Serbinenko Remove grub-mkisofs. * conf/common.rmk (bin_UTILITIES): Remove grub-mkisofs. (grub_mkisofs_SOURCES): Removed. (grub_mkisofs_CFLAGS): Removed. * util/mkisofs/defaults.h: Removed. * util/mkisofs/eltorito.c: Likewise. * util/mkisofs/exclude.h: Likewise. * util/mkisofs/hash.c: Likewise. * util/mkisofs/include/: Likewise. * util/mkisofs/include/fctldefs.h: Likewise. * util/mkisofs/include/mconfig.h: Likewise. * util/mkisofs/include/prototyp.h: Likewise. * util/mkisofs/include/statdefs.h: Likewise. * util/mkisofs/iso9660.h: Likewise. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/match.c: Likewise. * util/mkisofs/match.h: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/mkisofs.h: Likewise. * util/mkisofs/msdos_partition.h: Likewise. * util/mkisofs/multi.c: Likewise. * util/mkisofs/name.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. 2010-05-17 Vladimir Serbinenko Unify grub-mkimage accross platforms. * Makefile.in (CPPFLAGS): Set GRUB_LIBDIR to $(libdir). * conf/common.rmk (bin_UTILITIES): Removed grub-mkelfimage. (grub_mkelfimage_SOURCES): Removed. (util/elf/grub-mkimage.c_DEPENDENCIES): Renamed to .. (util/grub-mkimage.c_DEPENDENCIES): .. this. (bin_UTILITIES): Add grub-mkimage. (grub_mkimage_SOURCES): New variable. (kernel_img_HEADERS): Remove machine/kernel.h. * conf/i386-pc.rmk (pkglib_IMAGES): Remove kernel.img. (pkglib_PROGRAMS): Add kernel.img. (kernel_img_HEADERS): Add machine/kernel.h. (kernel_img_FORMAT): Removed. (bin_UTILITIES): Remove grub-mkimage. (grub_mkimage_SOURCES): Removed. (grub_mkimage_CFLAGS): Likewise. (util/grub-mkrawimage.c_DEPENDENCIES): Likewise. * conf/i386-qemu.rmk (pkglib_IMAGES): Remove kernel.img. (pkglib_PROGRAMS): Add kernel.img. (bin_UTILITIES): Remove grub-mkimage. (grub_mkimage_SOURCES): Removed. (grub_mkimage_CFLAGS): Likewise. (util/grub-mkrawimage.c_DEPENDENCIES): Likewise. * conf/mips-qemu-mips.rmk (pkglib_IMAGES): Remove kernel.img. (pkglib_PROGRAMS): Add kernel.img. * conf/mips-yeeloong.rmk (pkglib_IMAGES): Remove kernel.img. (pkglib_PROGRAMS): Add kernel.img. * conf/mips.rmk (bin_UTILITIES): Remove grub-mkimage. (grub_mkimage_SOURCES): Removed. (grub_mkimage_CFLAGS): Likewise. (util/grub-mkrawimage.c_DEPENDENCIES): Likewise. * conf/sparc64-ieee1275.rmk (pkglib_IMAGES): Remove kernel.img. (pkglib_PROGRAMS): Add kernel.img. (bin_UTILITIES): Remove grub-mkimage. (grub_mkimage_SOURCES): Removed. (grub_mkimage_CFLAGS): Likewise. (util/grub-mkrawimage.c_DEPENDENCIES): Likewise. * conf/x86-efi.rmk (bin_UTILITIES): Remove grub-mkimage. (grub_mkimage_SOURCES): Removed. (grub_mkimage_CFLAGS): Likewise. (util/grub-mkrawimage.c_DEPENDENCIES): Likewise. * configure.ac (machine_CFLAGS): Add "-DMACHINE". * include/grub/efi/pe32.h (grub_pe32_optional_header): Split into ... (grub_pe32_optional_header): ... this. (grub_pe64_optional_header): ... and this. All users updated. (GRUB_PE32_PE32_MAGIC): Split into .. (GRUB_PE32_PE32_MAGIC): .. this. (GRUB_PE32_PE64_MAGIC): .. and this. (GRUB_PE32_SIGNATURE_SIZE): New definition. * include/grub/elf.h (PT_GNU_STACK): New definition. * include/grub/i386/coreboot/kernel.h: Merged into include/grub/offsets.h. All users updated. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/kernel.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/qemu/boot.h: Likewise. * include/grub/mips/kernel.h: Likewise. * include/grub/mips/qemu-mips/kernel.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/kernel.h: Likewise. * include/grub/sparc64/ieee1275/boot.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/kernel.h: Likewise. * include/grub/x86_64/efi/kernel.h: Likewise. * include/grub/x86_64/kernel.h: Likewise. * include/grub/offsets.h: New file. * include/grub/kernel.h (grub_module_info): Split into ... (grub_module_info32): ... this. (grub_module_info64): ... and this. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_KERNEL_SEG): Moved from here ... * include/grub/offsets.h (GRUB_BOOT_I386_PC_KERNEL_SEG): ... here. (grub_boot_blocklist): Moved from here ... * include/grub/offsets.h (grub_pc_bios_boot_blocklist): ... here. * include/grub/i386/pc/memory.h (GRUB_MEMORY_MACHINE_UPPER): Moved from here. * include/grub/offsets.h (GRUB_MEMORY_I386_PC_UPPER): .. here. * include/grub/types.h (grub_target_to_host16): Removed. (grub_target_to_host32): Likewise. (grub_target_to_host64): Likewise. (grub_host_to_target16): Likewise. (grub_host_to_target32): Likewise. (grub_host_to_target64): Likewise. (grub_host_to_target_addr): Likewise. Support grub-mkrescue for efi, coreboot and qemu. * conf/x86-efi.rmk (bin_SCRIPTS): Add grub-mkrescue. * kern/efi/init.c (grub_efi_set_prefix): Handle baked in prefix. * util/elf/grub-mkimage.c: Merged into util/grub-mkimage.c. * util/grub-mkrawimage.c: Moved from here ... * util/grub-mkimage.c: ... here. All users updated. (ALIGN_ADDR): Use image_target. (TARGET_NO_FIELD): New const. (image_target_desc): New type. (image_targets): New array. (grub_target_to_host64): Use image_target. (grub_target_to_host32): Likewise. (grub_target_to_host16): Likewise. (grub_host_to_target64): Likewise. (grub_host_to_target32): Likewise. (grub_host_to_target16): Likewise. (grub_host_to_target_addr): Likewise. (generate_image): Handle multiimage. (main): Require -O parameter. All users updated. * util/grub-mkimagexx.c: New file. Based on util/grub-mkrawimage.c and util/efi/grub-mkimage.c * util/grub-mkrescue.in: Handle coreboot, efi and qemu. New option --rom-directory. Use xorriso. * util/i386/efi/grub-mkimage.c: Removed. * util/i386/pc/grub-setup.c (grub_target_to_host16): New definition. (grub_target_to_host32): Likewise. (grub_target_to_host64): Likewise. (grub_host_to_target16): Likewise. (grub_host_to_target32): Likewise. (grub_host_to_target64): Likewise. * util/sparc64/ieee1275/grub-setup.c (grub_target_to_host16): New definition. (grub_target_to_host32): Likewise. (grub_target_to_host64): Likewise. (grub_host_to_target16): Likewise. (grub_host_to_target32): Likewise. (grub_host_to_target64): Likewise. 2010-05-17 BVK Chaitanya Source tree is reorganized for emu build. * include/grub/util/console.h: Move from here... * include/grub/emu/console.h: ...to here. * include/grub/util/getroot.h: Move from here... * include/grub/emu/getroot.h: ...to here. * include/grub/util/hostdisk.h: Move from here... * include/grub/emu/hostdisk.h: ...to here. * util/console.c: Move from here... * kern/emu/console.c: ...to here. * util/getroot.c: Move from here... * kern/emu/getroot.c: ...to here. * util/grub-emu.c: Move from here... * kern/emu/main.c: ...to here. * util/hostdisk.c: Move from here... * kern/emu/hostdisk.c: ...to here. * util/hostfs.c: Move from here... * kern/emu/hostfs.c: ...to here. * util/mm.c: Move from here... * kern/emu/mm.c: ...to here. * util/pci.c: Move from here... * bus/emu/pci.c: ...to here. * util/sdl.c: Move from here... * video/emu/sdl.c: ...to here. * util/time.c: Move from here... * kern/emu/time.c: ...to here. * util/usb.c: Move from here... * bus/usb/emu/usb.c: ...to here. * include/grub/emu/misc.h: New header for grub-emu functions. * kern/emu/misc.c: grub-emu functions separated from util/misc.c * conf/any-emu.rmk: Rule updates for above renames. * conf/common.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/i386-qemu.rmk: Likewise. * conf/mips.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86-efi.rmk: Likewise. * disk/lvm.h: #include updates for above renames. * util/grub-mkrelpath.c: Likewise. * util/grub-probe.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. * kern/emu/console.c: Likewise. * kern/emu/getroot.c: Likewise. * kern/emu/hostdisk.c: Likewise. * kern/emu/main.c: Likewise. (was grub-emu.c earlier) * include/grub/dl.h: Remove grub_dl_{ref,unref}. * include/grub/util/misc.h: Move grub-emu functions to emu/misc.h. * kern/dl.c: Handle null mod in grub_dl_{ref,unref}. * util/misc.c: Remove grub-emu functions. 2010-05-13 Vladimir Serbinenko Fix gfxmenu crash. Reported by: Thorsten Grützmacher. * gfxmenu/gui_circular_progress.c (circprog_destroy): Unregister timeout hook. (circprog_set_property): Register and unregister timeout hook. * gfxmenu/gui_label.c (grub_gui_label): New fields template and value. (label_destroy): Free template. and unregister hook. (label_set_state): New function. (label_set_property): Handle templates and hooks. * gfxmenu/gui_progress_bar.c (progress_bar_destroy): Unregister timeout hook. (progress_bar_set_property): Register and unregister timeout hook. * gfxmenu/view.c (TIMEOUT_COMPONENT_ID): Move from here ... * include/grub/gui.h (GRUB_GFXMENU_TIMEOUT_COMPONENT_ID): ...to here * gfxmenu/view.c (grub_gfxmenu_timeout_notifications): New variable. (update_timeout_visit): Removed. (update_timeouts): New function. (redraw_timeouts): Likewise. (grub_gfxmenu_print_timeout): Use update_timeouts and redraw_timeouts. (grub_gfxmenu_clear_timeout): Likewise. * include/grub/gui.h (grub_gfxmenu_set_state_t): New type. (grub_gfxmenu_timeout_notify): Likewise. (grub_gfxmenu_timeout_notifications): New external variable. (grub_gfxmenu_timeout_register): New function. (grub_gfxmenu_timeout_unregister): Likewise. 2010-05-09 Vladimir Serbinenko Transform (broken) vga terminal into (working) vga video driver. * conf/i386-pc.rmk (vga_mod_SOURCES): Change term/i386/pc/vga.c to video/i386/pc/vga.c. * include/grub/video.h (grub_video_driver_id): Add GRUB_VIDEO_DRIVER_VGA. * term/i386/pc/vga.c: Renamed to ... * video/i386/pc/vga.c: ...this (DEBUG_VGA): Removed. (CHAR_WIDTH): Likewise. (CHAR_HEIGHT): Likewise. (TEXT_WIDTH): Likewise. (TEXT_HEIGHT): Likewise. (DEFAULT_FG_COLOR): Likewise. (DEFAULT_BG_COLOR): Likewise. (colored_char): Likewise. (xpos): Likewise. (ypos): Likewise. (cursor_state): Likewise. (fg_color): Likewise. (bg_color): Likewise. (text_buf): Likewise. (page): Likewise. (font): Likewise. (framebuffer): New variable. (set_read_map): Disabled. (setup): New variable. (is_target): Likewise. (grub_vga_mod_init): Likewise. (grub_vga_mod_fini): Likewise. (check_vga_mem): Likewise. (write_char): Likewise. (write_cursor): Likewise. (scroll_up): Likewise. (grub_vga_putchar): Likewise. (grub_vga_getcharwidth): Likewise. (grub_vga_getwh): Likewise. (grub_vga_getxy): Likewise. (grub_vga_gotoxy): Likewise. (grub_vga_cls): Likewise. (grub_vga_setcolorstate): Likewise. (grub_vga_setcursor): Likewise. (grub_video_vga_init): New function. (grub_video_vga_setup): Likewise. (grub_video_vga_fini): Likewise. (update_target): Likewise. (grub_video_vga_blit_bitmap): Likewise. (grub_video_vga_blit_render_target): Likewise. (grub_video_vga_set_active_render_target): Likewise. (grub_video_vga_get_active_render_target): Likewise. (grub_video_vga_swap_buffers): Likewise. (grub_video_vga_set_palette): Likewise. (grub_video_vga_get_info_and_fini): Likewise. (grub_vga_term): Removed. (grub_video_vga_adapter): New variable. (GRUB_MOD_INIT): Register a video driver instead of terminal. (GRUB_MOD_FINI): Unrefister a video driver instead of terminal. 2010-05-05 Vladimir Serbinenko * video/readers/jpeg.c: Indented. 2010-05-05 Vladimir Serbinenko Various jpeg cleanups. * video/readers/jpeg.c (grub_jpeg_get_huff_code): Use ARRAY_SIZE. (grub_jpeg_decode_quan_table): Use sizeof. (grub_jpeg_decode_du): Use ARRAY_SIZE. 2010-05-05 Peter Hurley (tiny change) * video/readers/jpeg.c (grub_jpeg_decode_huff_table): Loop over all tables. Ignore non-last ac bit. (grub_jpeg_decode_quan_table): Likewise. 2010-05-05 Vladimir Serbinenko * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): New value GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM. * kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM on qemu. * kern/ieee1275/init.c (grub_claim_heap): Don0t allocate below 1.5MiB if GRUB_IEEE1275_FLAG_NO_PRE1_5M_CLAIM is set. 2010-05-05 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_getkey): Fix off-by-one error. 2010-05-05 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Support C0 code. 2010-05-03 Vladimir Serbinenko * commands/parttool.c (grub_cmd_parttool): Fix #if !GRUB_NO_MODULES condition. 2010-05-03 Vladimir Serbinenko * kern/mm.c (grub_real_malloc): Put magic and size assignment in common part. 2010-05-03 Vladimir Serbinenko * kern/mm.c (grub_mm_init_region): Check for region size after aligning pointers. 2010-05-03 Vladimir Serbinenko * kern/mm.c (grub_real_malloc): Fix size calculation when extra == 0. 2010-05-01 Christian Franke * util/grub-mkconfig_lib.in (make_system_path_relative_to_its_root): Remove broken Cygwin path conversion. * util/misc.c: [__CYGWIN__] Add include and define. [__CYGWIN__] (get_win32_path): Copy function from getroot.c, modify for Cygwin 1.7. (make_system_path_relative_to_its_root): Simplify loop, replace early return by break. [__CYGWIN__] Add conversion to win32 path. Include "/" case in trailing slash removal. 2010-05-01 Vladimir Serbinenko * kern/main.c (grub_load_config): Fix copy-pasted comment. Reported by: Seth Goldberg 2010-05-01 Vladimir Serbinenko * commands/help.c (grub_cmd_help): Fix a typo. Reported by: Seth Goldberg 2010-05-01 Vladimir Serbinenko * commands/hashsum.c (GRUB_MOD_INIT): Remove duplication of command name and add N_. * commands/i386/pc/drivemap.c (GRUB_MOD_INIT): Likewise. * commands/iorw.c (GRUB_MOD_INIT): Likewise. * commands/password_pbkdf2.c (GRUB_MOD_INIT): Likewise. * commands/regexp.c (GRUB_MOD_INIT): Likewise. * commands/setpci.c (GRUB_MOD_INIT): Likewise. * commands/terminal.c (GRUB_MOD_INIT): Likewise. * efiemu/main.c (GRUB_MOD_INIT): Likewise. * font/font_cmd.c (GRUB_MOD_INIT): Likewise. * kern/corecmd.c (GRUB_MOD_INIT): Likewise. * mmap/mmap.c (GRUB_MOD_INIT): Likewise. * normal/context.c (GRUB_MOD_INIT): Likewise. * normal/main.c (GRUB_MOD_INIT): Likewise. * term/gfxterm.c (GRUB_MOD_INIT): Likewise. * term/serial.c (GRUB_MOD_INIT): Likewise. * term/terminfo.c (GRUB_MOD_INIT): Likewise. 2010-05-01 Vladimir Serbinenko * kern/mm.c (grub_real_malloc): Satisfy alignment requirement when extra == 0. 2010-05-01 Vladimir Serbinenko * commands/iorw.c: New file. * conf/i386.rmk (pkglib_MODULES): Add iorw.mod. (iorw_mod_SOURCES): New variable. (iorw_mod_CFLAGS): Likewise. (iorw_mod_LDFLAGS): Likewise. 2010-05-01 Vladimir Serbinenko Hotkey support * include/grub/menu.h (grub_menu_entry): New field 'hotkey'. * normal/main.c (hotkey_aliases): New variable. (grub_normal_add_menu_entry): Parse "--hotkey". * normal/menu_text.c (run_menu): Handle hotkeys. 2010-05-01 Vladimir Serbinenko * kern/i386/coreboot/init.c (grub_machine_init): Call grub_machine_mmap_init on qemu. 2010-05-01 Vladimir Serbinenko * boot/i386/qemu/boot.S: Add a missing .code16. 2010-05-01 Vladimir Serbinenko Use LBIO on coreboot. * conf/i386-coreboot.rmk (kernel_img_SOURCES): Change kern/i386/multiboot_mmap.c to kern/i386/coreboot/mmap.c. * include/grub/i386/coreboot/memory.h (GRUB_LINUXBIOS_MEMBER_LINK): New declaration. * kern/i386/coreboot/init.c (grub_machine_init): Don't call grub_machine_mmap_init on coreboot. * kern/i386/coreboot/mmap.c (grub_linuxbios_table_iterate): Handle GRUB_LINUXBIOS_MEMBER_LINK. (grub_machine_mmap_iterate): Fix declaration. * kern/i386/coreboot/startup.S: Don't save mbi location on coreboot. 2010-05-01 Vladimir Serbinenko Split coreboot and multiboot ports. * conf/i386-multiboot.rmk: New file. * configure.ac: Add multiboot port. * include/grub/i386/multiboot/boot.h: New file. * include/grub/i386/multiboot/console.h: Likewise. * include/grub/i386/multiboot/init.h: Likewise. * include/grub/i386/multiboot/kernel.h: Likewise. * include/grub/i386/multiboot/loader.h: Likewise. * include/grub/i386/multiboot/memory.h: Likewise. * include/grub/i386/multiboot/serial.h: Likewise. * include/grub/i386/multiboot/time.h: Likewise. * include/grub/multiboot.h: Add GRUB_MACHINE_MULTIBOOT to ifdef. * loader/multiboot.c: Likewise. * loader/multiboot_mbi2.c: Likewise. * util/grub-mkrescue.in: Generate multiboot rescue. 2010-05-01 Vladimir Serbinenko * kern/parser.c (grub_parser_execute): Cope with read-only config. 2010-05-01 Vladimir Serbinenko Merge handling of input and output terminals. Fix a hang. * commands/terminal.c (abstract_terminal): New struct. (handle_command): New function. Based on grub_cmd_terminal_input. (grub_cmd_terminal_input): Use handle_command. (grub_cmd_terminal_output): Use handle_command. 2010-05-01 BVK Chaitanya Fix comment handling. * tests/grub_script_comments.in: New testcase. * conf/tests.rmk: Rules for new testcase. * script/yylex.l: Updated flex rules. 2010-04-28 Samuel Thibault * docs/grub.texi (play): Document that zero pitches produce rests. * commands/i386/pc/play.c (grub_cmd_play): Call 'grub_file_open' only if argc is 1. 2010-04-27 Vladimir Serbinenko * conf/x86-efi.rmk (linux_mod_SOURCES): Write explicitly to avoid autogen issues. 2010-04-26 Christian Franke * include/grub/util/getroot.h (grub_get_prefix): Remove prototype. * util/getroot.c [__CYGWIN__] (get_win32_path): Remove function. (grub_get_prefix): Remove function. * util/grub-emu.c (main): Replace grub_get_prefix () call by make_system_path_relative_to_its_root (). * util/sparc64/ieee1275/grub-setup.c (main): Likewise. 2010-04-24 Christian Franke * Makefile.in (TARGET_LDFLAGS): Add -static-libgcc. (kernel_img_LDFLAGS): Remove -static-libgcc. 2010-04-24 Christian Franke * configure.ac: Do not CHECK_BSS_START_SYMBOL and CHECK_END_SYMBOL if grub-emu is built. Unset TARGET_OBJ2ELF if grub-emu is built without module support. 2010-04-24 Jiro SEKIBA Nilfs2 support. * conf/common.rmk (grub_probe_SOURCES): Add fs/nilfs2.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Add nilfs2.mod. (nilfs2_mod_SOURCES): New variable. (nilfs2_mod_CFLAGS): Likewise. (nilfs2_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/nilfs2.c. * conf/sparc64-ieee1275.rmk (grub_setup_SOURCES): Add fs/nilfs2.c. * fs/nilfs2.c: New file. 2010-04-21 Vladimir Serbinenko * configure.ac: Refuse to compile for x86_64-efi is mcmodel=large is not supported. 2010-04-19 Grégoire Sutre Add grub-mkconfig support for NetBSD. * util/grub.d/10_netbsd.in: grub-mkconfig helper script for NetBSD. * util/grub-mkconfig.in: export new NetBSD specific variables. * po/POTFILES-shell: added 10_netbsd.in. * util/grub-mkconfig_lib.in: check for gettext binary, default to echo. 2010-04-19 BVK Chaitanya Fix emu build with grub-emu-pci and grub-emu-modules. * include/grub/util/misc.h: Export grub_util_{info,error,warn} functions. * include/grub/libpciaccess.h: New file. * conf/any-emu.rmk: Update kernel headers for emu build. 2010-04-19 Vladimir Serbinenko * fs/udf.c (grub_udf_iterate_dir): Silence a spurious warning. 2010-04-19 Vladimir Serbinenko * fs/udf.c (grub_udf_iterate_dir): Decode the Unicode filenames. 2010-04-18 Vladimir Serbinenko * boot/sparc64/ieee1275/boot.S: Various size-reducing changes. Retrieve chosen/bootpath if bootpath isn't hardcoded. * conf/sparc64-ieee1275.rmk (grub_setup_SOURCES): Add util/ieee1275/ofpath.c. * util/sparc64/ieee1275/grub-ofpathname.c: Renamed to ... * util/ieee1275/grub-ofpathname.c: ... this. All users updated * include/grub/sparc64/ieee1275/boot.h (GRUB_BOOT_MACHINE_KERNEL_SECTOR): Renamed to ... (GRUB_BOOT_MACHINE_KERNEL_BYTE): ...this. Moved 8 bytes lower. * util/hostdisk.c (grub_util_biosdisk_get_osdev): New function. * util/ieee1275/ofpath.c (grub_util_devname_to_ofpath): Make argument const char *. * util/sparc64/ieee1275/grub-setup.c (compute_dest_ofpath): Removed. (setup): Use KERNEL_BYTE instead of KERNEL_SECTOR. Use grub_util_devname_to_ofpath. Zero-fill boot_devpath on same disk install. 2010-04-18 Grégoire Sutre * util/grub-mkconfig.in: Corrected two == equality tests. Set grub_prefix as in grub-install for NetBSD and OpenBSD. * configure.ac: All definitions and uses of TARGET_IMG_LDFLAGS_AC now expect a number appended to it. * acinclude.m4 (grub_PROG_OBJCOPY_ABSOLUTE): ${TARGET_IMG_LDFLAGS_AC} expects a number appended to it. 2010-04-18 Vladimir Serbinenko * po/POTFILES: Renamed multiboot_loader.c to multiboot.c 2010-04-18 Vladimir Serbinenko * util/hostdisk.c (make_device_name): Change to new partition naming. 2010-04-17 Vladimir Serbinenko * disk/lvm.c (grub_lvm_memberlist): Issue an error if pv->disk = 0. 2010-04-17 Christian Franke * Makefile.in: Add missing localedir setting. 2010-04-14 Colin Watson Restore TEXTDOMAINDIR correction from r1889, lost apparently by mistake in r2156. Noticed by Anthony Fok. * util/grub.d/10_kfreebsd.in (TEXTDOMAINDIR): Set to lowercased @localedir@. * util/grub.d/10_linux.in (TEXTDOMAINDIR): Likewise. 2010-04-14 BVK Chaitanya Fix a spurious, uninitialized variable warning. * loader/i386/bsdXX.c (grub_freebsd_load_elfmodule_obj): Initialize variable, shdr. (grub_freebsd_load_elfmodule): Likewise. (grub_freebsd_load_elf_meta): Likewise. 2010-04-13 BVK Chaitanya Fix for escaped dollar in double quoted strings. * script/yylex.l: Updated flex rules. * conf/tests.rmk: Rule for new testcase. * tests/grub_script_dollar.in: New testcase. 2010-04-13 Carles Pina i Estany 2010-04-13 Colin Watson Enclose all translated strings in grub.cfg in single quotes, and escape them appropriately (Ubuntu bug #552921). * util/grub-mkconfig_lib.in (gettext_quoted): New function. * util/grub.d/10_hurd.in: Use it. * util/grub.d/10_kfreebsd.in (kfreebsd_entry): Likewise. * util/grub.d/10_linux.in (linux_entry): Likewise. 2010-04-11 Vladimir Serbinenko Fix cygwin compilation. * configure.ac: Define NEED_REGISTER_FRAME_INFO. * include/grub/misc.h (__register_frame_info) [NEED_REGISTER_FRAME_INFO && !UTIL]: New export. (__deregister_frame_info) [NEED_REGISTER_FRAME_INFO && !UTIL]: Likewise. * kern/misc.c (__register_frame_info) [NEED_REGISTER_FRAME_INFO && !UTIL]: New empty function. (__deregister_frame_info) [NEED_REGISTER_FRAME_INFO && !UTIL]: Likewise. 2010-04-11 Vladimir Serbinenko * configure.ac: Respect grub_cv_asm_uscore when defining dummy symbols. 2010-04-11 Vladimir Serbinenko Unify libgcc processing. * Makefile.in (kernel_img_LDFLAGS): New variable. * conf/common.rmk (kernel_img_HEADERS): Add libgcc.h. * conf/i386-coreboot.rmk (kernel_img_LDFLAGS): Append instead of overwriting. * conf/i386-ieee1275.rmk (kernel_img_LDFLAGS): Likewise. * conf/i386-pc.rmk (kernel_img_LDFLAGS): Likewise. * conf/i386-qemu.rmk (kernel_img_LDFLAGS): Likewise. * conf/x86-efi.rmk (kernel_img_LDFLAGS): Likewise. * conf/mips-qemu-mips.rmk (kernel_img_LDFLAGS): Append instead of overwriting. Remove -lgcc and -static-libgcc * conf/mips-yeeloong.rmk (kernel_img_LDFLAGS): Likewise. * conf/mips.rmk (kernel_img_HEADERS): Remove cpu/libgcc.h * conf/powerpc-ieee1275.rmk (kernel_img_HEADERS): Remove cpu/libgcc.h (kernel_img_LDFLAGS): Append instead of overwriting. Remove -lgcc and -static-libgcc * conf/sparc64-ieee1275.rmk: Likewise. * include/grub/powerpc/libgcc.h: Move to ... * include/grub/libgcc.h: .. this. * include/grub/libgcc.h: Don't export most of the function on x86. (__bswapsi2): New export. (__bswapdi2): Likewise. * include/grub/mips/libgcc.h: Removed. * include/grub/sparc64/libgcc.h: Likewise. 2010-04-10 Vladimir Serbinenko * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): Remove disk_info_msg (conflicts with gettexting into languages with cases). 2010-04-10 Grégoire Sutre Add grub-probe support for NetBSD. * util/getroot.c (find_root_device): Convert block device to character device on NetBSD. * util/probe.c (probe): Require character device on NetBSD. * util/hostdisk.c: NetBSD specific headers. (configure_device_driver): new function to tune device driver parameters (currently only for NetBSD floppy driver). (grub_util_biosdisk_open): NetBSD specific code (get disk size via disklabel ioctl). (open_device): call configure_device_driver on NetBSD. (convert_system_partition_to_system_disk): NetBSD specific code. (device_is_wholedisk): Likewise. (grub_util_biosdisk_get_grub_dev): Likewise. (make_device_name): Fixed a typo in bsd_part_str. * configure.ac: check for opendisk() and getrawpartition() on NetBSD and set LIBUTIL. * Makefile.in: add LIBUTIL to LIBS. 2010-04-10 BVK Chaitanya Documentation fix. * util/grub-script-check.c: Better help message. 2010-04-10 BVK Chaitanya Fix FreeBSD build. * configure.ac: Flex version check. * conf/common.rmk: Add -Wno-error to sh.mod. * script/yylex.l: Remove all #pragma. 2010-04-10 Vladimir Serbinenko * include/grub/util/misc.h (canonicalise_file_name): Add missing prototype. Reported by: Seth Goldberg. 2010-04-10 Vladimir Serbinenko * loader/multiboot.c (GRUB_MOD_INIT) [GRUB_USE_MULTIBOOT2]: Rename "module" to "module2". Reported by: Seth Goldberg. 2010-04-10 Vladimir Serbinenko * include/grub/efi/memory.h (grub_machine_mmap_iterate): Remove EXPORT_FUNC. Reported by: Seth Goldberg. 2010-04-10 Vladimir Serbinenko * lib/posix_wrap/locale.h: Add missing file. Reported by: Seth Goldberg. 2010-04-10 Vladimir Serbinenko grub-emu module load support. * Makefile.in (TARGET_NO_MODULES): New variable. All users of NO_DYNAMIC_MODULES switched to this. (TARGET_CFLAGS): Add -DGRUB_TARGET_NO_MODULES=1 if applicable. (CFLAGS): Likewise. * conf/any-emu.rmk: Generate symlist. (kernel_img_HEADERS): Add util/datetime.h. (kernel_img_HEADERS) [sdl]: Add sdl.h. (kernel_img_HEADERS) [libusb]: Add libusb.h. (kernel_img_SOURCES) [TARGET_NO_MODULES = no && !x86]: Add kern/$(target_cpu)/cache.S. * configure.ac (grub-emu-modules): New option. * genmk.rb: Handle multiple source lists. * include/grub/sdl.h: New file. * include/grub/libusb.h: Likewise. * util/grub-emu.c (main): Hanle (host) root. * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): Error with GRUB_ERR_UNKNOWN_DEVICE. * util/misc.c: Move mm functions to ... * util/mm.c: ... here. All users updated. 2010-04-09 Vladimir Serbinenko * Makefile.in (RMKFILES): Search in srcdir and not current directory. (MAINTAINER_CLEANFILES): Don't add $(srcdir) to MKFILES. Add few missing files. (maintainer-clean): Remove libgcrypt-grub. 2010-04-09 Vladimir Serbinenko * term/efi/console.c (grub_console_checkkey): Macroify key contants. 2010-04-09 EFI Coder * normal/menu_text.c (print_message): Clean up the message and show the Fn information when on EFI * term/efi/console.c (grub_console_checkkey): Add F4 support. 2010-04-09 Vladimir Serbinenko * normal/autofs.c (read_fs_list): New parameter 'prefix'. All users updated. * normal/crypto.c (read_crypto_list): Likewise. * normal/dyncmd.c (read_command_list): Likewise. * normal/term.c (read_terminal_list): Likewise. * normal/main.c (read_lists): Use explicit prefix. (read_lists_hook): Use read_lists. (grub_normal_execute): Likewise. 2010-04-09 Vladimir Serbinenko * util/grub-mkrescue.in: Fix incorrect path in coreboot part. Reported by: Thomas Schmitt. Add -no-emul-boot to grub-mkisofs parameters. 2010-04-09 Vladimir Serbinenko * font/font.c: Indented. 2010-04-09 BVK Chaitanya Elif support to GRUB script (by Deepak Vankadaru). * tests/grub_script_if.in: New testcase. * conf/tests.rmk: Rule for new testcase. * script/parser.y: Grammar rules for elif. 2010-04-09 BVK Chaitanya While and until loops support to GRUB script. * include/grub/script_sh.h (grub_script_cmdwhile): New struct. (grub_script_create_cmdwhile): New function prototype. (grub_script_execute_cmdwhile): New function prototype. * script/execute.c (grub_script_execute_cmdwhile): New function. * script/parser.y (command): New commands. (whilecmd): New grammar rule. (untilcmd): New grammar rule. * script/script.c (grub_script_create_cmdwhile): New function. * util/grub-script-check.c (grub_script_execute_cmdwhile): New function. * tests/grub_script_while1.in: New testcase. * conf/tests.rmk: Rule for new testcase. 2010-04-09 Vladimir Serbinenko * util/grub.d/00_header.in: Add few missing quotes. Recognise *.jpeg as *.jpg. 2010-04-09 Mario Vazquez GRUB_BACKGROUND support. * util/grub-mkconfig.in: Export GRUB_BACKGROUND. * util/grub.d/00_header.in: Parse GRUB_BACKGROUND. 2010-04-09 Vladimir Serbinenko Load fonts and modules for gfxmenu in grub-mkconfig. Idea by: Mario Vazquez * util/grub.d/00_header.in: Load pf2 and image modules. 2010-04-09 Vladimir Serbinenko grub-mkconfig multiple terminal support. * util/grub-mkconfig.in: Handle multiple terminals correctly. * util/grub.d/00_header.in: Likewise. 2010-04-09 Vladimir Serbinenko * Makefile.in: Specify files explicitly instead of using $< and $@ since we use cd $(srcdir). 2010-04-08 Colin Watson * util/grub.d/10_linux.in: Only use the first word of GRUB_DISTRIBUTOR for --class, to avoid problems if somebody puts spaces in GRUB_DISTRIBUTOR. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_hurd.in: Likewise. 2010-04-06 BVK Chaitanya Fix unit testing framework for Qemu 0.12. * tests/util/grub-shell.in: Remove -serial stdio option. 2010-04-06 Vladimir Serbinenko POSIX header file wrappers. * lib/posix_wrap/assert.h: New file. Wrapper for its POSIX equivalents. * lib/posix_wrap/ctype.h: Likewise. * lib/posix_wrap/errno.h: Likewise. * lib/posix_wrap/langinfo.h: Likewise. * lib/posix_wrap/limits.h: Likewise. * lib/posix_wrap/localcharset.h: Likewise. * lib/posix_wrap/stdint.h: Likewise. * lib/posix_wrap/stdio.h: Likewise. * lib/posix_wrap/stdlib.h: Likewise. * lib/posix_wrap/string.h: Likewise. * lib/posix_wrap/sys/types.h: Likewise. * lib/posix_wrap/unistd.h: Likewise. * lib/posix_wrap/wchar.h: Likewise. * lib/posix_wrap/wctype.h: Likewise. * conf/common.rmk (grub_script.yy.c): Remove #include elimination. (grub_script.yy.h): Likewise. * script/yylex.l: Remove POSIX emulation #defines. * Makefile.in (POSIX_CFLAGS): New variable. (GNULIB_UTIL_CFLAGS): Likewise. Regexp support. * conf/common.rmk (pkglib_MODULES): Add regexp.mod. (regexp_mod_SOURCES): New variable. (regexp_mod_CFLAGS): Likewise. (regexp_mod_LDFLAGS): Likewise. * commands/regexp.c: New file. * gnulib/regcomp.c: New file. Imported from gnulib. * gnulib/regex.c: Likewise. * gnulib/regex_internal.c: Likewise. * gnulib/regex_internal.h: Likewise. * gnulib/regexec.c: Likewise. * gnulib/regex.h: Likewise. 2010-04-05 Vladimir Serbinenko * loader/i386/multiboot_mbi.c (grub_multiboot_load): Correctly report unsupported video mode types. 2010-04-05 Vladimir Serbinenko * kern/i386/pc/startup.S (grub_getrtsecs): Removed (dead code). 2010-04-05 Vladimir Serbinenko * include/grub/i386/pc/init.h (grub_get_mmap_entry): Don't export. * conf/i386-pc.rmk (kernel_img_HEADERS): Remove machine/init.h. 2010-04-04 Vladimir Serbinenko Remove unused grub_vga_get_font. * kern/i386/pc/startup.S (grub_vga_get_font): Removed. * include/grub/i386/pc/vga.h (grub_vga_get_font): Likewise. 2010-04-03 Grégoire Sutre * kern/misc.c: Disable the __enable_execute_stack hack for utilities. * include/grub/misc.h: Likewise. 2010-04-03 Grégoire Sutre * util/grub-install.in: Add `|| exit 1' to all grub-probe calls for which failure is fatal. 2010-04-03 Grégoire Sutre * util/grub-install.in: Use mkdir -p to create grub directory. * util/i386/efi/grub-install.in: Likewise. * util/ieee1275/grub-install.in: Likewise. 2010-04-03 Grégoire Sutre * Makefile.in (LEX): new variable. 2010-04-03 Grégoire Sutre * util/i386/efi/grub-dumpdevtree: replaced the non-portable `==' by `=' and added double quotes on operands of this equality test. 2010-04-03 Vladimir Serbinenko * Makefile.in (uninstall): Remove a leftover debug echo. Reported by: Grégoire Sutre 2010-04-03 Vladimir Serbinenko MIPS multiboot2 support. * conf/mips.rmk (pkglib_MODULES): Add multiboot2.mod. (multiboot2_mod_SOURCES): New variable. (multiboot2_mod_CFLAGS): Likewise. (multiboot2_mod_LDFLAGS): Likewise. (multiboot2_mod_ASFLAGS): Likewise. * include/grub/i386/multiboot.h (MULTIBOOT_INITIAL_STATE): New definition. (MULTIBOOT_ENTRY_REGISTER): Likewise. (MULTIBOOT_MBI_REGISTER): Likewise. (MULTIBOOT_ARCHITECTURE_CURRENT): Likewise. (MULTIBOOT_ELF32_MACHINE): Likewise. (MULTIBOOT_ELF64_MACHINE): Likewise. * include/grub/mips/multiboot.h: New file. * include/grub/video.h (grub_video_driver_id): New type GRUB_VIDEO_DRIVER_SM712. (grub_video_get_info_and_fini): Export. (grub_video_get_palette): Likewise. (grub_video_get_driver_id): Likewise. * include/multiboot2.h: Resynced with spec. * loader/i386/multiboot.c: Moved from here ... * loader/multiboot.c: ... here. All users updated. (grub_multiboot_boot): Use platform-specific macros. * loader/i386/multiboot_elfxx.c: Moved from here ... * loader/multiboot_elfxx.c: ... here. All users updated. (E_MACHINE): Use MULTIBOOT_ELF32_MACHINE and MULTIBOOT_ELF64_MACHINE. * loader/i386/multiboot_mbi2.c (grub_multiboot_load): Check arcitecture. * video/sm712.c (grub_video_sm712_adapter): Add missing id field. 2010-04-02 Vladimir Serbinenko Import gnulib argp module. * gnulib/argp-ba.c: New file. * gnulib/argp-eexst.c: Likewise. * gnulib/argp-fmtstream.c: Likewise. * gnulib/argp-fmtstream.h: Likewise. * gnulib/argp-fs-xinl.c: Likewise. * gnulib/argp-help.c: Likewise. * gnulib/argp-namefrob.h: Likewise. * gnulib/argp-parse.c: Likewise. * gnulib/argp-pin.c: Likewise. * gnulib/argp-pv.c: Likewise. * gnulib/argp-pvh.c: Likewise. * gnulib/argp-version-etc.c: Likewise. * gnulib/argp-version-etc.h: Likewise. * gnulib/argp-xinl.c: Likewise. * gnulib/argp.h: Likewise. 2010-03-31 Vladimir Serbinenko * kern/device.c (grub_device_iterate): Clear errors after failed opening device. 2010-03-31 Vladimir Serbinenko * kern/ieee1275/openfw.c (grub_children_iterate): Skip device itself if returned by firmware. 2010-03-30 Vladimir Serbinenko * loader/i386/multiboot_mbi2.c (retrieve_video_parameters): Fix compilation on coreboot and qemu 2010-03-28 Vladimir Serbinenko * include/multiboot2.h: Resync with spec. 2010-03-28 Vladimir Serbinenko Multiboot2 tag support * conf/i386.rmk (multiboot2_mod_SOURCES): Replace loader/i386/multiboot_mbi.c with loader/i386/multiboot_mbi2.c. Remove loader/multiboot_loader.c. * include/grub/i386/multiboot.h (grub_multiboot_real_boot): Removed. (grub_multiboot2_real_boot): Likewise. * include/grub/multiboot.h (grub_multiboot_set_accepts_video): Removed. (grub_get_multiboot_mmap_count): New proto. (grub_fill_multiboot_mmap): Likewise. (grub_multiboot_set_video_mode): Likewise. (grub_multiboot_set_console): Likewise. (grub_multiboot_load): Likewise. (grub_multiboot_load_elf): Likewise. (GRUB_MULTIBOOT_CONSOLE_EGA_TEXT): New definition. (GRUB_MULTIBOOT_CONSOLE_FRAMEBUFFER): Likewise. * include/multiboot.h: Resynced with specification. * include/multiboot2.h: Resynced with specification. * loader/i386/multiboot_mbi.c (DEFAULT_VIDEO_MODE): Moved from here... * loader/i386/multiboot.c (DEFAULT_VIDEO_MODE): ... here. * loader/i386/multiboot_mbi.c (HAS_VGA_TEXT): Moved from here .. * include/grub/multiboot.h (GRUB_MACHINE_HAS_VGA_TEXT): ... here. All users updated. * loader/i386/multiboot_mbi.c (accepts_video): Moved from here... * loader/i386/multiboot.c (accepts_video): ... here. All users updated. * loader/i386/multiboot_mbi.c (grub_multiboot_set_accepts_video): Removed. * loader/i386/multiboot_mbi.c (grub_get_multiboot_mmap_len): Moved from here... * loader/i386/multiboot.c (grub_get_multiboot_mmap_len): ... here. * loader/i386/multiboot_mbi.c (grub_fill_multiboot_mmap): Moved from here... * loader/i386/multiboot.c (grub_fill_multiboot_mmap): ... here. * loader/i386/multiboot_mbi.c (set_video_mode): Moved from here... * loader/i386/multiboot.c (grub_multiboot_set_video_mode): ... here. All users updated. * loader/i386/multiboot_mbi2.c: New file. 2010-03-27 Vladimir Serbinenko Resync with gnulib. * Makefile.in (GNULIB_CFLAGS): New variable. * conf/common.rmk (grub_mkisofs_CFLAGS): Add GNULIB_CFLAGS. (grub_script_check_CFLAGS): New variable. * gnulib/alloca.h: Resync with gnulib. * gnulib/error.c: Likewise. * gnulib/error.h: Likewise. * gnulib/fnmatch.c: Likewise. * gnulib/fnmatch_loop.c: Likewise. * gnulib/getdelim.c: Likewise. * gnulib/getline.c: Likewise. * gnulib/getopt.c: Likewise. * gnulib/getopt1.c: Likewise. * gnulib/getopt_int.h: Likewise. * gnulib/gettext.h: Likewise. * gnulib/progname.c: Likewise. * gnulib/progname.h: Likewise. 2010-03-27 Grégoire Sutre Fix a build failure (-Wundef -Werror) when ENABLE_NLS is not defined, which is the case with --disabled-nls. * include/grub/i18n.h: Use (defined(ENABLE_NLS) && ENABLE_NLS) instead of ENABLE_NLS in all #if preprocessor macros. * util/misc.c: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/mkisofs.h: Likewise. 2010-03-27 Vladimir Serbinenko Simplify Apple CC support. * commands/i386/pc/drivemap_int13h.S: Use LOCAL when possible. Add 0 byte at the end not to have a symbol with empty target. * mmap/i386/pc/mmap_helper.S: Likewise. * genmk.rb: Ignore errors 2030 and 2050. * kern/i386/pc/startup.S: Use LOCAL when possible. 2010-03-26 BVK Chaitanya Testcase and the fix for final semicolon on cmdline. * tests/grub_script_final_semicolon.in: New testcase. * conf/tests.rmk: Rules for the new testcase. * script/parser.y: Grammar fix. 2010-03-26 BVK Chaitanya Blank lines testcase for GRUB script. * tests/grub_script_blanklines.in: New testcase. * conf/tests.rmk: Rules for the new testcase. 2010-03-26 Vladimir Serbinenko Don't use __FILE__. * genmk.rb: Add -DGRUB_FILE to all C targets. * fs/reiserfs.c: Replace __FILE__ with GRUB_FILE. * include/grub/list.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/test.h: Likewise. * kern/mm.c: Likewise. * lib/libgcrypt_wrap/cipher_wrap.h: Likewise. 2010-03-26 Vladimir Serbinenko Sunpc partitions support. * conf/common.rmk (grub_probe_SOURCES): Add partmap/sunpc.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Add part_sunpc.mod. (part_sunpc_mod_SOURCES): New variable. (part_sunpc_mod_CFLAGS): Likewise. (part_sunpc_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add partmap/sunpc.c. * partmap/sunpc.c: New file. 2010-03-26 BVK Chaitanya For loop support to GRUB script. * include/grub/script_sh.h (grub_script_cmdfor): New struct. (grub_script_create_cmdfor): New function prototype. (grub_script_execute_cmdfor): New function prototype. * script/execute.c (grub_script_execute_cmdfor): New function. * script/parser.y (command): New for command. (forcmd): New grammar rule. * script/script.c (grub_script_create_cmdfor): New function. * util/grub-script-check.c (grub_script_execute_cmdfor): New function. * tests/grub_script_for1.in: New testcase. * conf/tests.rmk: Rules for new testcase. 2010-03-26 Vladimir Serbinenko Nested partitions * commands/blocklist.c (grub_cmd_blocklist): Don't check whether 'partition' is NULL, grub_partition_get_start already does that. * commands/loadenv.c (check_blocklists): Likewise. (write_blocklists): Likewise. * conf/common.rmk (grub_probe_SOURCES): Add partmap/bsdlabel.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Add part_bsd.mod. (part_bsd_mod_SOURCES): New variable. (part_bsd_mod_CFLAGS): Likewise. (part_bsd_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add partmap/bsdlabel.c. (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * include/grub/bsdlabel.h: New file. * include/grub/partition.h (grub_partition_map): Remove 'probe' and 'get_name'. (grub_partition): Add 'parent' and 'number'. Remove 'data'. (grub_partition_map_list): New variable. (grub_partition_map_register): Inline. (grub_partition_map_unregister): Likewise. (FOR_PARTITION_MAPS): New macro. (grub_partition_map_iterate): Removed. (grub_partition_get_start): Handle nested partitions. * include/grub/msdos_partition.h: Remove bsd-related entries. (grub_pc_partition): Remove. * kern/disk.c (grub_disk_close): Free partition data. (grub_disk_adjust_range): Handle nested partitions. * kern/partition.c (grub_partition_map_probe): New function. (grub_partition_probe): Parse name to number, handle subpartitions. (get_partmap): New function. (grub_partition_iterate): Handle subpartitions. (grub_partition_get_name): Likewise. * loader/i386/pc/bsd.c (grub_bsd_get_device): Likewise. * loader/i386/multiboot.c (grub_multiboot_get_bootdev): Likewise. * loader/i386/pc/chainloader.c (grub_chainloader_cmd): Likewise. * partmap/acorn.c (acorn_partition_map_iterate): Don't force raw access. Set 'number'. (acorn_partition_map_probe): Remove. (acorn_partition_map_get_name): Likewise. * partmap/amiga.c (amiga_partition_map_iterate): Don't force raw access. Set 'number'. Set 'index' to 0 since there can be only one partition entry per sector. (amiga_partition_map_probe): Remove. (amiga_partition_map_get_name): Likewise. * partmap/apple.c (apple_partition_map_iterate): Don't force raw access. Set 'number'. Set 'offset' and 'index' to real positions of partitions. (apple_partition_map_probe): Remove. (apple_partition_map_get_name): Likewise. * partmap/bsdlabel.c: New file. * partmap/gpt.c (gpt_partition_map_iterate): Don't force raw access. Set 'number'. Allocate 'data' so it can be correctly freed. Set 'index' to offset inside sector. (gpt_partition_map_probe): Remove. (gpt_partition_map_get_name): Likewise. * partmap/msdos.c (grub_partition_parse): Remove. (pc_partition_map_iterate): Don't force raw access. Set 'number'. Make 'ext_offset' a local variable. (pc_partition_map_probe): Remove. (pc_partition_map_get_name): Remove. * partmap/sun.c (sun_partition_map_iterate): Don't force raw access. Set 'number'. (sun_partition_map_probe): Remove. (sun_partition_map_get_name): Likewise. * parttool/msdospart.c (grub_pcpart_boot): Handle nested partitions. (grub_pcpart_type): Likewise. * util/hostdisk.c (open_device): Handle new numbering scheme. (grub_util_biosdisk_get_grub_dev): Handle nested partitions. * util/i386/pc/grub-setup.c (setup): Handle new numbering scheme. * util/grub-probe.c (probe_partmap): Handle nested paritions. * util/grub-install.in: Insert all subpartition modules. * util/ieee1275/grub-install.in: Likewise. 2010-03-24 Adrian Glaubitz * kern/dl.c (grub_dl_resolve_symbols): Improve error message grammar. 2010-03-24 Colin Watson * .bzrignore: Add grub-bin2h, grub-reboot, and grub-set-default. 2010-03-21 Colin Watson * util/grub-install.in: Copy .mo files from @datadir@/locale, to match where 'make install' puts them. * util/i386/efi/grub-install.in: Likewise. 2010-03-19 Colin Watson * .bzrignore: Add gentrigtables, grub-script-check, grub_script_check_init.c, grub_script_check_init.h, and trigtables.c. 2010-03-18 Vladimir Serbinenko * kern/parser.c: Indented. 2010-03-17 Vladimir Serbinenko * term/i386/pc/vesafb.c: Removed (orphaned, deprecated and broken). 2010-03-17 Vladimir Serbinenko * video/fb/fbblit.c (grub_video_fbblit_blend_XXXA8888_1bit): Handle alpha_mask_size == 0 case. 2010-03-14 BVK Chaitanya GRUB shell lexer and parser improvements. * conf/any-emu.rmk: Build rule updates. * conf/common.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * configure.ac: Configure check for flex. * include/grub/script_sh.h (grub_script_arg_type_t): More argument types. (grub_lexer_param): Struct member updates. (grub_parser_param): Likewise. (GRUB_LEXER_TOKEN_MAX): Maximum token size. (GRUB_LEXER_RECORD_INCREMENT): Memory increments' size. (grub_script_lexer_init): Prototype update. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_lexer_yywrap): New function prototype. (grub_script_lexer_fini): Likewise. (grub_script_execute_argument_to_string): Removed by... (grub_script_execute_argument_to_argv): ...better version. * script/execute.c (ROUND_UPTO): New macro. (grub_script_execute_cmdline): Out of memory fixes. (grub_script_execute_menuentry): Likewise. (grub_script_execute_argument_to_string): Removed. Update all users by... (grub_script_execute_argument_to_argv): ...better version. * script/function.c (grub_script_function_create): Use grub_script_execute_argument_to_argv instead of grub_script_execute_argument_to_string. * script/lexer.c (check_varstate): Removed. (check_textstate): Removed. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Replaced with... (grub_script_lexer_record): ...new function. (nextchar): Removed. (grub_script_lexer_init): Rewritten. (grub_script_yylex): Rewritten. (append_newline): New function. (grub_script_lexer_yywrap): New function. (grub_script_lexer_fini): New function. (grub_script_yyerror): Sets error flag. * script/yylex.l: New file. (grub_lexer_yyfree): Wrapper for flex yyffre. (grub_lexer_yyalloc): Likewise. (grub_lexer_yyrealloc): Likewise. * script/parser.y: Refactored. * script/script.c (grub_script_arg_add): Out of memory fixes. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Use grub_script_lexer_fini to deallocated. * util/grub-script-check.c (grub_script_execute_menuentry): Remove unnecessary code. * tests/grub_script_echo1.in: New testcase. * tests/grub_script_vars1.in: New testcase. * tests/grub_script_echo_keywords.in: New testcase. 2010-03-14 Vladimir Serbinenko Remove some redundancy in build system. * Makefile.in (TARGET_CFLAGS): Add -ffreestanding. (TARGET_ASFLAGS): Add -nostdinc -fno-builtin. (TARGET_LDFLAGS): Add -nostdlib. (TARGET_IMG_LDFLAGS): Likewise. * commands/lsmmap.c (grub_cmd_lsmmap) [GRUB_MACHINE_EMU]: Don't do anything since mmap isn't available. * conf/any-emu.rmk (kernel_img_SOURCES): Remove commands/boot.c. Add util/time.c. (pkglib_MODULES): Remove reboot.mod. (reboot_mod_SOURCES): Removed. (reboot_mod_CFLAGS): Likewise. (reboot_mod_LDFLAGS): Likewise. * conf/common.rmk (script/lexer.c_DEPENDENCIES): New variable. (MOSTLYCLEANFILES): Add symlist.c kernel_syms.lst. (DEFSYMFILES): Add kernel_syms.lst. (kernel_img_HEADERS): Add common headers. (symlist.c): New target. (kernel_syms.lst): Likewise. (pkglib_MODULES): Add memdisk.mod. (memdisk_mod_SOURCES): New variable. (memdisk_mod_CFLAGS): Likewise. (memdisk_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add reboot.mod. (reboot_mod_SOURCES): New variable. (reboot_mod_CFLAGS): Likewise. (reboot_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add date.mod. (date_mod_SOURCES): New variable. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add datehook.mod. (datehook_mod_SOURCES): New variable. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add lsmmap.mod. (lsmmap_mod_SOURCES): New variable. (lsmmap_mod_CFLAGS): Likewise. (lsmmap_mod_LDFLAGS): Likewise. (pkglib_MODULES): Add boot.mod. (boot_mod_SOURCES): New variable. (boot_mod_CFLAGS): Likewise. (boot_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Removed redundant parts. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/mips-yeeloong.rmk: Likewise. * conf/mips.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * conf/i386-coreboot.rmk: Moved qemu parts .. * conf/i386-qemu.rmk: ... here * conf/i386-efi.rmk: Moved common parts to... * conf/x86-efi.rmk: ... here. * conf/i386.rmk: Added modules common to all x86 variants. * configure.ac: Add -m32/-m64 to TARGET_ASFLAGS. * disk/memdisk.c: Remove grub/machine/kernel.h. * gensymlist.sh.in: Include symbol.h. * hook/datehook.c: Correct module name. * include/grub/datetime.h (grub_get_datetime) [GRUB_MACHINE_EMU]: Export. (grub_set_datetime) [GRUB_MACHINE_EMU]: Likewise. * include/grub/i386/efi/serial.h: New file. * include/grub/x86_64/efi/serial.h: Likewise. * util/time.c: Likewise. * video/ieee1275.c (grub_video_ieee1275_setup): Handle 64-bit void *. 2010-03-14 Colin King 2010-03-14 Colin Watson Shrink the pre-partition-table part of boot.img by eight bytes. * boot/i386/pc/boot.S (ERR): New macro. (chs_mode): Use ERR. (geometry_error): Likewise. (hd_probe_error): Remove. This is only used once, so we wrwite it inline instead. (read_error): Instead of printing read_error_string, just set up %si and fall through to ... (error_message): ... this new function, also used by ERR. 2010-03-14 Colin Watson Speed up consecutive hostdisk operations on the same device. * util/hostdisk.c (struct grub_util_biosdisk_data): New structure. (grub_util_biosdisk_open): Initialise disk->data. (struct linux_partition_cache): New structure. (linux_find_partition): Cache partition start positions; these are expensive to compute on every read and write. (open_device): Cache open file descriptor in disk->data, so that we don't have to reopen it and flush the buffer cache for consecutive operations on the same device. (grub_util_biosdisk_close): New function. (grub_util_biosdisk_dev): Set `close' member. * conf/common.rmk (grub_probe_SOURCES): Add kern/list.c. * conf/i386-efi.rmk (grub_setup_SOURCES): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_setup_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_setup_SOURCES): Likewise. 2010-03-14 Vladimir Serbinenko Compile parts of grub-emu as modules. * Makefile.in (TARGET_CPPFLAGS) [emu]: Remove -nostdinc -isystem. (pkglib_DATA) [emu]: Remove moddep.lst command.lst fs.lst partmap.lst parttool.lst handler.lst video.lst crypto.lst terminal.lst. (all-local): Add $(GRUB_EMU). (install-local): Install $(GRUB_EMU). (uninstall): Uninstall $(GRUB_EMU). * commands/parttool.c: Replace GRUB_UTIL with GRUB_NO_MODULES. * kern/dl.c: Likewise. * commands/sleep.c: Not include machine/time.h. * conf/any-emu.rmk (COMMON_LDFLAGS): New variable. (COMMON_CFLAGS): Likewise. (sbin_UTILITIES): Remove grub-emu. (grub_emu_SOURCES): Removed. (kernel_img_RELOCATABLE): New variable. (pkglib_PROGRAMS): Add kernel.img. (kernel_img_SOURCES): New variable (kernel_img_CFLAGS): Likewise. (kernel_img_LDFLAGS): Likewise. (TARGET_NO_STRIP): Likewise. (TARGET_NO_DYNAMIC_MODULES): Likewise. (pkglib_MODULES): Add progname.mod, hostfs.mod, host.mod, reboot.mod, halt.mod, cpuid.mod, usb.mod, sdl.mod and pci.mod. (grub-emu): New target. (GRUB_EMU): New variable. * configure.ac: Whitelist -emu as possible x86_64 architecture. * efiemu/main.c: Replace GRUB_UTIL with GRUB_MACHINE_EMU. * loader/xnu.c: Likewise. * include/grub/pci.h: Likewise. * genemuinit.sh: New file. * genemuinitheader.sh: Likewise. * genmk.rb: Don't strip if TARGET_NO_STRIP is yes. Support TARGET_NO_DYNAMIC_MODULES. * include/grub/dl.h (GRUB_NO_MODULES): New variable. * commands/search.c: Fix GRUB_MOD_INIT and GRUB_MOD_FINI arguments. * disk/loopback.c: Likewise. * font/font_cmd.c: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/msdos.c: Likewise. * partmap/sun.c: Likewise. * parttool/msdospart.c: Likewise. * term/gfxterm.c: Likewise. * video/bitmap.c: Likewise. * video/readers/jpeg.c: Likewise. * video/readers/png.c: Likewise. * video/readers/tga.c: Likewise. * video/video.c: Likewise. * util/grub-emu.c (read_command_list): Removed. (main): Don't call util_init_nls. * util/misc.c (grub_err_printf) [!GRUB_UTIL]: Removed. (grub_util_init_nls) [!GRUB_UTIL]: Likewise. 2010-03-14 Vladimir Serbinenko * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add datetime.mod, date.mod, datehook.mod. (datetime_mod_SOURCES): New variable. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * lib/ieee1275/datetime.c: New file. 2010-03-14 Vladimir Serbinenko * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add ieee1275_fb.mod. (ieee1275_fb_mod_SOURCES): New variable. (ieee1275_fb_mod_CFLAGS): Likewise. (ieee1275_fb_mod_LDFLAGS): Likewise. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_devices_iterate): New proto. * kern/ieee1275/init.c (HEAP_MAX_SIZE): Increased. (HEAP_MAX_ADDR): Likewise. * kern/ieee1275/openfw.c (grub_children_iterate): Don't skip empty type. Correct stop condition. (grub_ieee1275_devices_iterate): New function. * video/ieee1275.c: New file. 2010-03-14 Vladimir Serbinenko Merge sparc grub-mkimage into generic grub-mkimage and a.out support. * boot/sparc64/ieee1275/boot.S (boot_continue): Use SCRATCH_PAD_BOOT as scratch. * boot/sparc64/ieee1275/diskboot.S (after_info_block): Use SCRATCH_PAD_DISKBOOT as scratch. (bootit): Pass Openfirmware pointer in %o4. * conf/sparc64-ieee1275.rmk (kernel_img_LDFLAGS): Link at 0x4400 instead of 0x200000. (grub_mkimage_SOURCES): Replace util/sparc64/ieee1275/grub-mkimage.c with util/grub-mkrawimage.c. * configure.ac: Handle GRUB_MACHINE_SPARC64 and GRUB_MACHINE_MIPS. * include/grub/aout.h (AOUT_MID_SUN): New definition. (grub_aout_get_type) [GRUB_UTIL]: Removed. (grub_aout_load) [GRUB_UTIL]: Likewise. * include/grub/kernel.h (grub_modules_get_end): New proto. * include/grub/sparc64/ieee1275/boot.h (SCRATCH_PAD): Removed. (SCRATCH_PAD_BOOT): New definition. (SCRATCH_PAD_DISKBOOT): Likewise. (GRUB_BOOT_MACHINE_IMAGE_ADDRESS): Set to 0x4400. * include/grub/sparc64/ieee1275/ieee1275.h (grub_ieee1275_original_stack): New variable * include/grub/sparc64/ieee1275/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): New definition (GRUB_KERNEL_MACHINE_STACK_SIZE): Likewise. (GRUB_PLATFORM_IMAGE_FORMATS): Likewise. (GRUB_PLATFORM_IMAGE_DEFAULT_FORMAT): Likewise. (GRUB_PLATFORM_IMAGE_DEFAULT): Likewise. (GRUB_PLATFORM_IMAGE_RAW): Likewise. (GRUB_PLATFORM_IMAGE_AOUT): Likewise. (grub_platform_image_format_t): New type. * kern/mips/yeeloong/init.c (grub_modules_get_end): Move from here ... * kern/main.c (grub_modules_get_end) [GRUB_MACHINE_MIPS_YEELOONG || GRUB_MACHINE_SPARC64]: ... here. * kern/sparc64/ieee1275/crt0.S: Store firmware entry point in %o0. (codestart): Switch stacks. * kern/sparc64/ieee1275/init.c (grub_ieee1275_original_stack): New variable. (grub_heap_init): Use grub_modules_get_end. * loader/sparc64/ieee1275/linux.c (grub_linux_boot): Restore original stack. * util/grub-mkrawimage.c (generate_image): Support sparc64. (main): Likewise. * util/sparc64/ieee1275/grub-mkimage.c: Removed. 2010-03-14 Thorsten Glaser * util/grub-mkrescue.in: Base ISO UUID on UTC. 2010-03-08 Matt Kraai * util/i386/pc/grub-setup.c (setup): Fix a grammatical error (Debian bug #559005). 2010-03-07 Vladimir Serbinenko * genmoddep.awk: Output all missing symbols and not only first. 2010-03-06 Vladimir Serbinenko * NEWS: Put the date of 1.98 release. 2010-03-06 Vladimir Serbinenko * configure.ac: Update CPPFLAGS and not CFLAGS when checking for ft2build.h. 2010-03-06 Vladimir Serbinenko * normal/cmdline.c (grub_cmdline_get): Fix gabled line after completition in the middle of string. 2010-03-06 Vladimir Serbinenko * util/grub-mkrescue.in: Use mktemp with explicit template. 2010-03-06 Vladimir Serbinenko * loader/i386/bsd.c (grub_bsd_get_device): Fix a memory leak. 2010-03-06 Vladimir Serbinenko * loader/i386/multiboot_mbi.c (grub_multiboot_set_bootdev): Free the right pointer. 2010-03-05 Vladimir Serbinenko Fix FreeBSD compilation. * Makefile.in (TARGET_CPPFLAGS): Remove -nostdinc -isystem. * configure.ac: Add -nostdinc -isystem to TARGET_CPPFLAGS if it works. 2010-03-05 Vladimir Serbinenko * util/import_gcry.py: Add autogenerated files to MAINTAINER_CLEANFILES. 2010-03-04 Vladimir Serbinenko * gettext/gettext.c (grub_gettext_init_ext): Fix a memory leak. 2010-03-04 Vladimir Serbinenko * disk/scsi.c (grub_scsi_iterate): Fix a memory leak. 2010-03-04 Robert Millan Support relative image path in theme file. * gfxmenu/gui_image.c (grub_gui_image): New member theme_dir. (image_set_property): Handle theme_dir and relative path. 2010-03-04 Vladimir Serbinenko * configure.ac: Alias amd64 to x86_64. 2010-03-04 Vladimir Serbinenko * NEWS: mention multiboot on EFI. 2010-03-04 Vladimir Serbinenko * kern/main.c (grub_load_modules): Handle errors from init functions of embeded modules. 2010-03-04 Vladimir Serbinenko * normal/autofs.c (autoload_fs_module): Handle errors. 2010-03-04 Vladimir Serbinenko Disable linux.mod on qemu-mips since it's not functional and leads to compilation failure. * conf/mips.rmk (pkglib_MODULES): Remove linux.mod. * conf/mips-yeeloong.rmk (pkglib_MODULES): Add linux.mod. * conf/mips.rmk (linux_mod_SOURCES): Move from here ... * conf/mips-yeeloong.rmk (linux_mod_SOURCES): ... here * conf/mips.rmk (linux_mod_CFLAGS): Move from here ... * conf/mips-yeeloong.rmk (linux_mod_CFLAGS): ... here * conf/mips.rmk (linux_mod_ASFLAGS): Move from here ... * conf/mips-yeeloong.rmk (linux_mod_ASFLAGS): ... here * conf/mips.rmk (linux_mod_LDFLAGS): Move from here ... * conf/mips-yeeloong.rmk (linux_mod_LDFLAGS): ... here Reported by: BVK Chaitanya 2010-03-04 Jordan Uggla * INSTALL: Add gettext as a dependency and add qemu to a new section "Prerequisites for make-check". 2010-03-04 Christian Franke * util/grub-pe2elf.c: Add missing include "progname.h". 2010-03-04 Vladimir Serbinenko * normal/crypto.c (read_crypto_list): Fix a typo. Reported by: Seth Goldberg. 2010-03-04 Vladimir Serbinenko * Makefile.in (DISTCLEANFILES): Add stamp-h1. Reported by: Seth Goldberg. 2010-03-04 Vladimir Serbinenko * Makefile.in (CLEANFILES) [FONT_SOURCE && grub_mkfont]: Add ascii.bitmaps. 2010-03-04 Vladimir Serbinenko * genmk.rb: Remove terminal*.lst in make clean. Reported by: Seth Goldberg. 2010-03-04 Vladimir Serbinenko * util/i386/efi/grub-install.in: Copy gettext files. 2010-03-01 Vladimir Serbinenko * fs/ext2.c (grub_ext2_read_block): Fix an integer overflow. 2010-03-01 Vladimir Serbinenko Wait for user entry basing on presence of output rather than on errors. * include/grub/normal.h (grub_normal_get_line_counter): New proto. (grub_install_newline_hook): Likewise. * normal/main.c (GRUB_MOD_INIT): Call grub_install_newline_hook. * normal/menu.c (show_menu): Check line_counter to determine presence of output. * normal/term.c (grub_normal_line_counter): New variable. (grub_normal_get_line_counter): New function. (grub_install_newline_hook): Likewise. 2010-03-01 Vladimir Serbinenko * commands/cat.c (grub_cmd_cat): Propagate grub_gzfile_open error. 2010-03-01 Vladimir Serbinenko * configure.ac: Update version to 1.98. 2010-02-26 Vladimir Serbinenko * util/grub.d/10_linux.in (linux_entry): Don't default to gfxpayload=keep if Linux doesn't support video handover. 2010-02-25 Vladimir Serbinenko Don't compile video modules on yeeloong since video subsystem is part of kernel. * conf/common.rmk (pkglib_MODULES) [yeeloong]: Remove video.mod, video_fb.mod, bitmap.mod, font.mod, gfxterm.mod and bufio.mod * conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add bitmap.h, video.h, gfxterm.h, font.h, bitmap_scale.h and bufio.h. * conf/mips.rmk (kernel_img_HEADERS): Add values instead of overwriting. * include/grub/bitmap.h: Add EXPORT_FUNC and EXPORT_VAR. * include/grub/bitmap_scale.h: Likewise. * include/grub/bufio.h: Likewise. * include/grub/font.h: Likewise. * include/grub/gfxterm.h: Likewise. * include/grub/video.h: Likewise. * include/grub/vbe.h: Don't include video_fb.h. * video/i386/pc/vbe.c: Include video_fb.h. * commands/i386/pc/vbetest.c: Include video.h. 2010-02-25 Jordan Uggla * util/grub-mkconfig.in (GRUB_SAVEDEFAULT): Export new variable. * util/grub-mkconfig_lib.in (save_default_entry): Only save a new default entry if GRUB_SAVEDEFAULT=true. This allows using GRUB_DEFAULT=saved on its own to let grub-reboot work, without saving a new default on every boot. 2010-02-24 Vladimir Serbinenko * normal/crypto.c (read_crypto_list): Fix a memory leak. * normal/term.c (read_terminal_list): Likewise. * normal/main.c (grub_normal_init_page): Likewise. (grub_normal_read_line_real): Likewise. 2010-02-24 Vladimir Serbinenko * loader/i386/multiboot_mbi.c (grub_multiboot_set_bootdev): Fix a memory leak. Reported by: Seth Goldberg. 2010-02-24 Joey Korkames * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Remove duplicate declaration of `start'. 2010-02-20 Vladimir Serbinenko * fs/iso9660.c (grub_iso9660_iterate_dir): Strip version from joliet filename. Reported by: Georgy Buranov 2010-02-20 Carles Pina i Estany * util/grub-mkrawimage.c (usage): Change string formatting to improve gettext. 2010-02-20 Manoel Rebelo Abranches * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Add delete and backspace keys. 2010-02-20 Vladimir Serbinenko * video/fb/video_fb.c (grub_video_fb_scroll): Fix a pixel size bug. Reported by: Michael Suchanek. 2010-02-18 Samuel Thibault * util/grub-mkconfig.in: Export GRUB_INIT_TUNE. * util/grub.d/00_header.in: Handle GRUB_INIT_TUNE. 2010-02-16 Vladimir Serbinenko Remove any reference to non-free fonts. * commands/videotest.c (grub_cmd_videotest): Use unifont by default. * docs/gfxmenu-theme-example.txt: Removed. It's both outdated and uses non-free components. * font/font.c (grub_font_get_name): Remove example name. * gfxmenu/gui_label.c (grub_gui_label_new): Use unifont by default. * gfxmenu/gui_list.c (grub_gui_list_new): Likewise. * gfxmenu/gui_progress_bar.c (grub_gui_progress_bar_new): Likewise. * gfxmenu/view.c (grub_gfxmenu_view_new): Likewise. 2010-02-16 Georgy Buranov * disk/efi/efidisk.c (grub_efidisk_get_device_name): Fix a typo. 2010-02-15 Vladimir Serbinenko * term/serial.c (serial_get_divisor) [GRUB_MACHINE_MIPS_YEELOONG]: Double divisor. (serial_hw_init) [GRUB_MACHINE_MIPS_YEELOONG]: Don't enable advanced features. (GRUB_MOD_INIT) [GRUB_MACHINE_MIPS_YEELOONG]: Default to 115200. 2010-02-15 Vladimir Serbinenko * gensymlist.sh.in: Use TARGET_CC instead of CC. 2010-02-14 Samuel Thibault * commands/i386/pc/play.c (GRUB_MOD_INIT(play)): Fix help. * docs/grub.texi (Command-line and menu entry commands): Document play command. 2010-02-14 Samuel Thibault * commands/i386/pc/play.c (grub_cmd_play): If grub_file_open fails, parse arguments as inline tempo and notes. Move code for playing notes to... (play): ... new function. 2010-02-14 Samuel Thibault * commands/i386/pc/play.c (T_REST, T_FINE, struct note, beep_on): Use grub_uint16_t instead of short. (grub_cmd_play): Use grub_uint32_t instead of int, convert data from disk from little endian to cpu endianness. 2010-02-07 Samuel Thibault * commands/i386/pc/play.c (BASE_TEMPO): Set to 60 * GRUB_TICKS_PER_SECOND instead of 120. 2010-02-14 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Wait for possible escape sequence after \e. 2010-02-14 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_putchar): Don't output non-ASCII characters. 2010-02-14 Vladimir Serbinenko * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Enclose set root in single quotes to prevent \, from being unescaped. 2010-02-14 Vladimir Serbinenko Prevent unknown commands from stopping menuentry execution. * script/execute.c (grub_script_execute_cmdline): Print error after unknown command. 2010-02-14 Vladimir Serbinenko * fs/i386/pc/pxe.c (GRUB_MOD_INIT): Fix typo. Reported by: Pavel Pisa. 2010-02-13 Vladimir Serbinenko * io/gzio.c (grub_gzio_open): Use grub_zalloc. 2010-02-13 Vladimir Serbinenko Merge grub_ieee1275_map_physical into grub_map and rename to grub_ieee1275_map * include/grub/ieee1275/ieee1275.h (grub_ieee1275_map): New proto. * include/grub/sparc64/ieee1275/ieee1275.h (grub_ieee1275_map_physical): Remove. * kern/ieee1275/openfw.c (grub_map): Rename to ... (grub_ieee1275_map): ... this. All users updated. Add phys_lo when necessary. * kern/sparc64/ieee1275/ieee1275.c (grub_ieee1275_map_physical): Remove. 2010-02-13 Vladimir Serbinenko * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Check device type before opening and not after. 2010-02-13 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Macroify constants. 2010-02-13 Vladimir Serbinenko * loader/sparc64/ieee1275/linux.c (align_addr): Remove. (alloc_phys): Use ALIGN_UP instead of align_addr. 2010-02-13 Vladimir Serbinenko * loader/sparc64/ieee1275/linux.c (alloc_phys): Correct bounds checking. 2010-02-13 Vladimir Serbinenko * kern/sparc64/ieee1275/crt0.S (codestart): Move modules backwards. 2010-02-13 Vladimir Serbinenko * disk/ieee1275/ofdisk.c (grub_ofdisk_read): Remove excessively verbose dprintf. 2010-02-13 Vladimir Serbinenko Fix over-4GiB seek on sparc64. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_seek): Replace pos_i and pos_lo with pos. All users updated. * include/grub/powerpc/ieee1275/ieee1275.h (GRUB_IEEE1275_CELL_SIZEOF): New constant. * include/grub/sparc64/ieee1275/ieee1275.h (GRUB_IEEE1275_CELL_SIZEOF): Likewise. * kern/ieee1275/ieee1275.c (grub_ieee1275_seek): Split pos into pos_hi and pos_lo. 2010-02-13 Vladimir Serbinenko * util/grub-mkrawimage.c (main): Call set_program_name. 2010-02-13 Vladimir Serbinenko Properly align 64-bit targets. * util/grub-mkrawimage.c (ALIGN_ADDR): New macro. (generate_image): Use ALIGN_ADDR. 2010-02-13 Vladimir Serbinenko Properly create cross-endian images. * include/grub/types.h (grub_host_to_target_addr): New macro * util/grub-mkrawimage.c (generate_image): Add missing host_to_target. 2010-02-13 Vladimir Serbinenko * util/grub-mkrawimage.c (generate_image): Add forgotten ALIGN_UP. 2010-02-10 Vladimir Serbinenko Pass SIMPLE framebuffer size in bytes and not 64K blocks. * loader/i386/efi/linux.c (grub_linux_setup_video): Don't divide by 64K. * loader/i386/linux.c (grub_linux_setup_video): Likewise. (grub_linux_boot): Divide by 64K when on VESA. 2010-02-10 Vladimir Serbinenko Support GRUB_GFXPAYLOAD_LINUX. * util/grub-mkconfig.in: Export GRUB_GFXPAYLOAD_LINUX. * util/grub.d/10_linux.in (linux_entry): Handle GRUB_GFXPAYLOAD_LINUX. 2010-02-10 Vladimir Serbinenko * script/execute.c (grub_script_execute_cmdline): Use grub_print_error to show messages instead of discarding them. Process errors after executing command and not before. Keep old method too as precaution. 2010-02-09 Vladimir Serbinenko * configure.ac: Check for ft2build.h. 2010-02-07 Vladimir Serbinenko * kern/ieee1275/openfw.c (grub_halt): Try executing "poweroff". 2010-02-07 Vladimir Serbinenko * genkernsyms.sh.in: Use TARGET_CC. 2010-02-07 Colin Watson * NEWS: Update. 2010-02-07 Vladimir Serbinenko * include/grub/multiboot2.h: Remove leftover file. * include/grub/normal.h [GRUB_UTIL]: Remove leftover declarations. * include/grub/partition.h [GRUB_UTIL]: Likewise. 2010-02-07 Yves Blusseau * gnulib/getdelim.c: add missing header (type ssize_t must be defined). 2010-02-07 Vladimir Serbinenko Fix warnings in grub-emu when compiling with maximum warning options. * util/grub-emu.c (ENABLE_RELOCATABLE): New definition. (grub_arch_modules_addr): Return 0 and not NULL. * util/misc.c (ENABLE_RELOCATABLE): New definition. (xstrdup): Use newstr instead of dup. * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): Rename one instance of disk to dsk to avoid shadowing. (find_free_slot): Fix prototype. * util/getroot.c (grub_util_is_dmraid): Make static. * include/grub/time.h (grub_get_rtc) [GRUB_MACHINE_EMU || GRUB_UTIL]: Add missing prototype. * util/sdl.c (grub_video_sdl_set_viewport): Remove. 2010-02-07 Vladimir Serbinenko * loader/i386/linux.c (grub_linux_setup_video): Handle error appropriately. 2010-02-07 Vladimir Serbinenko * fs/reiserfs.c (grub_reiserfs_read): Use #if 0 instead of commenting code out. 2010-02-07 Vladimir Serbinenko * include/grub/cache.h (grub_arch_sync_caches) [i386 || x86_64]: Inline. * kern/i386/coreboot/init.c (grub_arch_sync_caches): Remove. * kern/i386/efi/init.c (grub_arch_sync_caches): Likewise. * kern/i386/ieee1275/init.c (grub_arch_sync_caches): Likewise. * kern/i386/pc/init.c (grub_arch_sync_caches): Likewise. * util/misc.c (grub_arch_sync_caches) [i386 || x86_64]: Likewise. 2010-02-07 Vladimir Serbinenko * include/grub/err.h (grub_err_printf): Don't export. 2010-02-07 Vladimir Serbinenko * include/grub/dl.h (grub_dl_register_symbol): Don't export. 2010-02-07 Vladimir Serbinenko * include/grub/i18n.h (grub_gettext_dummy): Removed. * kern/misc.c (grub_gettext_dummy): Make static. 2010-02-06 Vladimir Serbinenko * kern/misc.c (grub_utf8_to_ucs4): Don't eat valid characters preceeded by non-valid ones. * kern/term.c (grub_putchar): Likewise. 2010-02-06 Vladimir Serbinenko * partmap/sun.c (sun_partition_map_iterate): Restructure flow to fix buggy hook call and memory leak. 2010-02-06 Vladimir Serbinenko * commands/ls.c (grub_ls_list_files): Free pathname on exit. 2010-02-06 Vladimir Serbinenko * fs/fat.c (grub_fat_iterate_dir): Free unibuf at exit. 2010-02-06 Vladimir Serbinenko * loader/i386/pc/xnu.c (grub_xnu_set_video): Add const qualifier to modevar. Return grub_errno on allocation error. 2010-02-06 Vladimir Serbinenko * disk/ieee1275/ofdisk.c (grub_ofdisk_read): Correct error handling. 2010-02-06 Yves Blusseau * conf/common.rmk (grub_script_check_SOURCES): add missing dependencies. (grub_mkpasswd_pbkdf2_SOURCES): Likewise. 2010-02-06 Vladimir Serbinenko * fs/i386/pc/pxe.c (grub_pxefs_dir): Return with failure on non-pxe disk. (grub_pxefs_open): Likewise. 2010-02-06 Robert Millan * util/grub.d/10_hurd.in: Add --class information to menuentries. * util/grub.d/10_kfreebsd.in: Likewise. * util/grub.d/10_linux.in: Likewise. 2010-02-06 Colin D Bennett * conf/common.rmk (pkglib_MODULES): Add gfxmenu.mod. (gfxmenu_mod_SOURCES): New variable. (gfxmenu_mod_CFLAGS): Likewise. (gfxmenu_mod_LDFLAGS): Likewise. * include/grub/term.h (grub_term_set_current_output): Declare argument as const. * docs/gfxmenu-theme-example.txt: New file. * gfxmenu/gfxmenu.c: Likewise. * gfxmenu/gui_box.c: Likewise. * gfxmenu/gui_canvas.c: Likewise. * gfxmenu/gui_circular_progress.c: Likewise. * gfxmenu/gui_image.c: Likewise. * gfxmenu/gui_label.c: Likewise. * gfxmenu/gui_list.c: Likewise. * gfxmenu/gui_progress_bar.c: Likewise. * gfxmenu/gui_string_util.c: Likewise. * gfxmenu/gui_util.c: Likewise. * gfxmenu/icon_manager.c: Likewise. * gfxmenu/model.c: Likewise. * gfxmenu/named_colors.c: Likewise. * gfxmenu/theme_loader.c: Likewise. * gfxmenu/view.c: Likewise. * gfxmenu/widget-box.c: Likewise. * include/grub/gfxmenu_model.h: Likewise. * include/grub/gfxmenu_view.h: Likewise. * include/grub/gfxwidgets.h: Likewise. * include/grub/gui.h: Likewise. * include/grub/gui_string_util.h: Likewise. * include/grub/icon_manager.h: Likewise. 2010-02-06 Vladimir Serbinenko Agglomerate scrolling in gfxterm. * term/gfxterm.c (grub_virtual_screen): New member 'total_screen'. (grub_virtual_screen_setup): Initialise 'total_screen'. (write_char): Split to ... (paint_char): ... this ... (write_char): ... and this. (paint_char): Handle delayed scrolling. (draw_cursor): Likewise. (scroll_up): Split to ... (real_scroll): ... this ... (scroll_up): ... and this. (real_scroll): Handle multi-line scroll and draw below-the-bottom characters. (grub_gfxterm_refresh): Call real_scroll. 2010-02-06 Colin D Bennett * include/grub/misc.h (grub_iscntrl): New inline function. (grub_isalnum): Likewise. (grub_strtol): Likewise. 2010-02-06 Colin D Bennett * normal/menu_text.c (get_entry_number): Move from here ... * normal/menu.c (get_entry_number): ... moved here. * include/grub/menu.h (grub_menu_get_default_entry_index): New prototype. * normal/menu.c (grub_menu_get_default_entry_index): New function. * normal/menu_text.c (run_menu): Use grub_menu_get_default_entry_index. * include/grub/menu_viewer.h (grub_menu_viewer_init): New prototype. (grub_menu_viewer_should_return): Likewise. * normal/main.c (GRUB_MOD_INIT (normal)): Call grub_menu_viewer_init. * normal/menu_text.c (run_menu): Enable menu switching. * normal/menu_viewer.c (should_return): New variable. (menu_viewer_changed): Likewise. (grub_menu_viewer_show_menu): Handle menu viewer changes. (grub_menu_viewer_should_return): New function. (menuviewer_write_hook): Likewise. (grub_menu_viewer_init): Likewise. 2010-02-06 Colin D Bennet 2010-02-06 Vladimir Serbinenko Support for gfxterm in a window. * include/grub/gfxterm.h: New file. * include/grub/video.h (struct grub_video_rect): New declaration. (grub_video_rect_t): Likewise. * term/gfxterm.c (struct grub_gfxterm_window): New type. (refcount): New variable. (render_target): Likewise. (window): Likewise. (repaint_callback): Likewise. (grub_virtual_screen_setup): Use 'render_target'. (init_window): New function. (grub_gfxterm_init_window): Likewise. (grub_gfxterm_init): Check reference counter. Use init_window. (destroy_window): New function. (grub_gfxterm_destroy_window): Likewise. (grub_gfxterm_fini): Check reference counter. Use destroy_window. (redraw_screen_rect): Restore viewport. Use 'render_target' and 'window'. Call 'repaint_callback'. (write_char): Use 'render_target'. (draw_cursor): Likewise. (scroll_up): Restore viewport. Use 'render_target' and 'window'. Call 'repaint_callback'. (grub_gfxterm_cls): Likewise. (grub_gfxterm_refresh): Use 'window'. (grub_gfxterm_set_repaint_callback): New function. (grub_gfxterm_background_image_cmd): Use 'window'. (grub_gfxterm_get_term): New function. (GRUB_MOD_INIT(term_gfxterm)): Set 'refcount' to 0. 2010-02-06 Colin D Bennett Bitmap scaling support. * conf/common.rmk (pkglib_MODULES): Add bitmap_scale.mod. (bitmap_scale_mod_SOURCES): New variable. (bitmap_scale_mod_CFLAGS): Likewise. (bitmap_scale_mod_LDFLAGS): Likewise. * include/grub/bitmap_scale.h: New file. * term/gfxterm.c (BACKGROUND_CMD_ARGINDEX_MODE): New definiton. (background_image_cmd_options): New variable. (grub_gfxterm_background_image_cmd): Support bitmap stretching. (cmd): Rename and change type to ... (background_image_cmd_handle): ... this. All users updated. (GRUB_MOD_INIT(term_gfxterm)): Make background_image extended command. * video/bitmap_scale.c: New file. 2010-02-06 Vladimir Serbinenko SDL support. * Makefile.in (LIBSDL): New variable. (enable_grub_emu_sdl): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Add video files. (grub_emu_SOURCES) [enable_grub_emu_sdl]: Add util/sdl.c. (grub_emu_LDFLAGS) [enable_grub_emu_sdl]: Add $(LIBSDL). * configure.ac: Detect SDL availability and add --enable-grub-emu-sdl * util/sdl.c: New file. 2010-02-06 Colin D Bennett 2010-02-06 Vladimir Serbinenko Double buffering support. * commands/i386/pc/videotest.c (grub_cmd_videotest): Swap doublebuffers. * include/grub/video.h: Update comment. * include/grub/video_fb.h (grub_video_fb_doublebuf_update_screen_t): New type. (grub_video_fb_doublebuf_blit_init): New prototype. * term/gfxterm.c (scroll_up): Support double buffering. (grub_gfxterm_refresh): Likewise. * video/fb/video_fb.c (doublebuf_blit_update_screen): New function. (grub_video_fb_doublebuf_blit_init): Likewise. * video/i386/pc/vbe.c (framebuffer): Remove 'render_target'. Add 'front_target', 'back_target', 'offscreen_buffer', 'page_size', 'displayed_page', 'render_page' and 'update_screen'. (grub_video_vbe_fini): Free offscreen buffer. (doublebuf_pageflipping_commit): New function. (doublebuf_pageflipping_update_screen): Likewise. (doublebuf_pageflipping_init): Likewise. (double_buffering_init): Likewise. (grub_video_vbe_setup): Enable doublebuffering. (grub_video_vbe_swap_buffers): Implement. (grub_video_vbe_set_active_render_target): Handle double buffering. (grub_video_vbe_get_active_render_target): Likewise. (grub_video_vbe_get_info_and_fini): Likewise. Free offscreen_buffer. (grub_video_vbe_adapter): Use grub_video_vbe_get_active_render_target. (grub_video_vbe_enable_double_buffering): Likewise. (grub_video_vbe_swap_buffers): Use update_screen. (grub_video_set_mode): Use double buffering. 2010-02-06 Robert Millan * maintainance/gentrigtables.py: Remove. * lib/trig.c: Likewise. * gentrigtables.c: New file. C rewrite of gentrigtables.py. * conf/common.rmk (trig_mod_SOURCES): Replace `lib/trig.c' with `trigtables.c'. (trigtables.c): New rule. (gentrigtables): Likewise. (DISTCLEANFILES): Add `trigtables.c' and `gentrigtables'. 2010-02-06 Robert Millan * maintainance/gentrigtables.py: Avoid duplicate hardcoding of integer constants. 2010-02-06 Colin D Bennet Trigonometry support. * include/grub/trig.h: New file. * lib/trig.c: Likewise. * maintainance/gentrigtables.py: Likewise. * conf/common.rmk (pkglib_MODULES): Add trig.mod. (trig_mod_SOURCES): New variable. (trig_mod_CFLAGS): Likewise. (trig_mod_LDFLAGS): Likewise. 2010-02-06 Vladimir Serbinenko * kern/ieee1275/openfw.c (grub_ieee1275_encode_devname): Support whole disk devices. 2010-02-06 Vladimir Serbinenko * kern/ieee1275/openfw.c (grub_devalias_iterate): Stop iterating on error. 2010-02-03 Vladimir Serbinenko * util/hostdisk.c (open_device): Don't use partition device when reading before the partition. (grub_util_biosdisk_read): Don't read from partition and before the partition in single operation. (grub_util_biosdisk_write): Don't write to partition and before the partition in single operation. 2010-02-03 Torsten Landschoff * kern/disk.c (grub_disk_read): Fix offset computation when reading last sectors. 2010-02-03 Vladimir Serbinenko * disk/i386/pc/biosdisk.c (grub_biosdisk_read): Handle non-2048 aligned CDROM reads. (grub_biosdisk_write): Refuse to write to CDROM. 2010-01-31 Vladimir Serbinenko * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Fix off-by-one error. 2010-01-31 Vladimir Serbinenko * font/font.c (find_glyph): Check that bmp_idx is available before using it. (grub_font_get_string_width): Never call grub_font_get_glyph_internal with (font == NULL). 2010-01-28 Christian Schmitt * util/ieee1275/grub-install.in: Fix nvsetenv arguments. 2010-01-28 BVK Chaitanya * include/grub/script_sh.h (sourcecode): Add const qualifier. * util/grub-script-check.c (getline): Fix empty lines case. 2010-01-28 Robert Millan * Makefile.in (check): Exit with fail status when one of the tests fails. * tests/example_functional_test.c (example_test): Fix reversed assert. * tests/example_unit_test.c (example_test): Likewise. 2010-01-28 Colin Watson * util/grub.d/10_linux.in: This script does not use any of the contents of gettext.sh, only the external command `gettext', so stop sourcing it. (Moreover, gettext.sh isn't necessarily installed in the same prefix as GRUB.) * util/grub.d/10_kfreebsd.in: Likewise. 2010-01-27 Vladimir Serbinenko * normal/cmdline.c (grub_cmdline_get): Fix completion in the middle of the line. 2010-01-27 Vladimir Serbinenko * kern/disk.c (grub_disk_read): Fix offset computation when reading last sectors. 2010-01-27 Vladimir Serbinenko * commands/hashsum.c (hash_file): Avoid possible stack overflow by having a 4KiB and not 32KiB buffer size. 2010-01-27 Robert Millan * util/hostfs.c: Include `'. (grub_hostfs_read): Handle errors from fseeko() and fread(). 2010-01-27 Robert Millan * kern/disk.c (grub_disk_read): Fix bug that would cause infinite loop when using read hooks on files whose size isn't sector-aligned. 2010-01-27 Robert Millan Remove unused parameter. * fs/iso9660.c (struct grub_iso9660_data): Remove `length' parameter. (grub_iso9660_open): Remove initialization of `data->length'. 2010-01-27 Robert Millan * util/grub-fstest.c (fstest): Rewrite allocation, fixing a few memleak conditions. 2010-01-27 Carles Pina i Estany * util/lvm.c: New macro LVM_DEV_MAPPER_STRING. (grub_util_lvm_isvolume): Use LVM_DEV_MAPPER_STRING. 2010-01-26 Carles Pina i Estany * util/bin2h.c (usage): Fix warning (space after backslash). 2010-01-26 Carles Pina i Estany * font/font.c: Include `grub/fontformat.h. Remove font file format constants. (grub_font_load): Use the new macros. * include/grub/fontformat.h: New file. * util/grub-mkfont.c: Include `grub/fontformat.c'. (write_font_pf2): Use the new macros. 2010-01-26 Robert Millan * util/bin2h.c (usage): Make --help actually explain what `grub-bin2h' does. 2010-01-26 Robert Millan * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_PXE_DL): New macro. * boot/i386/pc/pxeboot.S: Include `'. (_start): Macroify `0x7F'. * kern/i386/pc/init.c: Include `'. (make_install_device): Use "(pxe)" as fallback prefix when booting via PXE. 2010-01-26 Vladimir Serbinenko * configure.ac: Reset LIBS after check for libgcc symbols. 2010-01-25 Colin Watson * util/hostdisk.c (open_device): Add trailing newline to debug message. 2010-01-25 Grégoire Sutre * configure.ac: Check for `limits.h'. * util/misc.c: Include `' (for PATH_MAX). 2010-01-24 Robert Millan * loader/mips/linux.c (grub_cmd_linux, grub_cmd_initrd): Don't capitalize error strings. 2010-01-24 Samuel Thibault * util/grub.d/10_hurd.in: Add a recovery mode. 2010-01-23 Vladimir Serbinenko * configure.ac: Check for libgcc symbols with -nostdlib. 2010-01-23 BVK Chaitanya * acinclude.m4: Quote underquoted AC_DEFUN parameters. 2010-01-22 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_setcolorstate): Allocate on stack since heap may be unavailable at that point. (grub_ofconsole_gotoxy): Likewise. 2010-01-22 Vladimir Serbinenko * configure.ac: Check for _restgpr_14_x. * include/grub/powerpc/libgcc.h [HAVE__RESTGPR_14_X]: Add _restgpr_*_x and _savegpr_* prototypes. 2010-01-22 Robert Millan Use generic grub_reboot() for i386-efi. * kern/efi/efi.c [__i386__] (grub_reboot): Remove. * kern/i386/efi/startup.S: Include `"../realmode.S"'. * kern/i386/realmode.S: Include `'. 2010-01-22 Vladimir Serbinenko * kern/ieee1275/init.c (grub_machine_set_prefix): Don't check for presence of "prefix" variable as it breaks when normal.mod is embedded. 2010-01-21 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_dimensions): Allocate on stack since heap is unavailable at that point. 2010-01-21 Vladimir Serbinenko * include/grub/i386/bsd.h (FREEBSD_N_BIOS_GEOM): Removed. (grub_freebsd_bootinfo): Rewritten. * loader/i386/bsd.c (grub_freebsd_boot): Use new grub_freebsd_bootinfo. 2010-01-21 Vladimir Serbinenko * util/misc.c (make_system_path_relative_to_its_root): Fix typo. 2010-01-21 Robert Millan * po/POTFILES: Remove mkisofs-related files. They have their own TLP domain now. 2010-01-20 Felix Zielcke * util/misc.c (make_system_path_relative_to_its_root): Change the work around for handling "/" to the correct fix. Fix a memory leak. Use xstrdup instead of strdup. 2010-01-20 Vladimir Serbinenko * conf/mips.rmk (kernel_img_HEADERS): Add env_private.h 2010-01-20 Vladimir Serbinenko Optimise glyph lookup by Basic Multilingual Plane lookup array. * font/font.c (struct grub_font): New member 'bmp_idx'. (font_init): Initialise 'bmp_idx'. (load_font_index): Fill 'bmp_idx'. (find_glyph): Make inline. Use bmp_idx for BMP characters. 2010-01-20 Vladimir Serbinenko * video/fb/video_fb.c (grub_video_fb_scroll): Optimise by avoiding unnecessary calls. 2010-01-20 Vladimir Serbinenko Move context handling out of the kernel. * conf/any-emu.rmk (grub_emu_SOURCES): Add normal/context.c. * conf/common.rmk (normal_mod_SOURCES): Add normal/context.c. * conf/i386-coreboot.rmk (kernel_img_HEADERS): Add env_private.h. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/env.h: Include grub/menu.h. (grub_env_var_type): Removed. (grub_env_var): Replaced field 'type' with 'global'. (grub_env_find): New prototype. (grub_env_context_open): Remove EXPORT_FUNC. (grub_env_context_close): Likewise. (grub_env_export): Likewise. (grub_env_set_data_slot): Removed. (grub_env_get_data_slot): Likewise. (grub_env_unset_data_slot): Likewise. (grub_env_unset_menu): New prototype. (grub_env_set_menu): Likewise. (grub_env_get_menu): Likewise. * include/grub/env_private.h: New file. * include/grub/normal.h (grub_context_init): New prototype. (grub_context_fini): Likewise. * kern/corecmd.c (grub_core_cmd_export): Moved from here ... * normal/context.c (grub_cmd_export): ... to here. * kern/env.c: Include env_private.h. (HASHSZ): Moved to include/grub/env_private.h. (grub_env_context): Likewise. (grub_env_sorted_var): Likewise. (current_context): Renamed from this ... (grub_current_context): ...to this. 'static' removed. All users updated. (grub_env_find): Removed 'static'. (grub_env_context_open): Moved to normal/context.c. (grub_env_context_close): Likewise. (grub_env_export): Likewise. (mangle_data_slot_name): Removed. (grub_env_set_data_slot): Likewise. (grub_env_get_data_slot): Likewise. (grub_env_unset_data_slot): Likewise. * kern/main.c (grub_set_root_dev): Don't export root. It will be done later. (grub_main): Don't export prefix. It will be done later. * normal/context.c: New file. * normal/main.c (free_menu): Use grub_env_unset_menu. (grub_normal_add_menu_entry): Use grub_env_get_menu. (read_config_file): Use grub_env_get_menu and grub_env_set_menu. (GRUB_MOD_INIT(normal)): Call grub_context_init. (GRUB_MOD_FINI(normal)): Call grub_context_fini. 2010-01-20 Vladimir Serbinenko setpci support. * commands/setpci.c: New file. * conf/i386.rmk (pkglib_MODULES): Add setpci.mod. (setpci_mod_SOURCES): New variable. (setpci_mod_CFLAGS): Likewise. (setpci_mod_LDFLAGS): Likewise. 2010-01-20 Vladimir Serbinenko Byte-addressable PCI configuration space. * bus/pci.c (grub_pci_make_address): Use byte address instead of dword address. (grub_pci_iterate): Use macroses GRUB_PCI_REG_PCI_ID and GRUB_PCI_REG_CACHELINE. * bus/usb/ohci.c (grub_ohci_pci_iter): Use macroses GRUB_PCI_REG_CLASS and GRUB_PCI_REG_ADDRESS_REG0. * bus/usb/uhci.c (grub_ohci_pci_iter): Use macroses GRUB_PCI_REG_CLASS and GRUB_PCI_REG_ADDRESS_REG4. * commands/efi/fixvideo.c (scan_card): Use macros GRUB_PCI_REG_CLASS. * commands/efi/loadbios.c (enable_rom_area): Pass byte-address to grub_pci_make_address. (lock_rom_area): Likewise. * commands/lspci.c (grub_lspci_iter): Use macroses GRUB_PCI_REG_CLASS and GRUB_PCI_REG_ADDRESSES. Handle byte-addressing of grub_pci_make_address. * disk/ata.c (grub_ata_pciinit): Likewise. * include/grub/pci.h (GRUB_PCI_REG_PCI_ID): New macro. (GRUB_PCI_REG_VENDOR): Likewise. (GRUB_PCI_REG_DEVICE): Likewise. (GRUB_PCI_REG_COMMAND): Likewise. (GRUB_PCI_REG_STATUS): Likewise. (GRUB_PCI_REG_REVISION): Likewise. (GRUB_PCI_REG_CLASS): Likewise. (GRUB_PCI_REG_CACHELINE): Likewise. (GRUB_PCI_REG_LAT_TIMER): Likewise. (GRUB_PCI_REG_HEADER_TYPE): Likewise. (GRUB_PCI_REG_BIST): Likewise. (GRUB_PCI_REG_ADDRESSES): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_ADDRESS_REG): Likewise. (GRUB_PCI_REG_CIS_POINTER): Likewise. (GRUB_PCI_REG_SUBVENDOR): Likewise. (GRUB_PCI_REG_SUBSYSTEM): Likewise. (GRUB_PCI_REG_ROM_ADDRESS): Likewise. (GRUB_PCI_REG_CAP_POINTER): Likewise. (GRUB_PCI_REG_IRQ_LINE): Likewise. (GRUB_PCI_REG_IRQ_PIN): Likewise. (GRUB_PCI_REG_MIN_GNT): Likewise. (GRUB_PCI_REG_MAX_LAT): Likewise. * loader/i386/efi/linux.c (find_framebuf): Use GRUB_PCI_REG_CLASS. * loader/i386/efi/xnu.c (find_framebuf): Likewise. * video/efi_uga.c (find_framebuf): Likewise. * video/sm712.c (grub_video_sm712_setup): Likewise. * util/pci.c (grub_pci_make_address): Use byte-addressed configuration space. 2010-01-20 Robert Millan * util/grub.d/10_linux.in (linux_entry): Set gfxpayload=keep when it can be reliably determined to be supported. 2010-01-20 Robert Millan * loader/i386/linux.c (grub_cmd_linux): If `vga=' was used, write down that VESA is supported. (grub_linux_boot): Use generic framebuffer unless VESA is known to be supported. 2010-01-20 Vladimir Serbinenko * conf/common.rmk (font/font.c_DEPENDENCIES): Condition on FONT_SOURCE. 2010-01-20 Robert Millan * util/misc.c (make_system_path_relative_to_its_root): Work around special-casing of "/", as previous incarnation of this routine did. 2010-01-20 Vladimir Serbinenko Fix any-emu compilation. * conf/any-emu.rmk (bin_UTILITIES): Add grub-bin2h. * grub_bin2h_SOURCES: New variable. 2010-01-20 Robert Millan * util/grub.d/00_header.in: Fix stupid mistake from last commit. 2010-01-20 Robert Millan * util/grub.d/00_header.in: Fix handling of locale_dir. 2010-01-20 Vladimir Serbinenko * configure.ac: Add /usr/share/fonts/unifont/unifont.pcf.gz as possible unifont location (Gentoo). Reported by: Alexander Brüning 2010-01-20 Vladimir Serbinenko Don't try to generate lists for kernel.img. * conf/i386-efi.rmk (pkglib_PROGRAMS): New variable. (pkglib_MODULES): Remove kernel.img. (kernel_img_EXPORTS): Removed. (kernel_img_RELOCATABLE): New variable. * conf/x86_64-efi.rmk: Likewise. * genmk.rb: Remove *_EXPORTS support and add *_RELOCATABLE support. 2010-01-20 Vladimir Serbinenko * include/grub/misc.h (grub_sprintf): Removed. All users switched to grub_xasprintf or grub_snprintf. (grub_vsprintf): Likewise. (grub_snprintf): New proto. (grub_vsnprintf): Likewise. (grub_xasprintf): Likewise. (grub_xvasprintf): Likewise. * kern/misc.c (grub_vprintf): Use grub_vsnprintf_real. (grub_sprintf): Removed. (grub_vsnprintf): New function. (grub_snprintf): Likewise. (grub_xvasprintf): Likewise. (grub_xasprintf): Likewise. (grub_vsprintf): Renamed to ... (grub_vsnprintf_real): ...this. New argument max_len. 2010-01-20 BVK Chaitanya * include/grub/script_sh.h (sourcecode): Remove const qualifier to fix grub-script-check warning. 2010-01-20 Vladimir Serbinenko * include/grub/font.h (grub_font_load): Fix prototype. 2010-01-20 Vladimir Serbinenko * conf/mips.rmk (kernel_img_HEADERS) [yeeloong]: Add pci.h. 2010-01-20 Vladimir Serbinenko * include/grub/x86_64/at_keyboard.h: New file. 2010-01-20 Vladimir Serbinenko * loader/mips/linux.c: Include missing grub/i18n.h. 2009-12-20 Robert Millan * normal/menu.c (notify_execution_failure): Clarify error message. 2009-12-20 Robert Millan * commands/loadenv.c (check_blocklists): Use `grub_err_t' as return value (and revert all return statements). Update users. 2010-01-20 Dan Merillat * kern/device.c (grub_device_iterate): Allocate new part_ent structure based on sizeof (*p) rather than sizeof (p->next), to account for structure padding. * util/grub-probe.c (probe_raid_level): Return -1 immediately if disk is NULL, which might happen for LVM physical volumes with no LVM signature. 2009-12-20 Robert Millan * loader/mips/linux.c (grub_cmd_initrd) (GRUB_MOD_INIT(linux)): Adjust and gettextize a few strings. 2009-12-20 Robert Millan * kern/mips/yeeloong/init.c (grub_video_sm712_init) (grub_video_video_init, grub_video_bitmap_init) (grub_font_manager_init, grub_term_gfxterm_init) (grub_at_keyboard_init): New extern declarations. (grub_machine_init): Initialize gfxterm and at_keyboard. * kern/main.c (grub_main): Revert grub_printf delay kludge. * util/grub-install.in: Revert embed of `at_keyboard.mod' and `gfxterm.mod' into core image. * conf/mips.rmk (pkglib_IMAGES, kernel_img_SOURCES) (kernel_img_CFLAGS, kernel_img_ASFLAGS, kernel_img_LDFLAGS) (kernel_img_FORMAT): Copy to ... * conf/mips-qemu-mips.rmk (pkglib_IMAGES, kernel_img_SOURCES) (kernel_img_CFLAGS, kernel_img_ASFLAGS, kernel_img_LDFLAGS) (kernel_img_FORMAT): ... here, and ... * conf/mips-yeeloong.rmk (pkglib_IMAGES, kernel_img_SOURCES) (kernel_img_CFLAGS, kernel_img_ASFLAGS, kernel_img_LDFLAGS) (kernel_img_FORMAT): ... here. (kernel_img_SOURCES): Add files necessary for output (gfxterm) and input (at_keyboard) terminals in kernel. (kernel_img_CFLAGS): Add `-DUSE_ASCII_FAILBACK'. (pkglib_MODULES): Remove `pci.mod'. (pci_mod_SOURCES, pci_mod_CFLAGS, pci_mod_LDFLAGS) (sm712_mod_SOURCES, sm712_mod_CFLAGS, sm712_mod_LDFLAGS) (at_keyboard_mod_SOURCES, at_keyboard_mod_CFLAGS) (at_keyboard_mod_LDFLAGS): Remove variables. 2010-01-11 Felix Zielcke * po/POTFILES: Replace `term/i386/pc/serial.c' with `term/serial.c'. 2009-12-10 Robert Millan * include/grub/mips/libgcc.h: Only export symbols for functions that libgcc provides. 2009-12-02 Vladimir Serbinenko MIPS support. * bus/bonito.c: New file. * bus/pci.c (grub_pci_iterate): Use GRUB_PCI_NUM_BUS and GRUB_PCI_NUM_DEVICES. * term/i386/pc/serial.c: Move to ... * term/serial.c: ... here. All users updated. * util/i386/pc/grub-mkimage.c: Move to ... * util/grub-mkrawimage.c: ... here. All users updated. * term/i386/pc/at_keyboard.c: Move to ... * term/at_keyboard.c: ... here. All users updated. * conf/mips-qemu-mips.rmk: New file. * conf/mips-yeeloong.rmk: Likewise. * conf/mips.rmk: Likewise. * configure.ac: New platforms mipsel-yeeloong, mips-qemu-mips and mipsel-qemu-mips. * disk/ata.c (grub_ata_device_initialize): Add GRUB_MACHINE_PCI_IO_BASE to port addresses. (grub_ata_pciinit): Support CS5536. * font/font.c (grub_font_load): Use grub_file_t instead of filename. * font/font_cmd.c (loadfont_command): Open file before passing it to grub_font_load. (pseudo_file_read): New function. (pseudo_file_close): Likewise. (pseudo_fs): New structure. (load_font_module): New function. (GRUB_MOD_INIT(font_manager)): Load embedded font. * fs/cpio.c (grub_cpio_open): Handle partial matches correctly. * genmk.rb: Strip .rel.dyn, .reginfo, .note and .comment. * genmoddep.awk: Ignore __gnu_local_gp. It's defined by linker. * include/grub/i386/at_keyboard.h: Split into ... * include/grub/at_keyboard.h: ... this ... * include/grub/i386/at_keyboard.h: ... and this. * include/grub/dl.h (grub_arch_dl_init_linker) [_mips && !GRUB_UTIL]: New prototype. * include/grub/elfload.h (grub_elf32_size): New parameter. All users updated. (grub_elf64_size): Likewise. * include/grub/font.h (grub_font_load): Use grub_file_t instead of filename. * include/grub/i386/io.h (grub_port_t): New type. All users updated. * include/grub/i386/coreboot/serial.h: Rewritten. * include/grub/i386/ieee1275/serial.h: Include grub/i386/coreboot/serial.h instead of grub/i386/pc/serial.h. * include/grub/i386/pc/serial.h: Moved from here ... * include/grub/serial.h: ... to here. All users updated. * include/grub/i386/pci.h (GRUB_MACHINE_PCI_IO_BASE): New definition. (GRUB_PCI_NUM_BUS): Likewise. (GRUB_PCI_NUM_DEVICES): Likewise. (grub_pci_device_map_range): Add missing volatile keyword. * include/grub/kernel.h (OBJ_TYPE_FONT): New enum value. * include/grub/mips/at_keyboard.h: New file. * include/grub/mips/cache.h: Likewise. * include/grub/mips/io.h: Likewise. * include/grub/mips/kernel.h: Likewise. * include/grub/mips/libgcc.h: Likewise. * include/grub/mips/pci.h: Likewise. * include/grub/mips/qemu-mips/boot.h: Likewise. * include/grub/mips/qemu-mips/kernel.h: Likewise. * include/grub/mips/qemu-mips/loader.h: Likewise. * include/grub/mips/qemu-mips/memory.h: Likewise. * include/grub/mips/qemu-mips/serial.h: Likewise. * include/grub/mips/qemu-mips/time.h: Likewise. * include/grub/mips/relocator.h: Likewise. * include/grub/mips/time.h: Likewise. * include/grub/mips/types.h: Likewise. * include/grub/mips/yeeloong/at_keyboard.h: Likewise. * include/grub/mips/yeeloong/boot.h: Likewise. * include/grub/mips/yeeloong/kernel.h: Likewise. * include/grub/mips/yeeloong/loader.h: Likewise. * include/grub/mips/yeeloong/memory.h: Likewise. * include/grub/mips/yeeloong/pci.h: Likewise. * include/grub/mips/yeeloong/serial.h: Likewise. * include/grub/mips/yeeloong/time.h: Likewise. * kern/dl.c (grub_dl_resolve_symbols): Handle STT_OBJECT correctly. * kern/elf.c (grub_elf32_size): New parameter. All users updated. (grub_elf64_size): Likewise. * kern/main.c (grub_main): Call grub_arch_dl_init_linker if necessary. Load modules before saying "Welcome to GRUB!". Call grub_refresh after saying "Welcome to GRUB!". * kern/mips/cache.S: New file. * kern/mips/cache_flush.S: Likewise. * kern/mips/dl.c: Likewise. * kern/mips/init.c: Likewise. * kern/mips/qemu-mips/init.c: Likewise. * kern/mips/startup.S: Likewise. * kern/mips/yeeloong/init.c: Likewise. * kern/term.c (grub_putcode): Handle NULL terminal. (grub_getcharwidth): Likewise. (grub_getkey): Likewise. (grub_checkkey): Likewise. (grub_getkeystatus): Likewise. (grub_getxy): Likewise. (grub_getwh): Likewise. (grub_gotoxy): Likewise. (grub_cls): Likewise. (grub_setcolorstate): Likewise. (grub_setcolor): Likewise. (grub_getcolor): Likewise. (grub_refresh): Likewise. * lib/mips/relocator.c (JUMP_SIZEOF): Fix incorrect value. (write_jump): Add hatch nop. * lib/mips/relocator_asm.S: Use kern/mips/cache_flush.S. * lib/mips/setjmp.S: New file. * loader/mips/linux.c: Likewise. * term/i386/pc/at_keyboard.c: Move from here ... * term/at_keyboard.c: ... to here. * term/i386/pc/serial.c: Moved from here ... * term/serial.c: ... to here. All users updated. (TEXT_HEIGHT): Set to 24 to fit linux terminal. (serial_hw_io_addr): Use GRUB_MACHINE_SERIAL_PORTS. (serial_translate_key_sequence): Avoid deadlock. (grub_serial_getkey): Handle backspace. (grub_serial_putchar): Fix newline handling. * util/i386/pc/grub-mkimage.c: Move from here ... * util/grub-mkrawimage.c: ... to here. All users updated. (generate_image): New parameters 'font_path' and 'format'. Support embedding font. Use grub_host_to_target* instead of grub_cpu_to_le*. (generate_image) [GRUB_MACHINE_MIPS]: Support ELF encapsulation. (options) [GRUB_PLATFORM_IMAGE_DEFAULT]: New option "--format". (options): New option "--font". (usage): Likewise. (main) [GRUB_PLATFORM_IMAGE_DEFAULT]: Handle "--format". (main): Handle "--font". * term/gfxterm.c (grub_virtual_screen): New member bg_color_display. (grub_virtual_screen_setup): Set bg_color_display. (redraw_screen_rect): Use bg_color_display instead of incorrect bg_color. (grub_gfxterm_cls): Likewise. * util/elf/grub-mkimage.c (load_modules): New parameter 'config_path'. Support embedding config file. (add_segments): Likewise. (options): New option "--config". (main): Handle "--config". * video/sm712.c: New file. 2010-01-18 Robert Millan Fix parallel builds. * conf/common.rmk (font/font.c_DEPENDENCIES): New variable (makes font.c depend on ascii.h). 2010-01-12 Carles Pina i Estany * Makefile.in (DUSE_ASCII_FAILBACK): New macro. 2010-01-11 Carles Pina i Estany * font/font.c (GENERATE_ASCII): Change the name to USE_ASCII_FAILBACK. By default: disabled. * Makefile.in (ascii.h): Remove the non-needed grub/bin2h size parameter. 2010-01-10 Carles Pina i Estany * font/font.c: Update copyright years. * util/grub-mkfont.c (write_font_ascii_bitmap): Change comment format. 2010-01-10 Carles Pina i Estany * font/font.c: Include `ascii.h'. (ASCII_BITMAP_SIZE): New macro. (ascii_font_glyph): Define. (ascii_glyph_lookup): New function. (grub_font_get_string_width): Change comment. If glyph not found, use ascii_glyph_lookup. (grub_font_get_glyph_with_fallback): If glyph not available returns ascii_glyph_lookup. * util/grub-mkfont.c (file_formats): New enum. (options): Add `ascii-bitmaps' new option. (usage): Add `asii-bitmaps' new option. (write_font_ascii_bitmap): New function. (write_font): Rename to ... (write_font_p2): ... this. Remove print_glyphs call. (main): Use file_format. Implement code for ranges if ascii-bitmaps is used. Call print_glyphs. * Makefile.in (pkgdata_DATA): Add `ascii.h'. 2010-01-14 Robert Millan * conf/common.rmk (bin_UTILITIES): Add `grub-bin2h'. (grub_bin2h_SOURCES): New variable. * util/bin2h.c: New file. 2010-01-20 Vladimir Serbinenko * include/multiboot.h: Resynced with spec. * include/multiboot2.h: Likewise. * loader/i386/multiboot_mbi.c (grub_fill_multiboot_mmap): Handle GRUB_MACHINE_MEMORY_ACPI_RECLAIMABLE and GRUB_MACHINE_MEMORY_NVS. 2010-01-18 Robert Millan * include/grub/term.h (grub_term_register_input, grub_term_register_output): Check return of terminal init() routines, and abort if errors are raised. * commands/terminal.c: Update copyright year. 2010-01-18 Robert Millan * commands/terminal.c (grub_cmd_terminal_input) (grub_cmd_terminal_output): Check return of terminal init() routines, and abort if errors are raised. 2010-01-18 Vladimir Serbinenko * include/grub/i386/bsd.h: Fix include pathes. 2010-01-18 Vladimir Serbinenko Add missing *BSD copyright headers. * include/grub/aout.h: Add BSD licence. * include/grub/i386/bsd.h: Parts under different licences moved to ... * include/grub/i386/freebsd_linker.h: ... here, * include/grub/i386/freebsd_reboot.h: ... here, * include/grub/i386/netbsd_bootinfo.h: ... here, * include/grub/i386/netbsd_reboot.h: ... here, * include/grub/i386/openbsd_bootarg.h: ... here, * include/grub/i386/openbsd_reboot.h: ... and here. Added appropriate licence to each file. 2010-01-18 Robert Millan * acinclude.m4: Remove `nop' assembly instruction; it's not implemented by all architectures. 2010-01-18 Robert Millan * loader/i386/efi/linux.c (grub_cmd_linux): Stop pretending we're ELILO. This is no longer necessary. 2010-01-18 BVK Chaitanya Added new tool, grub-scrit-check to verify grub.cfg syntax. * util/grub-script-check.c: grub-script-check tool. * conf/common.rmk: Make rules for grub-script-check. 2010-01-18 Robert Millan Fix annoying UI bug in rescue mode. Thanks to Tristan Gingold for spotting it back in 2008. Shame on me for forgetting he did. * kern/rescue_reader.c (grub_rescue_run): Skip zero-length lines. 2010-01-18 Robert Millan * include/grub/i386/linux.h (GRUB_VIDEO_TYPE_TEXT): Rename to ... (GRUB_VIDEO_LINUX_TYPE_TEXT): ... this. Update all users. (GRUB_VIDEO_TYPE_VLFB): Rename to ... (GRUB_VIDEO_LINUX_TYPE_VESA): ... this. Update all users. (GRUB_VIDEO_TYPE_EFI): Rename to ... (GRUB_VIDEO_LINUX_TYPE_SIMPLE): ... this. Update all users. 2010-01-17 Robert Millan * include/grub/test.h: Add license header. * tests/example_functional_test.c: Likewise. * tests/example_unit_test.c: Likewise. * tests/lib/functional_test.c: Likewise. * tests/lib/test.c: Likewise. * tests/lib/unit_test.c: Likewise. 2010-01-17 Vladimir Serbinenko Use flag-based instead of hook-based video mode selection and "auto" keyword. * include/grub/video.h (grub_video_adapter): Changed 'setup' member. (grub_video_set_mode): Changed prototype. All users updated. (grub_video_check_mode_flag): New inline function. * video/video.c (parse_modespec): New function. (grub_video_set_mode): Parse flags and keywords. 2010-01-17 Carles Pina i Estany * util/misc.c (grub_util_info): Fix the order of the parameters in a fprintf call. 2010-01-16 Grégoire Sutre * genmk.rb (class SCRIPT): Replace option -i of sed by a pipe. 2010-01-16 Carles Pina i Estany * util/grub-editenv.c (usage): Use `program_name' instead of hardcoded string. * util/grub-emu.c (usage): Likewise. * util/grub-mkpasswd-pbkdf2.c (usage): Likewise. * util/i386/efi/grub-mkimage.c (usage): Likewise. * util/i386/pc/grub-mkimage.c (usage): Likewise. * util/i386/pc/grub-setup.c (usage): Likewise. 2010-01-16 Carles Pina i Estany * util/misc.c (grub_util_warn): Gettextizze, print full stop after the message. (grub_util_info): Likewise. (grub_util_error): Likewise. * util/elf/grub-mkimage.c: Fix capitalisation, quotes, full stops and/or new lines in `grub_util_warna', `grub_util_info', `grub_util_error' calls. * util/getroot.c: Likewise. * util/grub-editenv.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-fstest.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-mkfont.c: Likewise. * util/grub-mkpasswd-pbkdf2.c: Likewise. * util/grub-mkrelpath.c: Likewise. * util/grub-pe2elf.c: Likewise. * util/grub-probe.c: Likewise. * util/hostdisk.c: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/ieee1275/ofpath.c: Likewise. * util/mkisofs/eltorito.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/write.c: Likewise. * util/raid.c: Likewise. * util/sparc64/ieee1275/grub-mkimage.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. 2010-01-15 Vladimir Serbinenko Enable multiboot on non-pc. * conf/i386-coreboot.rmk, conf/i386-pc.rmk (pkglib_MODULES): Move multiboot.mod and multiboot2.mod to ... * conf/i386.rmk (pkglib_MODULES): ... here. * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_SOURCES): Moved to ... * conf/i386.rmk (multiboot_mod_SOURCES): .. here. * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_CFLAGS): Moved to ... * conf/i386.rmk (multiboot_mod_CFLAGS): .. here. * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_ASFLAGS): Moved to ... * conf/i386.rmk (multiboot_mod_ASFLAGS): .. here. * conf/i386-coreboot.rmk, conf/i386-pc.rmk (multiboot_mod_LDFLAGS): Moved to ... * conf/i386.rmk (multiboot_mod_LDFLAGS): .. here. * conf/x86_64-efi.rmk (pkglib_MODULES): Remove ata.mod and relocator.mod. (ata_mod_SOURCES): Removed. (ata_mod_CFLAGS): Likewise. (ata_mod_LDFLAGS): Likewise. (relocator_mod_SOURCES): Removed. (relocator_mod_CFLAGS): Likewise. (relocator_mod_ASFLAGS): Likewise. (relocator_mod_LDFLAGS): Likewise. Include i386.mk. * include/grub/x86_64/multiboot.h: New file. * loader/i386/multiboot.c (grub_multiboot_boot) [GRUB_MACHINE_EFI]: Terminate EFI. 2010-01-15 Vladimir Serbinenko Video multiboot support. * include/grub/multiboot.h (grub_multiboot_set_accepts_video): New prototype. * include/multiboot.h: Resynced with multiboot specification. * include/multiboot2.h: Likewise. * loader/i386/multiboot.c (UNSUPPORTED_FLAGS): Support video flags. (grub_multiboot): Parse MULTIBOOT_VIDEO_MODE fields. * loader/i386/multiboot_mbi.c (DEFAULT_VIDEO_MODE): New constant. (HAS_VGA_TEXT): Likewise. (accepts_video): New variable. (grub_multiboot_set_accepts_video): New function. (grub_multiboot_get_mbi_size): Account for video structures. (set_video_mode): New function. (retrieve_video_parameters): Likewise. (grub_multiboot_make_mbi): Fill video fields. 2010-01-15 Vladimir Serbinenko Video driver ids. * include/grub/video.h (grub_video_driver_id): New type. (grub_video_adapter): New member 'id'. All users updated. (grub_video_get_driver_id): New proto. * video/video.c (grub_video_get_driver_id): New function. 2010-01-14 Carles Pina i Estany * util/grub.d/30_os-prober.in: Use `set var=val' rather than plain `var=val'. 2010-01-14 Carles Pina i Estany * normal/cmdline.c (print_completion): Gettextizze. 2001-01-14 Carles Pina i Estany * loader/i386/pc/chainloader.c: Include `'. 2010-01-14 Carles Pina i Estany * gettext/gettext.c (grub_gettext_translate): Push and pop grub_errno. (grub_gettext_delete_list): Change comment style. * kern/err.c (grub_error): Gettextizze. (grub_fatal): Gettextizze. 2010-01-14 Robert Millan * include/grub/i386/loader.h (grub_linux16_boot): Renamed to ... (grub_linux16_real_boot): ... this. * kern/i386/loader.S: Likewise. * loader/i386/pc/linux.c: Include `' and `'. (grub_linux16_boot): New function. Switches to text mode and calls grub_linux16_real_boot(). * loader/i386/bsd.c: Include `'. (grub_freebsd_boot, grub_openbsd_boot, grub_netbsd_boot): Switch to text mode before calling grub_unix_real_boot(). * loader/i386/multiboot.c: Include `'. (grub_multiboot_boot): Switch to text mode before calling grub_relocator32_boot(). * loader/i386/pc/chainloader.c: Include `'. (grub_chainloader_boot): Switch to text mode before calling grub_chainloader_real_boot(). 2010-01-05 Jordan Uggla 2010-01-05 Colin Watson * util/grub-reboot.in: Make sure prev_saved_entry always gets a non-empty value. 2010-01-05 Jordan Uggla 2010-01-05 Colin Watson * util/grub.d/00_header.in: Define a "savedefault" function for use in menu entries. * util/grub-mkconfig_lib.in (save_default_entry): Use it. 2010-01-05 Jordan Uggla 2010-01-05 Colin Watson * util/grub-mkconfig_lib.in (save_default_entry): Only set saved_entry if boot_once is unset. * util/grub.d/00_header.in: Set boot_once to "true" if there was a previous saved entry (i.e. grub-reboot). 2009-12-08 Colin Watson * util/grub.d/30_os-prober.in: Call save_default_entry for hurd. 2009-12-08 Colin Watson * util/grub.d/00_header.in: Use `set var=val' rather than plain `var=val'. * util/grub-mkconfig_lib.in (save_default_entry): Likewise. 2009-12-08 Colin Watson * util/grub-reboot.in: Fix --version output. * util/grub-set-default.in: Likewise. 2009-12-08 Colin Watson * util/grub.d/00_header.in: Silently ignore zero-sized environment blocks. 2009-12-08 Colin Watson * util/grub.d/00_header.in: Quote the value assigned to `default', in case it contains spaces. 2009-12-08 Colin Watson * util/grub.d/30_os-prober.in: Fix merge error that moved a `save_default_entry' call from the macosx case to the linux case. 2009-10-25 Vladimir Serbinenko 2009-10-25 Colin Watson * normal/menu.c (grub_menu_execute_entry): Save selected entry title in `chosen' environment variable. * normal/menu_text.c (get_entry_number): Check if the variable matches the title of a menu entry. (run_menu): Pass menu to get_entry_number. * util/grub-reboot.in: New file. * util/grub-set-default.in: New file. * conf/common.rmk (grub-reboot): New utility. (grub-set-default): New utility. * util/grub-mkconfig_lib.in (save_default_entry): New function. * util/grub.d/00_header.in: If GRUB_DEFAULT is `saved', set default to `${saved_entry}'. If `${prev_saved_entry}' is non-empty, move it to `saved_entry' for the next boot. Load environment on initialisation. * util/grub.d/10_kfreebsd.in: Call save_default_entry. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in (linux_entry): Likewise. * util/grub.d/10_windows.in: Likewise. * util/grub.d/30_os-prober.in: Likewise. * util/grub-install.in: Create environment block. * util/i386/efi/grub-install.in: Likewise. * util/ieee1275/grub-install.in: Likewise. * util/sparc64/ieee1275/grub-install.in: Likewise. 2010-01-14 BVK Chaitanya Unit testing framework for GRUB. * Makefile.in: Test framework build rules for 'make check'. * conf/tests.rmk: Build rules for individual tests and framework. * include/grub/test.h: Header file for whitebox tests. * tests/lib/functional_test.c: Framework support for whitebox functional tests. * tests/lib/test.c: Common whitebox testing code for unit and functional tests. * tests/lib/unit_test.c: Framework support for whitebox unit tests. * tests/util/grub-shell-tester.in: Support utility for grub-script tests. * tests/util/grub-shell.in: Utility to execute grub-script commands in a Qemu instance. * tests/example_functional_test.c: Example whitebox functional test. * tests/example_grub_script_test.in: Example grub-script test. * tests/example_scripted_test.in: Example scripted test. * tests/example_unit_test.c: Example whitebox unit test. 2010-01-14 Vladimir Serbinenko * conf/i386-coreboot.rmk (multiboot_mod_SOURCES): Add loader/i386/multiboot_mbi.c. (multiboot2_mod_SOURCES): Likewise. * conf/i386-pc.rmk (multiboot_mod_SOURCES): Likewise. (multiboot2_mod_SOURCES): Likewise. * include/grub/multiboot.h (grub_multiboot_get_mbi_size): New proto. (grub_multiboot_make_mbi): Likewise. (grub_multiboot_free_mbi): Likewise. (grub_multiboot_init_mbi): Likewise. (grub_multiboot_add_module): Likewise. (grub_multiboot_set_bootdev): Likewise. * loader/i386/multiboot.c (mbi): Removed. (mbi_dest): Likewise. (alloc_mbi): New variable. (grub_multiboot_payload_size): Removed. All users updated. (grub_multiboot_pure_size): New variable. (grub_multiboot_boot): Use grub_multiboot_make_mbi. (grub_multiboot_unload): Use grub_multiboot_free_mbi. (grub_get_multiboot_mmap_len): Moved to loader/i386/multiboot_mbi.c. (grub_fill_multiboot_mmap): Likewise. (grub_multiboot_get_bootdev): Likewise. (grub_multiboot): Use multiboot_mbi functions. * loader/i386/multiboot_mbi.c: New file. 2010-01-13 Vladimir Serbinenko * kern/efi/init.c (grub_efi_fini): Don't call grub_efi_mm_fini as it would result in module crash. 2010-01-13 Vladimir Serbinenko * term/ieee1275/ofconsole.c (grub_ofconsole_putchar): Handle '\r'. (grub_ofconsole_getwh): Split to ... (grub_ofconsole_getwh): ... this. (grub_ofconsole_dimensions): ...and this. (grub_ofconsole_init_output): Call grub_ofconsole_dimensions. 2010-01-13 Robert Millan * util/mkisofs/rock.c (generate_rock_ridge_attributes): Fix a typo. 2010-01-12 Vladimir Serbinenko * loader/i386/pc/multiboot2.c: Removed stalled file. 2010-01-12 Vladimir Serbinenko * util/grub-mkpasswd-pbkdf2.c (main): Use grub_util_init_nls. Reported by: Grégoire Sutre 2010-01-11 Robert Millan * util/misc.c (canonicalize_file_name): New function. (make_system_path_relative_to_its_root): Use canonicalize_file_name() instead of realpath(). 2010-01-11 Colin Watson * util/grub-install.in (usage): Clarify meaning of --root-directory, and make it clearer that it's optional. Based on confusion witnessed on IRC. 2010-01-10 Vladimir Serbinenko * term/i386/pc/vga_text.c (inc_y): Fix off-by-one error which resulted in premature implicit newline. 2010-01-10 Vladimir Serbinenko * normal/cmdline.c (grub_cmdline_get): Fix off-by-one error which resulted in garbled command line at the end of screen. 2010-01-10 Robert Millan * loader/i386/ieee1275/linux.c (grub_linux_boot): Rework video position initialization with similar approach as with other Linux loaders. 2010-01-10 Robert Millan Fix i386-ieee1275 build. * loader/i386/ieee1275/linux.c (grub_linux_boot): Use grub_term_width() and grub_term_height() for video_{width,height} initialization. 2010-01-10 Robert Millan Fix grub-emu build. * conf/any-emu.rmk (grub_emu_SOURCES): Remove `kern/reader.c'. 2010-01-07 Vladimir Serbinenko 2010-01-09 Robert Millan Support for multiple terminals. * Makefile.in (pkglib_DATA): terminal.lst. (terminal.lst): New target. * commands/handler.c (grub_cmd_handler): Don't handle terminals. (GRUB_MOD_INIT(handler)): Likewise. (GRUB_MOD_FINI(handler)): Likewise. * commands/help.c (grub_cmd_help): Handle multiple terminals. * commands/keystatus.c (grub_cmd_keystatus): Likewise. * commands/sleep.c (do_print): Use grub_term_restore_pos. (grub_cmd_sleep): Use grub_term_save_pos. * commands/terminal.c: New file. * conf/any-emu.rmk (grub_emu_SOURCES): Add normal/term.c commands/terminal.c and lib/charset.c. * conf/common.rmk (normal_mod_SOURCES): Add normal/term.c. (pkglib_MODULES): Add terminal.mod. (terminal_mod_SOURCES): New variable. (terminal_mod_CFLAGS): Likewise. (terminal_mod_LDFLAGS): Likewise. * genhandlerlist.sh: Don't handle terminals. * genmk.rb: Generate terminal-*.lst. * genterminallist.sh: New file. * include/grub/charset.h (grub_ucs4_to_utf8_alloc): New proto. (grub_is_valid_utf8): Likewise. (grub_utf8_to_ucs4_alloc): Likewise. * include/grub/menu_viewer.h (grub_menu_viewer): Rewritten. (grub_menu_register_viewer): Changed argument. (grub_menu_try_text): New proto. (grub_gfxmenu_try_hook): New declaration. * include/grub/normal.h (grub_normal_exit_level): New declaration. (grub_menu_init_page): Additional argument term. (grub_normal_init_page): Likewise. (grub_cmdline_get): Arguments simplified. (grub_utf8_to_ucs4_alloc): Removed. (grub_print_ucs4): Additional argument term. (grub_getstringwidth): Likewise. (grub_print_message_indented): Likewise. (grub_menu_text_register_instances): New proto. (grub_show_menu): Likewise. (read_terminal_list): Likewise. (grub_set_more): Likewise. * include/grub/parser.h: Include handler.h. * include/grub/reader.h: Rewritten. * include/grub/term.h (GRUB_TERM_NEED_INIT): Removed. (GRUB_TERM_WIDTH): Changed to function. (GRUB_TERM_HEIGHT): Likewise. (GRUB_TERM_BORDER_WIDTH): Likewise. (GRUB_TERM_BORDER_HEIGHT): Likewise. (GRUB_TERM_NUM_ENTRIES): Likewise. (GRUB_TERM_ENTRY_WIDTH): Likewise. (GRUB_TERM_CURSOR_X): Likewise. (grub_term_input_class): Likewise. (grub_term_output_class): Likewise. (grub_term_outputs_disabled): New declaration. (grub_term_inputs_disabled): Likewise. (grub_term_outputs): Likewise. (grub_term_inputs): Likewise. (grub_term_register_input): Rewritten. (grub_term_register_output): Likewise. (grub_term_unregister_input): Likewise. (grub_term_unregister_output): Likewise. (FOR_ACTIVE_TERM_INPUTS): New macro. (FOR_DISABLED_TERM_INPUTS): Likewise. (FOR_ACTIVE_TERM_OUTPUTS): Likewise. (FOR_DISABLED_TERM_OUTPUTS): Likewise. * include/grub/terminfo.h: Add oterm argument to all protypes. * kern/main.c (grub_main): Don't call grub_register_rescue_reader. Use grub_rescue_run. * kern/misc.c (grub_utf8_to_ucs4): Put '?' for invalid characters. All users updated. * kern/reader.c: Removed. All users updated. * kern/rescue_reader.c (grub_rescue_init): Removed. (grub_rescue_reader): Likewise. (grub_register_rescue_reader): Likewise. (grub_rescue_run): New function based on kern/reader.c. * kern/term.c: Adapted for multiterm. * lib/charset.c (grub_ucs4_to_utf8_alloc): New function. (grub_is_valid_utf8): Likewise. (grub_utf8_to_ucs4_alloc): Moved from normal/menu_text.c. * loader/i386/efi/linux.c (grub_cmd_linux): Retrieve parameters of right terminal. * loader/i386/linux.c (grub_linux_boot): Likewise. * normal/auth.c (grub_username_get): New function. (grub_auth_check_authentication): Use grub_username_get. * normal/cmdline.c: Changed to UCS4. Adapted for multiterm. * normal/color.c: Adapt for multiterm. * normal/main.c (read_config_file): Don't use grub_reader_loop. (grub_normal_init_page): Additional argument term. (read_lists): Call read_terminal_lists. (grub_enter_normal_mode): Call grub_cmdline_run. Handle grub_normal_exit_level. (grub_cmd_normal): Make reentrant. (grub_cmd_normal_exit): New function. (grub_normal_reader_init): Additional argument nested. Handle multiterm. * normal/menu.c: Adapt for multiterm. * normal/menu_entry.c: Likewise. * normal/menu_text.c: Likewise. * normal/menu_viewer.c: Removed. All users updated. * normal/term.c: New file. * util/console.c: Change order of includes to workaround a bug in ncurses headers. * term/terminfo.c: New argument oterm on all exported functions. All users updated. * util/grub-editenv.c (grub_term_input_class): Removed. (grub_term_output_class): Likewise. 2010-01-09 Robert Millan Make loader output a bit more user-friendly. * util/grub.d/10_hurd.in: Print message indicating that GNU Mach is being loaded. Likewise for the Hurd. * util/grub.d/10_kfreebsd.in (kfreebsd_entry): Print message indicating that kernel of FreeBSD ${version} is being loaded. * loader/i386/linux.c (grub_cmd_linux): Move debug info to grub_dprintf(). (grub_cmd_initrd): Likewise. * util/grub.d/10_linux.in (linux_entry): Print message indicating that Linux ${version} is being loaded. Likewise for initrd. 2010-01-09 Carles Pina i Estany * gettext/gettext.c (GRUB_MOD_INIT): Gettextizze. 2010-01-08 Carles Pina i Estany * loader/efi/appleloader.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * loader/efi/chainloader.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * loader/i386/efi/linux.c: Include `'. (grub_cmd_linux): Capitalise Linux. (GRUB_MOD_INIT): Gettextizze. * loader/i386/ieee1275/linux.c: Include `'. (grub_cmd_linux): Capitalise Linux. (GRUB_MOD_INIT): Gettextizze. * loader/i386/linux.c: Include `'. (grub_cmd_linux): Capitalise Linux. (GRUB_MOD_INIT): Gettextizze. * loader/i386/pc/chainloader.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * loader/i386/pc/linux.c: Include `'. (grub_cmd_linux): Capitalise Linux. (GRUB_MOD_INIT): Gettextizze. * loader/i386/xnu.c: Include `'. (grub_cpu_xnu_init): Gettextizze. * loader/multiboot_loader.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * loader/powerpc/ieee1275/linux.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * loader/sparc64/ieee1275/linux.c: Include `'. (grub_linux_load64): Capitalise Linux. (GRUB_MOD_INIT): Gettextizze. * loader/xnu.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * po/POTFILES: Add `loader/efi/appleloader.c', `loader/efi/chainloader.c', `loader/i386/efi/linux.c', `loader/i386/ieee1275/linux.c', `loader/i386/linux.c', `loader/i386/pc/chainloader.c', `loader/i386/pc/linux.c', `loader/i386/xnu.c', `loader/multiboot_loader.c', `loader/powerpc/ieee1275/linux.c', `loader/sparc64/ieee1275/linux.c' and `loader/xnu.c'. 2010-01-08 Robert Millan * src/mkisofs.c: Remove `ifdef linux' portability kludge. 2010-01-08 Robert Millan * util/mkisofs/defaults.h (APPID_DEFAULT): Redefine using PACKAGE_NAME. (SYSTEM_ID_DEFAULT): Set to "GNU" unconditionally. * util/mkisofs/mkisofs.c (main): Readjust --version output. 2010-01-07 Robert Millan Reset Multiboot 2 support. New loader implements the draft in /branches/multiboot2 and shares as much code as possible with the production Multiboot 1 implementation. * loader/ieee1275/multiboot2.c: Remove file. Update all users. * loader/multiboot2.c: Likewise. * loader/i386/multiboot_helper.S: Likewise. * include/multiboot2.h: Replace with latest version from the draft in /branches/multiboot2. * conf/i386-coreboot.rmk (multiboot_mod_SOURCES): Remove `loader/i386/multiboot_helper.S', `loader/i386/pc/multiboot2.c' and `loader/multiboot2.c'. (pkglib_MODULES): Add `multiboot2.mod'. (multiboot2_mod_SOURCES): New variable. (multiboot2_mod_LDFLAGS): Likewise. (multiboot2_mod_CFLAGS): Likewise. Define `GRUB_USE_MULTIBOOT2'. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Remove `multiboot.mod'. (multiboot_mod_SOURCES): Remove variable. (multiboot_mod_LDFLAGS): Likewise. (multiboot_mod_CFLAGS): Likewise. * include/grub/multiboot.h [GRUB_USE_MULTIBOOT2]: Include `' instead of `'. [GRUB_USE_MULTIBOOT2] (MULTIBOOT_BOOTLOADER_MAGIC) (MULTIBOOT_HEADER_MAGIC): New macros. * loader/multiboot_loader.c (module_version_status): Remove variable. (find_multi_boot2_header): Remove function. (grub_cmd_multiboot_loader): Remove Multiboot 2 / Multiboot 1 selection logic. Always check for the Multiboot version we're compiling for. (grub_cmd_module_loader): Likewise. [GRUB_USE_MULTIBOOT2] (GRUB_MOD_INIT(multiboot)): Register `multiboot2' command instead of `multiboot'. 2010-01-07 Robert Millan * include/multiboot.h (MULTIBOOT_UNSUPPORTED): Moved from here ... * loader/i386/multiboot.c (UNSUPPORTED_FLAGS): ... to here. Update all users. 2010-01-07 Robert Millan 2010-01-07 Vladimir Serbinenko Fix breakage introduced with previous commit. * normal/dyncmd.c (read_command_list): Avoid unregistering kernel commands. * normal/handler.c (read_handler_list): Revert part of previous commit affecting this file. * normal/main.c (read_lists): Move read_handler_list() call back to ... (grub_normal_execute): ... here. 2010-01-07 Robert Millan Merge prefix-redefinition-fix branch. * normal/autofs.c (read_fs_list): Make function capable of being run multiple times, gracefuly replacing the previous data structures. * normal/dyncmd.c (read_command_list): Likewise. * normal/handler.c (read_handler_list): Likewise. * normal/main.c (read_lists): New function. Calls all the list reading functions. (grub_normal_execute): Use read_lists() instead of calling all list reading functions explicitly. Register read_lists() as a variable hook attached to ${prefix}. 2010-01-07 Vladimir Serbinenko Merge crypto branch. * Makefile.in (pkglib_DATA): Add crypto.lst. (crypto.lst): New target. * commands/hashsum.c: New file. * commands/password.c (check_password): Use grub_crypto_memcmp. * commands/password_pbkdf2.c: New file. * commands/xnu_uuid.c: Remove MD5. Use GRUB_MD_MD5. * conf/any-emu.rmk (grub_emu_SOURCES): Add lib/crypto.c, normal/crypto.c and lib/libgcrypt-grub/cipher/md5.c. (grub_emu_CFLAGS): Add -Wno-missing-field-initializers -Wno-error -I$(srcdir)/lib/libgcrypt_wrap. * conf/common.rmk (normal_mod_SOURCES): Add normal/crypto.c. (pkglib_MODULES): Add crypto.mod, hashsum.mod, pbkdf2.mod and password_pbkdf2.mod. (crypto_mod_SOURCES): New variable. (crypto_mod_CFLAGS): Likewise. (crypto_mod_LDFLAGS): Likewise. (hashsum_mod_SOURCES): New variable. (hashsum_mod_CFLAGS): Likewise. (hashsum_mod_LDFLAGS): Likewise. (pbkdf2_mod_SOURCES): New variable. (pbkdf2_mod_CFLAGS): Likewise. (pbkdf2_mod_LDFLAGS): Likewise. (password_pbkdf2_mod_SOURCES): New variable. (password_pbkdf2_mod_CFLAGS): Likewise. (password_pbkdf2_mod_LDFLAGS): Likewise. (bin_UTILITIES): Add grub-mkpasswd-pbkdf2. (grub_mkpasswd_pbkdf2_SOURCES): New variable. (grub_mkpasswd_pbkdf2_CFLAGS): Likewise. Include conf/gcry.rmk. * include/grub/auth.h: Rewritten. * include/grub/crypto.h: New file. * include/grub/disk.h (grub_disk_dev_id): Add GRUB_DISK_DEVICE_LUKS_ID. * include/grub/normal.h (read_crypto_list): New prototype. * lib/crypto.c: New file. * lib/libgcrypt_wrap/cipher_wrap.h: Likewise. * lib/pbkdf2.c: Likewise. * normal/auth.c (grub_auth_strcmp): Removed. (grub_iswordseparator): Likewise. (grub_auth_strword): Likewise. (is_authenticated): Use grub_strword. (grub_auth_check_authentication): Use grub_strcmp, grub_password_get and grub_strword. Pass entered password to authentication callback. * normal/crypto.c: New file. * normal/main.c: Call read_crypto_list. * util/grub-mkpasswd-pbkdf2.c: New file. * util/import_gcry.py: Generate crypto.lst. Add hash blocklen. 2010-01-06 Vladimir Serbinenko Fix descent and ascent calculation. * util/grub-mkfont.c (grub_font_info): New fields 'asce' and 'max_y'. (options): New option "asce". (usage): Likewise. (add_char): Ignore invalid glyphs for descent calculation. Calculate ascent from actual content. (print_glyphs): Use 'asce'. (write_font): Likewise. Allow ascent override. (main): Handle "asce" option. 2010-01-06 Carles Pina i Estany * kern/err.c: Include `'. (grub_print_error): Add full stop. Gettextizze. * loader/i386/bsd.c (grub_netbsd_boot): Change grub_error description. (grub_bsd_load_elf): Capitalise ELF. (grub_cmd_freebsd_loadenv): Add `s' in error string. (grub_cmd_freebsd_module): Likewise. (grub_cmd_freebsd_module_elf): Likewise. * loader/i386/bsdXX.c (SUFFIX): Capitalise ELF. 2010-01-06 Carles Pina i Estany * commands/search.c (GRUB_MOD_INIT): Use HELP_MESSAGE. * commands/search_file.c (HELP_MESSAGE): New macro. * commands/search_label.c (HELP_MESSAGE): Likewise. * commands/search_uuid.c (HELP_MESSAGE): Likewise. * po/POTFILES: Add `commands/search_file.c', `commands/search_label.c', `commands_uuid.c'. Remove duplicate `commands/search.c'. 2010-01-05 Robert Millan * config.rpath: Update from Gnulib. 2010-01-05 Yves Blusseau * commands/acpi.c (grub_acpi_create_ebda): fix incorrect message. 2010-01-05 Yves Blusseau * util/sparc64/ieee1275/grub-mkimage.c (main): Typo fix. 2010-01-05 Colin Watson * util/mkisofs/write.c (padblock_write): Switch size and nmemb arguments to fread so that we get a return value in bytes, rather than something that will normally be rounded down to 0. Adjust error handling to avoid producing garbage when size_t is not the same size as long long. 2010-01-05 Colin Watson * util/mkisofs/write.c (padblock_write): Check return value of fread. 2010-01-05 Robert Millan Remove grub-mkfloppy. Images produced by grub-mkrescue are valid floppy images now. * util/i386/pc/grub-mkfloppy.in: Remove. Update all users. 2010-01-04 Robert Millan * disk/i386/pc/biosdisk.c (grub_biosdisk_rw): Use ALIGN_UP macro instead of manual alignment. * kern/disk.c (grub_disk_read): Remove grub_dprintf call (excessively verbose). Avoid attempts to read past end of the device (grub_disk_adjust_range() guarantees that we can read `size' bytes, but GRUB_DISK_CACHE_SIZE may exceed that). 2010-01-04 Robert Millan * commands/crc.c (grub_cmd_crc): Abort on read errors. * fs/iso9660.c (grub_iso9660_read): Check for read error and pass it to upper layer. 2010-01-04 Vladimir Serbinenko * include/grub/efi/api.h (GRUB_EFI_PIWG_DEVICE_PATH_SUBTYPE): New constant. (grub_efi_piwg_device_path): New structure (grub_efi_piwg_device_path_t): New type. * loader/efi/appleloader.c (piwg_full_device_path): New structure. (devpath_1): Transform to a structure. All users updated. (devpath_2): Likewise. (devpath_3): Likewise. (devpath_4): Likewise. (devpath_5): Likewise. 2010-01-04 Vladimir Serbinenko * loader/efi/appleloader.c: Restored. Update all users. 2010-01-03 Robert Millan * boot/i386/pc/diskboot.S: Fix inaccurate comment. * util/i386/pc/grub-setup.c: Include `'. (struct boot_blocklist): Move from here ... * include/grub/i386/pc/boot.h [ASM_FILE] (struct grub_boot_blocklist): ... to here. Update all users. (setup): Only initialize `start' member of `first_block' structure. Add assert() calls to verify the other members. * util/i386/pc/grub-mkimage.c: Include `'. (generate_image): Fix broken blocklist length initialization. Add assert() call to verify blocklist `segment' field. 2010-01-03 Robert Millan * loader/efi/appleloader.c: Remove. Update all users. 2010-01-03 Robert Millan * boot/i386/pc/boot.S: Update copyright year. * boot/i386/pc/cdboot.S: Likewise. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/lnxboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * bus/pci.c: Likewise. * commands/cmp.c: Likewise. * commands/help.c: Likewise. * commands/hexdump.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/ls.c: Likewise. * commands/test.c: Likewise. * disk/dmraid_nvidia.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/nand.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/raid6_recover.c: Likewise. * disk/scsi.c: Likewise. * fs/affs.c: Likewise. * fs/cpio.c: Likewise. * fs/ext2.c: Likewise. * fs/hfs.c: Likewise. * fs/iso9660.c: Likewise. * fs/ntfs.c: Likewise. * fs/sfs.c: Likewise. * fs/udf.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * gencmdlist.sh: Likewise. * genmk.rb: Likewise. * include/grub/disk.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/elf.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/i386/at_keyboard.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pci.h: Likewise. * include/grub/i386/tsc.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ntfs.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/types.h: Likewise. * include/multiboot2.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/mm.c: Likewise. * kern/elf.c: Likewise. * kern/file.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/ieee1275/init.c: Likewise. * kern/main.c: Likewise. * kern/mm.c: Likewise. * kern/powerpc/dl.c: Likewise. * kern/sparc64/dl.c: Likewise. * kern/x86_64/dl.c: Likewise. * lib/hexdump.c: Likewise. * loader/efi/appleloader.c: Likewise. * loader/i386/ieee1275/linux.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot2.c: Likewise. * loader/ieee1275/multiboot2.c: Likewise. * loader/multiboot2.c: Likewise. * loader/multiboot_loader.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * normal/completion.c: Likewise. * normal/menu_entry.c: Likewise. * partmap/apple.c: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/hostfs.c: Likewise. * video/readers/png.c: Likewise. 2010-01-03 Colin Watson * include/grub/misc.h (GNUC_PREREQ): New macro. (ATTRIBUTE_ERROR): New macro. * include/grub/list.h (grub_bad_type_cast_real): Use ATTRIBUTE_ERROR. 2010-01-03 Carles Pina i Estany * normal/menu_text.c (print_message): Change messages. 2010-01-03 Carles Pina i Estany * normal/menu_entry.c (store_completion): Gettextizze. 2010-01-03 Carles Pina i Estany * kern/env.c (grub_env_unset): Set the variable to "" if has hooks. 2010-01-03 Carles Pina i Estany * po/POTFILES: Sort correctly. 2010-01-03 Carles Pina i Estany * commands/acpi.c (GRUB_MOD_INIT): Capitalise some words from help. * commands/efi/loadbios.c (GRUB_MOD_INIT): Capitalise BIOS. * commands/i386/pc/drivemap.c (GRUB_MOD_INIT): Remove space. Add full stop. * commands/loadenv.c (GRUB_MOD_INIT): Remove command name from summary. Gettextizze the strings. * commands/probe.c (grub_cmd_probe): Capitalise UUID and FS. * commands/xnu_uuid.c (GRUB_MOD_INIT): Capitalise XNU. * disk/loopback.c (grub_arg_options): Capitalise first letter. Add full stop. (GRUB_MOD_INIT): Remove command name from summary. * hello/hello.c (GRUD_MOT_INIT): Add missing full stop. Improve the summary. * loader/i386/bsd.c (grub_arg_option): Capitalise CDROM. * term/i386/pc/serial.c (options): Add full stops. (GRUB_MOD_INIT): Remove command name from the summary. 2010-01-03 Carles Pina i Estany * commands/acpi.c: Gettextizze help strings and/or options. Include `grub/i18n.h' if needed. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/crc.c: Likewise. * commands/date.c: Likewise. * commands/echo.c: Likewise. * commands/efi/fixvideo.c: Likewise. * commands/efi/loadbios.c: Likewise. * commands/gptsync.c: Likewise. * commands/halt.c: Likewise. * commands/handler.c: Likewise. * commands/hdparm.c: Likewise. * commands/hexdump.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/drivemap.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/pxecmd.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * commands/keystatus.c: Likewise. * commands/loadenv.c: Likewise. * commands/ls.c: Likewise. * commands/lsmmap.c: Likewise. * commands/lspci.c: Likewise. * commands/memrw.c: Likewise. * commands/minicmd.c: Likewise. * commands/parttool.c: Likewise. * commands/password.c: Likewise. * commands/probe.c: Likewise. * commands/read.c: Likewise. * commands/reboot.c: Likewise. * commands/search.c: Likewise. * commands/sleep.c: Likewise. * commands/test.c: Likewise. * commands/true.c: Likewise. * commands/usbtest.c: Likewise. * commands/videotest.c: Likewise. * commands/xnu_uuid.c: Likewise. * disk/loopback.c: Likewise. * hello/hello.c: Likewise. * loader/i386/bsd.c: Likewise. * term/i386/pc/serial.c: Likewise. * po/POTFILES: Add new files. 2010-01-02 Colin Watson * term/i386/pc/at_keyboard.c (keyboard_controller_wait_untill_ready): Rename to ... (keyboard_controller_wait_until_ready): ... this. Update all users. 2010-01-01 Carles Pina i Estany * commands/help.c: Include `grub/mm.h' and `grub/normal.h'. (grub_cmd_help): Print the cmd->name before the cmd->summary. Cut the string using string width. * normal/menu_text.c (grub_print_message_indented): Use grub_print_spaces and not print_spaces. (print_timeout): Likewise. (print_spaces): Move to... * include/grub/term.h: ... here. Change the name to grub_print_spaces. 2010-01-01 Robert Millan Import from Gnulib. * gnulib/getdelim.c: New file. * gnulib/getline.c: Likewise. 2009-12-31 BVK Chaitanya * include/grub/list.h (grub_assert_fail): Removed. (grub_bad_type_cast_real): New function. (grub_bad_type_cast): New macro. (GRUB_AS_LIST): Use grub_bad_type_cast. (GRUB_AS_LIST_P): Likewise. (GRUB_AS_NAMED_LIST): Likewise. (GRUB_AS_NAMED_LIST_P): Likewise. (GRUB_AS_PRIO_LIST): Likewise. (GRUB_AS_PRIO_LIST_P): Likewise. * include/grub/handler.h (GRUB_AS_HANDLER): Likewise. 2009-12-29 Vladimir Serbinenko * loader/sparc64/ieee1275/linux.c (GRUB_MOD_INIT (linux)): Fix syntax error. 2009-12-29 Robert Millan * configure.ac: Check for TARGET_CFLAGS initialization before we initialize it ourselves (sigh). Move a few modifications to TARGET_CFLAGS to be unconditional (extra warning flags, loop alignment, i386 CPU extensions, GCC 4.4 eh_frame) * gettext/gettext.c (grub_gettext_delete_list): Add `void' argument. * term/i386/pc/at_keyboard.c (keyboard_controller_wait_untill_ready): Likewise. (keyboard_controller_led): Rename `led_status' paramter to avoid name conflict. 2009-12-28 Carles Pina i Estany * normal/misc.c (grub_normal_print_device_info): Add spaces and double quotes. 2009-12-27 Vladimir Serbinenko * kern/parser.c (grub_parser_split_cmdline): Don't dereference NULL. 2009-12-27 Vladimir Serbinenko * normal/menu_text.c (grub_print_message_indented): Prevent past-the-end-of-array dereference. 2009-12-27 Vladimir Serbinenko * video/readers/jpeg.c (GRUB_MOD_FINI (grub_cmd_jpegtest)): Rename to .. (GRUB_MOD_FINI (video_reader_jpeg)): ...this 2009-12-27 Carles Pina i Estany * normal/cmdline.c (grub_cmdline_get): Print a space after prompt. * normal/main.c (grub_normal_read_line): Remove a space from the default prompt. 2009-12-27 Carles Pina i Estany * loader/i386/efi/linux.c (GRUB_MOD_INIT): Improve command summary. * loader/i386/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/i386/linux.c (GRUB_MOD_INIT): Likewise. * loader/i386/pc/linux.c (GRUB_MOD_INIT): Likewise. * loader/powerpc/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/sparc64/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/xnu.c (GRUB_MOD_INIT): Likewise. 2009-12-26 Carles Pina i Estany * video/readers/jpeg.c (cmd): Declare. (grub_cmd_jpegtest): Use `grub_command_t' type. (GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'. Assign to `cmd'. (GRUB_MOD_FINI): Use `cmd' to unregister. * video/readers/png.c (cmd): Declare. (grub_cmd_pngtest): Use `grub_command_t' type. (GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'. Assign to `cmd'. (GRUB_MOD_FINI): Use `cmd' to unregister. * video/readers/tga.c (cmd): Declare. (grub_cmd_tgatest): Use `grub_command_t' type. (GRUB_MOD_INIT): Fix arguments passed to `grub_register_command'. Assign to `cmd'. (GRUB_MOD_FINI): Use `cmd' to unregister. 2009-12-26 Carles Pina i Estany * efiemu/main.c (GRUB_MOD_INIT): Fix capitalizations and/or full stops. * kern/corecmd.c (grub_register_core_commands): Likewise. * loader/efi/chainloader.c (GRUB_MOD_INIT): Likewise. * loader/i386/bsd.c (GRUB_MOD_INIT): Likewise. * loader/i386/efi/linux.c (GRUB_MOD_INIT): Likewise. * loader/i386/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/i386/linux.c (GRUB_MOD_INIT): Likewise. * loader/i386/pc/chainloader.c (GRUB_MOD_INIT): Likewise. * loader/i386/pc/linux.c (GRUB_MOD_INIT): Likewise. * loader/multiboot_loader.c (GRUB_MOD_INIT): Likewise. * loader/powerpc/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/sparc64/ieee1275/linux.c (GRUB_MOD_INIT): Likewise. * loader/xnu.c (GRUB_MOD_INIT): Likewise. * mmap/mmap.c (GRUB_MOD_INIT): Likewise. * normal/handler.c (insert_handler): Likewise. * normal/main.c (GRUB_MOD_INIT): Likewise. * term/gfxterm.c (GRUB_MOD_INIT): Likewise. 2009-12-26 Carles Pina i Estany * commands/help.c (grub_cmd_help): Print the command name before the summary. (GRUB_MOD_INIT): Remove command name from the summary. * kern/command.c (GRUB_MOD_INIT): If summary is null assign an empty string as summary. * lib/arg.c (find_long): Print the command name before the summary. * commands/acpi.c (GRUB_MOD_INIT): Remove command name from the summary. * commands/blocklist.c (GRUB_MOD_INIT): Likewise. * commands/cat.c (GRUB_MOD_INIT): Likewise. * commands/cmp.c (GRUB_MOD_INIT): Likewise. * commands/configfile.c (GRUB_MOD_INIT): Likewise. * commands/crc.c (GRUB_MOD_INIT): Likewise. * commands/date.c (GRUB_MOD_INIT): Likewise. * commands/echo.c (GRUB_MOD_INIT): Likewise. * commands/efi/loadbios.c (GRUB_MOD_INIT): Likewise. * commands/gptsync.c (GRUB_MOD_INIT): Likewise. * commands/handler.c (GRUB_MOD_INIT): Likewise. * commands/hdparm.c (GRUB_MOD_INIT): Likewise. * commands/hexdump.c (GRUB_MOD_INIT): Likewise. * commands/i386/cpuid.c (GRUB_MOD_INIT): Likewise. * commands/i386/pc/halt.c (GRUB_MOD_INIT): Likewise. * commands/i386/pc/play.c (GRUB_MOD_INIT): Likewise. * commands/i386/pc/pxecmd.c (GRUB_MOD_INIT): Likewise. * commands/keystatus.c (GRUB_MOD_INIT): Likewise. * commands/loadenv.c (GRUB_MOD_INIT): Likewise. * commands/ls.c (GRUB_MOD_INIT): Likewise. * commands/lspci.c (GRUB_MOD_INIT): Likewise. * commands/memrw.c (GRUB_MOD_INIT): Likewise. * commands/minicmd.c (GRUB_MOD_INIT): Likewise. * commands/parttool.c (GRUB_MOD_INIT): Likewise. * commands/password.c (GRUB_MOD_INIT): Likewise. * commands/probe.c (GRUB_MOD_INIT): Likewise. * commands/read.c (GRUB_MOD_INIT): Likewise. * commands/search.c (GRUB_MOD_INIT): Likewise. * commands/sleep.c (GRUB_MOD_INIT): Likewise. * commands/test.c (GRUB_MOD_INIT): Likewise. * commands/xnu_uuid.c (GRUB_MOD_INIT): Likewise. * efiemu/main.c (GRUB_MOD_INIT): Likewise. * font/font_cmd.c (GRUB_MOD_INIT): Likewise. * gettext/gettext.c (GRUB_MOD_INIT): Likewise. * kern/corecmd.c (GRUB_MOD_INIT): Likewise. * lib/arg.c (GRUB_MOD_INIT): Likewise. * loader/efi/appleloader.c (GRUB_MOD_INIT): Likewise. * loader/i386/bsd.c (GRUB_MOD_INIT): Likewise. * loader/xnu.c (GRUB_MOD_INIT): Likewise. * mmap/mmap.c (GRUB_MOD_INIT): Likewise. * term/terminfo.c (GRUB_MOD_INIT): Likewise. * video/readers/jpeg.c (GRUB_MOD_INIT): Likewise. * video/readers/png.c (GRUB_MOD_INIT): Likewise. * video/readers/tga.c (GRUB_MOD_INIT): Likewise. 2009-12-25 Vladimir Serbinenko Use search command for preliminar UUID search. * commands/search.c: Split into ... * commands/search_wrap.c: ...this * commands/search.c: ...and this. * commands/search_file.c: New file. * commands/search_label.c: New file. * commands/search_uuid.c: New file. * conf/any-emu.rmk (grub_emu_SOURCES): Remove commands/search.c. Add commands/search_wrap.c, commands/search_file.c, commands/search_label.c and commands/search_uuid.c. * conf/common.rmk (pkglib_MODULES): Remove fs_uuid.mod and fs_file.mod. (search_mod_SOURCES): Set to commands/search_wrap.c. (pkglib_MODULES): Add search_fs_file.mod, search_fs_uuid.mod and search_label.mod. (search_fs_file_mod_SOURCES): New variable. (search_fs_file_mod_CFLAGS): Likewise. (search_fs_file_mod_LDFLAGS): Likewise. (search_label_mod_SOURCES): Likewise. (search_label_mod_CFLAGS): Likewise. (search_label_mod_LDFLAGS): Likewise. (search_fs_uuid_mod_SOURCES): New variable. (search_fs_uuid_mod_CFLAGS): Likewise. (search_fs_uuid_mod_LDFLAGS): Likewise. (fs_file_mod_SOURCES): Removed. (fs_file_mod_CFLAGS): Likewise. (fs_file_mod_LDFLAGS): Likewise. (fs_uuid_mod_SOURCES): Removed. (fs_uuid_mod_CFLAGS): Likewise. (fs_uuid_mod_LDFLAGS): Likewise. * conf/sparc64-ieee1275.rmk (grub_install_SOURCES): Set to util/grub-install.in. * disk/fs_file.c: Removed. * disk/fs_uuid.c: Likewise. * include/grub/search.h: New file. * util/grub-install.in: Handle sparc64. Create and use load.cfg. * util/sparc64/ieee1275/grub-install.in: Removed. 2009-12-25 Vladimir Serbinenko * kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_int13_extensions): Ignore return status if CF is cleared. (grub_biosdisk_get_diskinfo_standard): Likewise. 2009-12-25 Robert Millan * term/i386/pc/at_keyboard.c (keyboard_controller_wait_untill_ready): New function. (grub_keyboard_controller_write, grub_keyboard_controller_read) (keyboard_controller_led): Use keyboard_controller_wait_untill_ready() for keyboard polling, rather than duplicate the same loop. This saves a few bytes in code size. 2009-12-25 Vladimir Serbinenko Support for (pxe[:server[:gateway]]) syntax and use environment variable for PXE. * commands/i386/pc/pxecmd.c (options): Removed. (print_ip): Removed. (grub_cmd_pxe): Removed (grub_cmd_pxe_unload): New function. * fs/i386/pc/pxe.c (grub_pxe_disk_data): New structure. (grub_pxe_your_ip): Made static. (grub_pxe_default_server_ip): Likewise. (grub_pxe_default_gateway_ip): Likewise. (grub_pxe_blksize): Likewise. (parse_ip): New function. (grub_pxe_open): Support server and gateway specification. (grub_pxe_close): Free disk->data. (grub_pxefs_open): Use disk->data. (grub_pxefs_read): Likewise. (grub_env_write_readonly): New function. (set_mac_env): Likewise. (set_env_limn_ro): Likewise. (parse_dhcp_vendor): Likewise. (grub_pxe_detect): Set the environment variables. (set_ip_env): New function. (write_ip_env): Likewise. (grub_env_write_pxe_default_server): Likewise. (grub_env_write_pxe_default_gateway): Likewise. (grub_env_write_pxe_blocksize): Likewise. (GRUB_MOD_INIT(pxe)): Set environment variables. * include/grub/i386/pc/pxe.h (grub_pxe_mac_addr): Rename to ... (grub_pxe_mac_addr_t): ... this. All users updated. (grub_pxe_your_ip): Removed. (grub_pxe_server_ip): Likewise. (grub_pxe_gateway_ip): Likewise. (grub_pxe_blksize): Likewise. 2009-12-25 Carles Pina i Estany * commands/help.c: Include `'. (grub_cmd_help): Gettextizze. (GRUB_MOD_INIT): Likewise. * commands/i386/pc/play.c: Include `'. (GRUB_MOD_INIT): Gettextizze. * commands/search.c: Include `'. (options): Gettextizze. (GRUB_MOD_INIT): Gettextizze. * lib/arg.c: Include `'. (help_options): Gettextizze. (find_long): Likewise. (grub_arg_show_help): Likewise. * normal/dyncmd.c: Include `'. (read_command_list): Gettextizze. * po/POTFILES: Add `commands/i386/pc/play.c', `commands/search.c', `commands/help.c', `lib/arg.c' and `normal/dyncmd.c'. 2009-12-25 Robert Millan * include/grub/i386/at_keyboard.h (NUM_LOCK, SCROLL_LOCK): New macros. * term/i386/pc/at_keyboard.c (KEYBOARD_STATUS_NUM_LOCK) (KEYBOARD_LED_SCROLL, KEYBOARD_LED_NUM, KEYBOARD_LED_CAPS): New macros. (led_status): New variable. (keyboard_controller_led): New function. (grub_at_keyboard_getkey_noblock): Handle num lock and scroll lock, update led status for caps lock, num lock and scroll lock. 2009-12-25 Felix Zielcke * util/hostdisk.c (open_device): Fix a comment. 2009-12-24 Robert Millan * util/grub-install.in (host_os): New variable. * util/i386/efi/grub-install.in (host_os): Likewise. 2009-12-24 Robert Millan * util/mkisofs/write.c (padblock_write): Abort when given an excedingly large embed image, instead of silently truncating it. 2009-12-24 Robert Millan * include/multiboot.h: Indentation fixes. 2009-12-24 Robert Millan * include/multiboot.h (struct multiboot_aout_symbol_table) (struct multiboot_elf_section_header_table): New structure declarations (stolen from GRUB Legacy). (struct multiboot_info): Replace opaque `syms' with a.out and ELF table information. (multiboot_aout_symbol_table_t, multiboot_elf_section_header_table_t) (multiboot_info_t, multiboot_memory_map_t, multiboot_module_t): New type aliases. 2009-12-24 Robert Millan * include/multiboot.h: Make comments src2texi-friendly. 2009-12-24 Robert Millan For consistency with [multiboot]/docs/boot.S. * include/multiboot.h (MULTIBOOT_MAGIC): Rename from this ... (MULTIBOOT_HEADER_MAGIC): ... to this. Update all users. (MULTIBOOT_MAGIC2): Rename from this ... (MULTIBOOT_BOOTLOADER_MAGIC): ... to this. Update all users. 2009-12-24 Robert Millan * include/multiboot.h: Remove `'. (multiboot_uint16_t, multiboot_uint32_t, multiboot_uint64_t): New types. Update all users. 2009-12-25 Carles Pina i Estany * commands/efi/loadbios.c: Capitalize acronyms, replace `could not' by `couldn't' and `can not' by `cannot'. * commands/i386/pc/drivemap.c: Likewise. * disk/ata.c: Likewise. * disk/ieee1275/nand.c: Likewise. * fs/affs.c: Likewise. * fs/fat.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/reiserfs.c: Likewise. * fs/sfs.c: Likewise. * fs/udf.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-probe.c: Likewise. * util/misc.c: Likewise. 2009-12-24 Carles Pina i Estany * bus/usb/usbhub.c: Fix capitalization, fullstop and newlines in grub_errno calls. * commands/acpi.c: Likewise. * commands/blocklist.c: Likewise. * commands/efi/loadbios.c: Likewise. * commands/i386/pc/drivemap.c: Likewise. * commands/loadenv.c: Likewise. * commands/memrw.c: Likewise. * commands/password.c: Likewise. * commands/videotest.c: Likewise. * disk/ata.c: Likewise. * disk/ata_pthru.c: Likewise. * disk/dmraid_nvidia.c: Likewise. * disk/ieee1275/nand.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/mdraid_linux.c: Likewise. * disk/raid.c: Likewise. * disk/raid6_recover.c: Likewise. * disk/scsi.c: Likewise. * efiemu/main.c: Likewise. * efiemu/mm.c: Likewise. * efiemu/pnvram.c: Likewise. * efiemu/symbols.c: Likewise. * font/font.c: Likewise. * fs/cpio.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/ntfs.c: Likewise. * fs/ntfscomp.c: Likewise. * fs/reiserfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * gettext/gettext.c: Likewise. * include/grub/auth.h: Likewise. * kern/elf.c: Likewise. * kern/file.c: Likewise. * kern/ieee1275/init.c: Likewise. * kern/ieee1275/mmap.c: Likewise. * kern/ieee1275/openfw.c: Likewise. * kern/powerpc/dl.c: Likewise. * kern/sparc64/dl.c: Likewise. * lib/arg.c: Likewise. * loader/i386/bsd.c: Likewise. * loader/i386/bsdXX.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/xnu.c: Likewise. * loader/i386/ieee1275/linux.c: Likewise. * loader/i386/linux.c: Likewise. * loader/i386/multiboot.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot2.c: Likewise. * loader/i386/xnu.c: Likewise. * loader/ieee1275/multiboot2.c: Likewise. * loader/macho.c: Likewise. * loader/machoXX.c: Likewise. * loader/multiboot2.c: Likewise. * loader/multiboot_loader.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * loader/xnu.c: Likewise. * loader/xnu_resume.c: Likewise. * mmap/i386/pc/mmap.c: Likewise. * normal/menu_viewer.c: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * script/lexer.c: Likewise. * term/gfxterm.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * term/terminfo.c: Likewise. * video/bitmap.c: Likewise. * video/efi_gop.c: Likewise. * video/efi_uga.c: Likewise. * video/fb/video_fb.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/readers/tga.c: Likewise. * video/video.c: Likewise. 2009-12-23 Felix Zielcke * commands/i386/pc/drivemap.c: Remove all trailing whitespace. * commands/lspci.c: Likewise. * commands/probe.c: Likewise. * commands/xnu_uuid.c: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * fs/i386/pc/pxe.c: Likewise. * gettext/gettext.c: Likewise. * include/grub/efi/graphics_output.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * kern/env.c: Likewise. * kern/i386/qemu/startup.S: Likewise. * lib/i386/pc/biosnum.c: Likewise. * lib/i386/relocator.c: Likewise. * lib/i386/relocator_asm.S: Likewise. * lib/relocator.c: Likewise. * loader/i386/bsd.c: Likewise. * loader/i386/multiboot.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/xnu.c: Likewise. * loader/xnu.c: Likewise. * normal/main.c: Likewise. * normal/menu_text.c: Likewise. * util/getroot.c: Likewise. * util/grub-mkconfig_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/mkisofs/eltorito.c: Likewise. * util/mkisofs/exclude.h: Likewise. * util/mkisofs/hash.c: Likewise. * util/mkisofs/iso9660.h: Likewise. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/mkisofs.h: Likewise. * util/mkisofs/multi.c: Likewise. * util/mkisofs/name.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. * video/efi_gop.c: Likewise. 2009-12-23 Vladimir Serbinenko * video/efi_gop.c (grub_video_gop_get_bitmask): Fix off-by-one in mask size counting. 2009-12-22 Felix Zielcke * util/grub-mkrescue.in (pkglib_DATA): Set to @pkglib_DATA@. * genmk.rb (class SCRIPT): Modify the target file instead of source. 2009-12-22 Vladimir Serbinenko * commands/memrw.c (grub_cmd_write): Support for mask parameter. (GRUB_MOD_INIT(memrw)): Update help line. 2009-12-22 Vladimir Serbinenko * commands/memrw.c (cmd_read_byte, cmd_read_word, cmd_read_dword): Use grub_extcmd_t. All users updated. (options): New variable. (grub_cmd_read): Restructure for readability. Support "-v" option. (grub_cmd_write): Restructure for readability. 2009-12-22 Felix Zielcke * genmk.rb (class SCRIPT): Prepend #{src} path with $(srcdir). 2009-12-22 Felix Zielcke * genmk.rb (class SCRIPT): Use sed to substitute @pkglib_DATA@ with the actual contents of the correspondending make variable. * util/grub-mkrescue.in (pkglib_DATA): New variable. (process_input_dir): Copy all $pkglib_DATA files instead of explicitly specifying `*.lst' and `efiemu??.o' 2009-12-22 Felix Zielcke * util/grub.d/30_os-prober.in (osx_entry): Add round brackets after function name. Noticed by Rene Engelhard . 2009-12-22 Vladimir Serbinenko * commands/lspci.c (grub_pci_classes): Add "USB Controller". (options): New variable. (iospace): Likewise. (grub_lspci_iter): List IO spaces if "-i" was given. (grub_cmd_lspci): Parse options. (GRUB_MOD_INIT(lspci)): Use extcmd. (GRUB_MOD_FINI(lspci)): Likewise. 2009-12-22 Felix Zielcke * util/grub.d/30_os-prober.in (osx_entry): Remove non POSIX compliant `function' keyword. Patch by Tony Mancill . 2009-12-22 Vladimir Serbinenko * bus/usb/uhci.c (grub_uhci_transfer): Set a limit transaction time. (grub_uhci_portstatus): Likewise. (grub_uhci_portstatus): Add necessary delay. * bus/usb/usbhub.c (grub_usb_hub_add_dev): Fix loop-break condition. 2009-12-21 Carles Pina i Estany * commands/acpi.c (options): Fix capitalizations and/or full stops. (GRUB_MOD_INIT): Likewise. * commands/boot.c (GRUB_MOD_INIT): Likewise. * commands/cmp.c (grub_cmd_cmp): Improve the help message. * commands/echo.c (options): Fix capitalizations and/or full stops. * commands/efi/loadbios.c (enable_rom_area): Likewise. (enable_rom_area): Likewise. (GRUB_MOD_INIT): Likewise. * commands/gptsync.c (GRUB_MOD_INIT): Likewise. * commands/halt.c (GRUB_MOD_INIT): Improve the help message. * commands/handler.c (GRUB_MOD_INIT): Likewise. * commands/hdparm.c (options): Fix capitalizations and/or full stops. * commands/hexdump.c (options): Likewise. * commands/i386/cpuid.c (options): Likewise. (GRUB_MOD_INIT): Likewise. * commands/i386/pc/drivemap.c (options): Likewise. (GRUB_MOD_INIT): Likewise. * commands/i386/pc/halt (options): Likewise. (GRUB_MOD_INIT): Likewise. * commands/i386/pc/play.c (GRUB_MOD_INIT): Likewise. * commands/i386/pc/pxecmd.c (options): Likewise. * commands/i386/pc/vbetest.c (GRUB_MOD_INIT): Likewise. * commands/ieee1275/suspend.c (GRUB_MOD_INIT): Likewise. * commands/keystatus.c (options): Likewise. (GRUB_MOD_INIT): Likewise. * commands/loadenv.c (options): Likewise. * commands/ls.c (options): Likewise. * commands/lspci.c (GRUB_MOD_INIT): Likewise. * commands/memrw.c (GRUB_MOD_INIT): Likewise. * commands/minicmd.c (GRUB_MOD_INIT): Likewise. * commands/parttool.c (helpmsg): Likewise. * commands/probe.c (options): Likewise. * commands/read.c (GRUB_MOD_INIT): Likewise. * commands/reboot.c (GRUB_MOD_INIT): Likewise. * commands/search.c (options): Likewise. * commands/sleep.c (options): Likewise. * commands/test.c (GRUB_MOD_INIT): Likewise. * commands/true.c (GRUB_MOD_INIT): Likewise. * commands/usbtest.c (GRUB_MOD_INIT): Likewise. * commands/videotest.c (GRUB_MOD_INIT): Likewise. * lib/arg.c (help_options): Likewise. * Makefile.in ($(srcdir)/po/$(PACKAGE).pot): Pass -ctranslate to `$(XGETTEXT)'. * po/POTFILES: Add `commands/loadenv.c'. 2009-12-21 Felix Zielcke * util/grub-mkrescue.in (process_input_dir): Copy `*.lst' files instead of specifying them explicit. 2009-12-21 Robert Millan * NEWS: Add grub-probe support for GNU/Hurd. 2009-12-21 Robert Millan * NEWS: gettext was added after 1.97. 2009-12-21 Robert Millan * util/mkisofs/msdos_partition.h: New file (based on include/grub/msdos_partition.h). * util/mkisofs/mkisofs.c (use_protective_msdos_label): New variable. (OPTION_PROTECTIVE_MSDOS_LABEL): New macro. (ld_options, main): Recognize --protective-msdos-label. * util/mkisofs/mkisofs.h (use_protective_msdos_label): New declaration. * util/mkisofs/write.c: Include `"msdos_partition.h"'. (padblock_write): If `use_protective_msdos_label' is set, patch a protective DOS-style label in the output image. * util/grub-mkrescue.in: Use --protective-msdos-label. 2009-12-21 Robert Millan * util/grub-mkrescue.in: Do not zero-pad image for BIOS-based disk boot. 2009-12-21 Robert Millan * util/mkisofs/mkisofs.c (use_embedded_boot, boot_image_embed): New variables. (ld_options, main): Recognize `--embedded-boot'. * util/mkisofs/mkisofs.h (use_embedded_boot, boot_image_embed): New declarations. * util/mkisofs/write.c (PADBLOCK_SIZE): New variable. (padblock_size): Use `PADBLOCK_SIZE' instead of hardcoding 16. (padblock_write): Likewise. Rewrite to support embedded boot image. * util/grub-mkrescue.in: When building i386-pc images, embed core.img for BIOS-based disk boot instead of only ElTorito. 2009-12-21 Robert Millan * util/grub-mkrescue.in: Remove `configfile' and `sh' from i386-pc build (not needed for bootstrap). 2009-12-21 Robert Millan * util/grub-mkrescue.in: Remove `memdisk', `tar' and `search' modules from i386-pc build (not needed for bootstrap). Rewrite a pair of strings. 2009-12-21 Robert Millan * normal/main.c (grub_normal_reader_init): Set left margin back to 3. 2009-12-21 Vladimir Serbinenko * video/i386/pc/vbe.c (grub_video_vbe_fini): Set 'last_set_mode'. 2009-12-21 Andreas Born * kern/env.c (grub_env_context_open): Mark exported variable for reexport. 2009-12-21 Andreas Born * kern/env.c (grub_env_export): Create nonexistent variables before exporting. 2009-12-20 Carles Pina i Estany * include/grub/auth.h: Include `'. (GRUB_GET_PASSWORD): Gettextizze string. * include/grub/normal.h (STANDARD_MARGIN): New macro, moved from menu_text.c. (grub_utf8_to_ucs4_alloc): Fix indentation. (grub_print_ucs4): Likewise. (grub_getstringwidth): Likewise. (print_message_indented): New declaration. * normal/auth.c: Include `'. (grub_auth_check_authentication): Gettexttize string. * normal/cmdline.c: Include `'. (grub_cmdline_get): Gettextizze. * normal/color.c: Include `'. (grub_parse_color_name_pair): Gettexttize strings. * normal/main.c (grub_normal_reader_init): Cleanup gettexttized string (use `print_message_indented'). * normal/menu_text.c (STANDARD_MARGIN): Moved from here to `include/grub/normal.h'. (print_message_indented): Renamed to ... (grub_print_message_indented): ... this. Remove `static' qualifer (now used in normal/main.c). (print_message): Use `grub_print_message_indented' instead of `print_message_indented'. (print_timeout): Likewise. * normal/misc.c: Include `' and `'. (grub_normal_print_device_info): Gettexttize strings. * po/POTFILES: Add `auth.c', `color.c' and `misc.c'. 2009-12-20 Vladimir Serbinenko * kern/parser.c (grub_parser_split_cmdline): Fix incorrect counting of arguments. Return number of tokens and not arguments. All users updated. 2009-12-20 Vladimir Serbinenko * util/i386/pc/grub-setup.c (setup): Don't install on non-GPT, non-MSDOS paritions. 2009-12-19 Vladimir Serbinenko * include/grub/types.h (UNUSED): Removed since it conflicts with NetBSD headers. All users changed to direct __attribute__ ((unused)). Reported by Grégoire Sutre. 2009-12-19 Carles Pina i Estany * include/grub/normal.h (grub_utf8_to_ucs4): New declaration. (grub_print_ucs4_alloc): Likewise. (grub_getstringwidth): Likewise. * normal/main.c (grub_normal_init_page): Gettextize version string. * normal/menu_text.c (grub_utf8_to_ucs4_alloc): New definition. (getstringwidth): Renamed to ... (grub_getstringwidth): ... this. Remove `static' qualifier (now used in normal/main.c). Use `grub_utf8_to_ucs4_alloc'. (grub_print_ucs4): Remove `static' qualifer (now used in normal/main.c). * po/POTFILES: Add normal/main.c. 2009-12-19 Carles Pina i Estany * normal/menu_text.c (STANDARD_MARGIN): New macro. (print_message_indented): Add `margin_left' and `margin_right' parameters. (print_message): Update `print_message_indented' calls. Adds '\n' to the strings. (print_timeout): Use `print_message_indented' to print the message. Deletes `second_stage' parameter. (run_menu): Update `print_timeout' calls. 2009-12-18 Vladimir Serbinenko Fix console palette on OpenFirmware. * term/ieee1275/ofconsole.c (MAX): Removed. (colors): Redone based on VGA palette. (grub_ofconsole_setcolor): Discard brightness bit since only 8 colors are supported. (grub_ofconsole_init_output): Use ARRAY_SIZE instead of hardcoded size. 2009-12-18 Vladimir Serbinenko Fix potential EfiEmu double prepare. * efiemu/main.c (prepared): New variable (grub_efiemu_unload): Set prepare to '0'. (grub_efiemu_prepare): Return if already prepared. Set prepared. set_virtual_address_map support. * include/grub/efi/efi.h (grub_efi_set_virtual_address_map): New prototype. * include/grub/efiemu/efiemu.h (grub_efiemu_write_sym_markers): New prototype. (grub_efiemu_crc32): Likewise. (grub_efiemu_crc64): Likewise. (grub_efiemu_set_virtual_address_map): Likewise. * include/grub/autoefi.h (grub_autoefi_exit_boot_services): New definition. (grub_autoefi_set_virtual_address_map): Likewise. * kern/efi/efi.c (grub_efi_set_virtual_address_map): New function. * loader/i386/xnu.c (grub_xnu_boot): Call set_virtual_address_map. Restructure flow to accomodate it. * efiemu/prepare.c (grub_efiemu_prepare): Support set_virtual_address_map. (grub_efiemu_crc): Recompute CRC32. * efiemu/runtime/efiemu.c (ptv_relocated): Renamed to ... (efiemu_ptv_relocated): ... this. Made global. All users updated. * efiemu/symbols.c (relocated_handle): New variable. (grub_efiemu_free_syms): Free relocated_handle. (grub_efiemu_alloc_syms): Allocate relocated_handle. (grub_efiemu_write_sym_markers): New function. (grub_efiemu_set_virtual_address_map): Likewise. Newer XNU parameters. * include/grub/i386/xnu.h (GRUB_XNU_BOOTARGS_VERMINOR): Change to 5. * include/grub/xnu.h (grub_xnu_extheader): Add nameaddr and namesize. (grub_xnu_fill_devicetree): New prototype. (grub_xnu_heap_real_start): New variable. * loader/xnu.c (get_name_ptr): New function. (grub_xnu_load_driver): Fill namelen and name. 64-bit xnu support. * conf/i386-efi.rmk (xnu_mod_SOURCES): Add 'loader/macho32.c' and 'loader/macho64.c'. * conf/i386-pc.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/i386/macho.h (grub_macho_thread64): New structure. * include/grub/xnu.h (grub_xnu_is_64bit): New variable. * include/grub/macho.h (grub_macho_segment64): New structure. * include/grub/machoload.h (grub_macho32_size): Renamed from ... (grub_macho_size32): ... to this. (grub_macho32_get_entry_point): Renamed from ... (grub_macho_get_entry_point32): ... to this. (grub_macho_contains_macho64): New prototype. (grub_macho_size64): Likewise. (grub_macho_get_entry_point64): Likewise. (grub_macho32_load): Renamed from ... (grub_macho_load32): ... to this. (grub_macho32_filesize): Renamed from ... (grub_macho_filesize32): ... to this. (grub_macho32_readfile): Renamed from ... (grub_macho_readfile32): ... to this. (grub_macho_filesize64): New prototype. (grub_macho_readfile64): Likewise. (grub_macho_parse32): Likewise. (grub_macho_parse64): Likewise. * loader/macho.c: Split into ... * loader/machoXX.c: ... and this. Replace 32 with XX. * loader/macho32.c: New file. * loader/macho64.c: Likewise. * loader/xnu.c (grub_xnu_is_64bit): New variable. (grub_cmd_xnu_kernel): Make 32-bit only. (grub_cmd_xnu_kernel64): New function. (grub_xnu_load_driver): Support Mach-O 64. (grub_cmd_xnu_mkext): Likewise. * util/grub.d/30_os-prober.in (osx_entry): New function. Generate entries for 64-bit boot too. Eliminate ad-hoc tree format in XNU and EfiEmu. * efiemu/main.c (grub_efiemu_prepare): Update comment. * efiemu/pnvram.c: Rewritten to use environment variables. All users updated. Inline utf16_to_utf8. * kern/misc.c (grub_utf16_to_utf8): Move from here ... * include/grub/charset.h (grub_utf16_to_utf8): ... to here. Inlined. All users updated. * include/grub/misc.h (grub_utf16_to_utf8): Removed. * bus/usb/usb.c (grub_usb_get_string): Move from here ... * commands/usbtest.c (grub_usb_get_string): ... move here. (usb_print_str): Fix error handling. * include/grub/usb.h (grub_usb_get_string): Remove. UTF-8 to UTF-16 transformation. * conf/common.rmk (pkglib_MODULES): Add charset.mod (charset_mod_SOURCES): New variable. (charset_mod_CFLAGS): Likewise. (charset_mod_LDFLAGS): Likewise. * include/grub/utf.h: New file. * lib/utf.c: New file. (Based on grub_utf8_to_ucs4 from kern/misc.c) Support for device properties. * include/grub/i386/xnu.h (grub_xnu_devprop_header): New structure. (grub_xnu_devprop_device_header): Likewise. (grub_xnu_devprop_device_descriptor): Likewise. (grub_xnu_devprop_add_device): New prototype. (grub_xnu_devprop_remove_device): Likewise. (grub_xnu_devprop_remove_property): Likewise. (grub_xnu_devprop_add_property_utf8): Likewise. (grub_xnu_devprop_add_property_utf16): Likewise. (grub_cpu_xnu_init): Likewise. (grub_cpu_xnu_fini): Likewise. (grub_cpu_xnu_unload): Likewise. * loader/i386/xnu.c (grub_xnu_devprop_device_descriptor): New structure. (property_descriptor): Likewise. (devices): New variable. (grub_xnu_devprop_remove_property): New function. (grub_xnu_devprop_add_device): Likewise. (grub_xnu_devprop_remove_device): Likewise. (grub_xnu_devprop_add_property): Likewise. (grub_xnu_devprop_add_property_utf8): Likewise. (grub_xnu_devprop_add_property_utf16): Likewise. (hextoval): Likewise. (grub_cpu_xnu_fill_devprop): Likewise. (grub_cmd_devprop_load): Likewise. (grub_xnu_boot): Call grub_cpu_xnu_fill_devprop, grub_xnu_fill_devicetree, grub_xnu_fill_devicetree (cmd_devprop_load): New variable. (grub_cpu_xnu_init): New function. (grub_cpu_xnu_fini): Likewise. * loader/i386/xnu.c (grub_xnu_unload): Call grub_cpu_xnu_unload. * loader/xnu.c (grub_xnu_parse_devtree): Remove. (grub_cmd_xnu_devtree): Likewise. (hextoval): New function. (unescape): Likewise. (grub_xnu_fill_devicetree): Likewise. * util/grub.d/30_os-prober.in: Load devprop.bin. Don't load devtree.txt. * util/i386/efi/grub-dumpdevtree: Generate devprop.bin. 2009-12-18 Vladimir Serbinenko Workaround for broken ATI VBE. * video/i386/pc/vbe.c (last_set_mode): New variable. (grub_vbe_set_video_mode): Set 'last_set_mode'. (grub_vbe_get_video_mode): Use 'last_set_mode' if get_mode fails. (grub_video_vbe_setup): Don't check for reserved flag. 2009-12-17 Felix Zielcke * gendistlist.sh: Use POSIX compliant `!' instead of `-not' in the `find' command. 2009-12-16 Vladimir Serbinenko UUID support for HFS. * fs/hfs.c (grub_hfs_uuid): New function. (grub_hfs_fs): New value .uuid. * include/grub/hfs.h (grub_hfs_sblock): New field 'num_serial'. 2009-12-14 Felix Zielcke Fix a segfault with parsing unknown long options. * util/grub-mkrelpath.c (options): Zero terminate it. 2009-12-13 Carles Pina i Estany * include/grub/misc.h (grub_puts): New declaration. (grub_puts_): Likewise. * kern/misc.c (grub_puts): New definition. (grub_puts_): Likewise. 2009-12-13 Robert Millan * util/grub-probe.c (probe): Improve error message. 2009-12-13 Robert Millan * loader/i386/multiboot_elfxx.c (CONCAT(grub_multiboot_load_elf, XX)): Fix `grub_multiboot_payload_eip' initialization. 2009-12-13 Vladimir Serbinenko Relocator framework * loader/i386/xnu_helper.S: Removed. All users updated. * conf/i386.rmk (pkglib_MODULES): Add relocator.mod. (relocator_mod_SOURCES): New variable. (relocator_mod_CFLAGS): Likewise. (relocator_mod_LDFLAGS): Likewise. (relocator_mod_ASFLAGS): Likewise. * conf/x86_64.rmk: Likewise. * include/grub/i386/multiboot.h (grub_multiboot_payload_orig): Removed. (grub_multiboot_payload_entry_offset): Likewise. (grub_multiboot_forward_relocator): Likewise. (grub_multiboot_forward_relocator_end): Likewise. (grub_multiboot_backward_relocator): Likewise. (grub_multiboot_backward_relocator_end): Likewise. (grub_multiboot_payload_eip): New variable. (grub_multiboot_payload_orig): Likewise. * include/grub/i386/pc/memory.h: Include grub/i386/memory.h. (GRUB_MEMORY_MACHINE_CR0_PE_ON): Move from here ... * include/grub/i386/memory.h (GRUB_MEMORY_CPU_CR0_PE_ON): ... to here (GRUB_MEMORY_CPU_CR4_PAE_ON): New definition. (GRUB_MEMORY_CPU_CR0_PAGING_ON): Likewise. (GRUB_MEMORY_CPU_AMD64_MSR): Likewise. (GRUB_MEMORY_CPU_AMD64_MSR_ON): Likewise. * include/grub/i386/relocator.h: New file. * include/grub/x86_64/relocator.h: Likewise. * include/grub/i386/xnu.h: Include grub/cpu/relocator.h. (XNU_RELOCATOR): New macro. (grub_xnu_launcher_start): Remove. (grub_xnu_launcher_end): Likewise. * include/grub/xnu.h (grub_xnu_boot_resume): New prototype. (grub_xnu_heap_real_start): Remove. (grub_xnu_heap_start): Change to void *. All users updated. * kern/i386/realmode.S (real_to_prot): Use GRUB_MEMORY_CPU_CR0_PE_ON. * lib/i386/relocator.c: New file. * lib/i386/relocator_asm.S: Likewise. * lib/i386/relocator_backward.S: Likewise. * lib/mips/relocator.c: Likewise. * lib/mips/relocator_asm.S: Likewise. * lib/relocator.c: Likewise. * loader/i386/multiboot.c: Include grub/i386/relocator.h. (entry): Removed. (playground): Likewise. (grub_multiboot_payload_orig): New variable. (grub_multiboot_payload_dest): Likewise. (grub_multiboot_payload_size): Likewise. (grub_multiboot_payload_eip): Likewise. (grub_multiboot_payload_esp): Likewise. (grub_multiboot_boot): Use grub_relocator32_boot. (grub_multiboot_unload): Free relocators. (grub_multiboot): Setup stack. Use relocators. * loader/i386/multiboot_elfxx.c: Include grub/i386/relocator.h. (grub_multiboot_load_elfXX): Use relocators. * loader/i386/multiboot_helper.S (grub_multiboot_payload_orig): Removed. (grub_multiboot_payload_size): Likewise. (grub_multiboot_payload_dest): Likewise. (grub_multiboot_payload_entry_offset): Likewise. (grub_multiboot_forward_relocator): Likewise. (grub_multiboot_backward_relocator): Likewise. (grub_multiboot_real_boot): Likewise. * loader/i386/xnu.c (grub_xnu_heap_will_be_at): New variable. (grub_xnu_entry_point): Likewise. (grub_xnu_arg1): Likewise. (grub_xnu_stack): Likewise. (grub_xnu_launch): Removed. (grub_xnu_boot_resume): New function. (grub_xnu_boot): Use relocators. * loader/i386/xnu_helper.S: Removed. * loader/xnu.c (grub_xnu_heap_start): New variable. (grub_xnu_heap_size): Likewise. (grub_xnu_heap_malloc): Use relocators. * loader/xnu_resume.c (grub_xnu_resume): Use relocators. 2009-12-13 Vladimir Serbinenko * kern/i386/pc/startup.S (multiboot_entry): Setup stack before calling anything. 2009-12-13 Carles Pina i Estany * script/execute.c (grub_script_execute_cmdline): Set grub_errno to GRUB_ERR_NONE before calling grub_env_set. 2009-12-12 Robert Millan * gendistlist.sh (EXTRA_DISTFILES): Add `genvideolist.sh'. * genmk.rb (video): New variable. (CLEANFILES, VIDEOFILES): Add #{video}. (#{video}): New target rule. * genvideolist.sh: New file. * Makefile.in (pkglib_DATA): Add video.lst. (video.lst): New target rule. * util/grub-mkconfig.in: Initialize ${GRUB_VIDEO_BACKEND} using `video.lst'. * util/grub.d/30_os-prober.in: Replace `vbe' with ${GRUB_VIDEO_BACKEND}. 2009-12-11 Robert Millan * THANKS: Add David Miller. 2009-12-11 Vladimir Serbinenko libpciaccess support. * Makefile.in (LIBPCIACCESS): New variable. (enable_grub_emu_pci): Likewise. * conf/any-emu.rmk (grub_emu_SOURCES) [enable_grub_emu_pci]: Add util/pci.c and commands/lspci.c. (grub_emu_LDFLAGS) [enable_grub_emu_pci]: Add $(LIBPCIACCESS). * configure.ac (grub-emu-pci): New option. * include/grub/i386/pci.h (grub_pci_device_map_range): New function. (grub_pci_device_unmap_range): Likewise. * include/grub/pci.h [GRUB_UTIL]: Include grub/pciutils.h. (grub_pci_device) [!GRUB_UTIL]: New structure. All users updated. (grub_pci_address_t) [!GRUB_UTIL]: New type. (grub_pci_device_t) [!GRUB_UTIL]: Likewise. (grub_pci_get_bus) [!GRUB_UTIL]: New function. (grub_pci_get_device) [!GRUB_UTIL]: Likewise. (grub_pci_get_function) [!GRUB_UTIL]: Likewise. * include/grub/pciutils.h: New file. * util/pci.c: Likewise. 2009-12-11 Felix Zielcke * util/misc.c: Don't include twice. 2009-12-10 Felix Zielcke * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Show the disk name in an error message. (grub_biosdisk_rw): Likewise. 2009-12-10 Vladimir Serbinenko Eliminate NTFS 4Gib barrier. * fs/ntfs.c (read_attr): Use grub_disk_addr_t and grub_size_t. (read_run_data): Likewise. (grub_ntfs_read_run_list): Likewise. (grub_ntfs_read_block): Likewise. (grub_ntfs_iterate_dir): Likewise. (read_mft): Likewise. (read_data): Likewise. Use COM_LOG_LEN. * fs/ntfscomp.c (read_block): Cast ctx->target_vcn & 0xF to unsigned to avoid 64-bit division * include/grub/ntfs.h (COM_LOG_LEN): New definition. (grub_ntfs_rlst): Use grub_disk_addr_t. 2009-12-10 Vladimir Serbinenko Eliminate grub-fstest 4Gib barrier. * util/grub-fstest.c (skip, leng): Use grub_disk_addr_t. (read_file): Fix error reporting. 2009-12-10 Vladimir Serbinenko Eliminate hexdump 4Gib barrier. * commands/hexdump.c (grub_cmd_hexdump): Use grub_disk_addr_t. * lib/arg.c (grub_arg_parse): Use grub_strtoull. 2009-12-10 Vladimir Serbinenko * kern/device.c (grub_device_iterate): Ignore errors during first scan. Fixes amarsh bug. 2009-12-09 Bruce Dubbs Remove miscellaneous files in distclean target. * Makefile.in: Remove docs/{grub.info,version.texi,stamp-vti} 2009-12-09 Colin Watson * util/grub-mkconfig_lib.in: Don't set grub_probe or grub_mkrelpath if they're already set. This resolves the conflict between my grub-install change on 2009-10-06 and Felix' change on 2009-11-11, fixing the --grub-probe option again. * util/sparc64/ieee1275/grub-install.in: Revert the last piece of my change on 2009-10-06, so that we now once again source `${libdir}/grub/grub-mkconfig_lib' after options have been parsed. 2009-12-08 Robert Millan * conf/common.rmk [sparc64-ieee1275] (grub_mkdevicemap_SOURCES): Use `util/ieee1275/ofpath.c' and `util/ieee1275/devicemap.c' instead of `util/devicemap.c'. 2009-12-08 Carles Pina i Estany * include/grub/misc.h (grub_printf_): New declaration. * kern/misc.c (grub_printf_): New definition. * normal/main.c (grub_normal_reader_init): Use `grub_printf_' and `N_' instead of `grub_printf' and `_'. * normal/menu_entry.c (store_completion): Likewise. (run): Likewise. (grub_menu_entry_run): Likewise. * normal/menu_text.c (grub_wait_after_message): Likewise. (notify_booting): Likewise. (notify_fallback): Likewise. (notify_execution_failure): Likewise. 2009-12-07 Colin Watson * configure.ac: Check for vasprintf. * util/misc.c (asprintf): Move allocation from here ... (vasprintf): ... to here. New function. (xasprintf): New function. * include/grub/util/misc.h (vasprintf, xasprintf): Add prototypes. * util/getroot.c (grub_util_get_grub_dev): Use xasprintf. * util/grub-mkfont.c (write_font): Likewise. * util/grub-probe.c (probe): Likewise. * util/hostdisk.c (make_device_name): Likewise. 2009-12-06 David S. Miller * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Recognize anything even prefixed with 'cdrom' as a cdrom. 2009-12-06 Felix Zielcke * util/misc.c (make_system_path_relative_to_its_root): Correctly cope with mount points. 2009-12-05 Carles Pina i Estany * gettext/gettext.c: Include `'. Define grub_gettext_msg, grub_gettext_msg_list. (grub_gettext_gettranslation_from_position): Return const char * and not char *. (grub_gettext_translate): Add the translated strings into a list, returns from the list if existing there. (grub_gettext_init_ext): Add \n at the end of grub_dprintf string. (grub_gettext_delete_list): Delete the list. (grub_gettext_env_write_lang): Call grub_gettext_delete_list when lang environment variable is changed. (GRUB_MOD_FINI): Call grub_gettext_delete_list. 2009-12-05 Vladimir Serbinenko Rename kernel.mod to kernel.img. * conf/i386-efi.rmk (pkglib_MODULES): Change kernel.mod to kernel.img. (kernel_mod_EXPORTS): Rename to ... (kernel_img_EXPORTS): ... this. (kernel_mod_SOURCES): Rename to ... (kernel_img_SOURCES): ... this. (kernel_mod_HEADERS): Rename to ... (kernel_img_HEADERS): ... this. All users updated. (kernel_mod_CFLAGS): Rename to ... (kernel_img_CFLAGS): ... this. (kernel_mod_ASFLAGS): Rename to ... (kernel_img_ASFLAGS): ... this. (kernel_mod_LDFLAGS): Rename to ... (kernel_img_LDFLAGS): ... this. * conf/x86_64-efi.rmk: Likewise. * util/i386/efi/grub-mkimage.c (read_kernel_module): Rename to ... (read_kernel_image): ... this. All users updated. (read_kernel_image): Read "kernel.img" instead of "kernel.mod". 2009-12-05 Carles Pina i Estany * normal/menu_text.c (grub_color_menu_high): Gettexttize string. (print_spaces): New function. (grub_print_ucs4): New function. (getstringwidth): New function. (print_message_indented): New function. (print_message): Gettexttize strings using print_message_indented. (run_menu): Replaces grub_printf by print_spaces and dynamic terminal width. (get_entry_number): Gettextize and uses dynamic terminal width. (notify_booting, notify_fallback, notify_execution_failure): Gettextize. * normal/menu_entry.c (store_completion): Cleanup the gettextized string. (run): Likewise. (grub_menu_entry_run): Likewise. * PO/POTFILES: Add normal/menu_entry.c. 2009-12-05 Vladimir Serbinenko * configure.ac (TARGET_ASFLAGS): Add "-D". 2009-12-05 Carles Pina i Estany * util/grub-install.in: Install gettext .mo files. * util/grub-mkrescue.in (process_input_dir): Copy gettext .mo files. 2009-12-05 Carles Pina i Estany * gettext/gettext.c (grub_gettext_init_ext): Replace grub_printf with grub_dprintf. 2009-12-05 Robert Millan * kern/ieee1275/openfw.c (grub_reboot): Disable for i386. The non-firmware-dependant one in realmode.S takes precedence. 2009-12-04 Robert Millan * commands/halt.c: Replace misc arch-specific headers with `'. * commands/reboot.c: Likewise. * commands/i386/pc/halt.c: Replace `' with `'. * conf/i386-coreboot.rmk (kernel_img_HEADERS): Remove `cpu/reboot.h'. (halt_mod_SOURCES): Move `kern/i386/halt.c' from here ... (kernel_img_SOURCES): ... to here. * include/grub/efi/efi.h (grub_reboot, grub_halt): Remove prototypes. * include/grub/i386/pc/init.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/misc.h (grub_reboot, grub_halt): New prototypes. * include/grub/i386/halt.h: Remove. * include/grub/i386/reboot.h: Likewise. * kern/i386/halt.c: Remove `'. 2009-12-03 David S. Miller * conf/sparc64-ieee1275.rmk (grub_mkimage_SOURCES, grub_setup_SOURCES, grub_ofpathname_SOURCES): Add gnulib/progname.c * util/sparc64/ieee1275/grub-mkimage.c: Include and "progname.h" * util/sparc64/ieee1275/grub-ofpathname.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. (usage): Add missing comma in printf. 2009-12-02 Robert Millan Use the same reboot approach on i386 coreboot and qemu as we do on BIOS. * conf/i386-coreboot.rmk (kernel_img_HEADERS): Add `cpu/reboot.h'. (reboot_mod_SOURCES): Remove `kern/i386/reboot.c'. * kern/i386/reboot.c: Remove. * include/grub/i386/reboot.h (grub_reboot): Export function. * kern/i386/pc/startup.S (grub_reboot): Move from here ... * kern/i386/realmode.S (grub_reboot): ... to here. Jump to 0xf000:0xfff0 instead of 0xffff:0x0000. [!GRUB_MACHINE_PCBIOS] (prot_to_real): Do not restore interrupts. * kern/i386/qemu/startup.S: Include `"../realmode.S"'. 2009-11-30 Robert Millan Fix $srcdir != $objdir build. * Makefile.in (po/%.po): Rewrite as ... ($(foreach lang, $(LINGUAS), $(srcdir)/po/$(lang).po)): ... this. 2009-11-29 Samuel Thibault Fix GNU/Hurd grub-install crash. * util/grub-probe.c (probe): Try to access `path' only when it is not NULL. 2009-11-28 Vladimir Serbinenko Correct module naming. * video/efi_uga.c (GRUB_MOD_INIT(efi_fb)): Renamed from this ... (GRUB_MOD_INIT(efi_uga)): ... to this (GRUB_MOD_FINI(efi_fb)): Renamed from this ... (GRUB_MOD_FINI(efi_uga)): ... to this * video/efi_gop.c (GRUB_MOD_INIT(efi_fb)): Renamed from this ... (GRUB_MOD_INIT(efi_gop)): ... to this (GRUB_MOD_FINI(efi_fb)): Renamed from this ... (GRUB_MOD_FINI(efi_gop)): ... to this 2009-11-28 Robert Millan * util/mkisofs/mkisofs.c (ld_options): Mark all `arg' strings as translatable. (usage): Translate `arg' strings using gettext(). Thanks to Jordi Mallach for the suggestion. 2009-11-28 Vladimir Serbinenko GOP support. Based on patch from Bean (http://lists.gnu.org/archive/html/grub-devel/2009-08/msg00384.html) * video/efi_gop.c: New file. * include/grub/efi/graphics_output.h: Likewise. * conf/i386-efi.rmk (pkglib_MODULES): Add `efi_gop.mod'. (efi_fb_mod_SOURCES, efi_fb_mod_CFLAGS, efi_fb_mod_LDFLAGS): New variables. * conf/x86_64-efi.rmk: Likewise. 2009-11-28 Vladimir Serbinenko Rename efi_fb to efi_uga. * conf/i386-efi.rmk (pkglib_MODULES): Rename 'efi_fb.mod' to 'efi_uga.mod'. (efi_fb_mod_SOURCES): Rename this ... (efi_uga_mod_SOURCES): ... to this. (efi_fb_mod_CFLAGS): Rename this ... (efi_uga_mod_CFLAGS): ... to this. (efi_fb_mod_LDFLAGS): Rename this ... (efi_uga_mod_LDFLAGS): ... to this. * conf/x86_64-efi.rmk (pkglib_MODULES): Rename 'efi_fb.mod' to 'efi_uga.mod'. (efi_fb_mod_SOURCES): Rename this ... (efi_uga_mod_SOURCES): ... to this. (efi_fb_mod_CFLAGS): Rename this ... (efi_uga_mod_CFLAGS): ... to this. (efi_fb_mod_LDFLAGS): Rename this ... (efi_uga_mod_LDFLAGS): ... to this. * video/efi_fb.c: Move this ... * video/efi_uga.c: ... to this. Change prefix to 'grub_video_uga_'. 2009-11-27 Robert Millan * po/README: New file. Explain our PO file workflow. 2009-11-27 Robert Millan * po/ChangeLog: Remove. Move relevant entries back to ... * ChangeLog: ... here. * po/ca.po: Remove (now handled by TLP). * po/id.po: Likewise. * po/zh_CN.po: Likewise. * Makefile.in (LINGUAS): Initialize in a way that supports empty set. 2009-11-27 Robert Millan * Makefile.in (LINGUAS): Rewrite by scanning po/ directory instead of reliing on po/LINGUAS. ($(foreach lang, $(LINGUAS), $(srcdir)/po/$(lang).po)): Rewrite as ... (po/%.po): ... this. 2009-11-26 Felix Zielcke * util/i386/efi/grub-mkimage.c: Include "progname.h". (main): Use `program_name' instead of nonexistent `progname'. 2009-11-26 Felix Zielcke * conf/i386-efi.rmk (grub_mkimage_SOURCES): Add `gnulib/progname.c'. * conf/x86_64-efi.rmk (grub_mkimage_SOURCES): Likewise. 2009-11-26 Robert Millan * conf/i386-coreboot.rmk: Cleanup stale filenames from my previous commit. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. 2009-11-26 Felix Zielcke * conf/any-emu.rmk (grub_emu_SOURCES): Add `gnulib/progname.c'. 2009-11-26 Felix Zielcke * conf/any-emu.rmk (grub_mkfont_SOURCES): Add `gnulib/progname.c'. 2009-11-26 Robert Millan * conf/common.rmk (sbin_UTILITIES): Add `grub-mkdevicemap'. (grub_mkdevicemap_SOURCES): New variable. (grub_probe_SOURCES, grub_fstest_SOURCES, grub_mkfont_SOURCES) (grub_mkrelpath_SOURCES, grub_editenv_SOURCES) (grub_pe2elf_SOURCES): Add `gnulib/progname.c'. * conf/i386-coreboot.rmk (sbin_UTILITIES): Remove `grub-mkdevicemap'. (grub_mkdevicemap_SOURCES): Remove. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * util/elf/grub-mkimage.c: Include `' and `"progname.h"'. (usage): Fix strings to use `program_name'. (main): Initialize gettext. * util/grub-editenv.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-fstest.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-mkfont.c: Likewise. * util/grub-mkrelpath.c: Likewise. * util/grub-pe2elf.c: Likewise. * util/grub-probe.c: Likewise. * util/sparc64/ieee1275/grub-mkimage.c: Likewise. * util/sparc64/ieee1275/grub-ofpathname.c: Likewise. * util/sparc64/ieee1275/grub-setup.c: Likewise. * util/misc.c: Include `"progname.h"'. (progname): Remove variable. (grub_util_warn, grub_util_info, grub_util_error): Use `program_name'. 2009-11-25 Felix Zielcke * util/grub.d/10_linux.in (linux_entry): Quote the arguments to printf and print a newline after the menuentry header line. * util/grub.d/10_kfreebsd.in (kfreebsd_entry): Likewise. 2009-11-25 Felix Zielcke autoconf >= 2.60 support $(localedir). * INSTALL: Note that autoconf 2.60 is required. * configure.ac (AC_PREREQ): Bump to 2.60. * util/grub.d/10_kfreebsd.in (TEXTDOMAINDIR): Set to lowercased @localedir@. * util/grub.d/10_linux.in (TEXTDOMAINDIR): Likewise. 2009-11-25 Yves Blusseau * configure.ac: move the call to AM_GNU_GETTEXT to avoid warnings when aclocal is run. 2009-11-25 Robert Millan * normal/main.c (grub_normal_read_line): Fix off-by-one buffer overflow. 2009-11-25 Robert Millan * normal/main.c (grub_normal_execute): Replace "parser.sh" with "parser.grub" in grub_command_execute() call. 2009-11-24 Carles Pina i Estany * conf/i386-coreboot.rmk (kernel_img_HEADERS): Add i18n.h. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * gettext/gettex.c: Include . * include/grub/misc.h (grub_gettext_dummy, grub_gettext): Move from here ... * include/grub/i18n.h: ... to here * include/grub/i18n.h: ... to here. * kern/misc.c: Include (grub_gettext_dummy): Move above user. 2009-11-24 Felix Zielcke * util/Makefile.in (install-local): Convert a `for' into a normal shell expansion. 2009-11-24 Robert Millan * autogen.sh: Add automake call. * config.guess: Remove. * config.sub: Likewise. * install-sh: Likewise. 2009-11-24 Felix Zielcke * util/Makefile.in (install-local): Fix the use of $lang shell variable. 2009-11-24 Felix Zielcke * util/Makefile.in (install-local): Convert a make `$(foreach)' function to a normal shell `for'. 2009-11-24 Felix Zielcke * conf/i386-coreboot.rmk (grub_mkimage_SOURCES): Add `gnulib/progname.c'. 2009-11-24 Felix Zielcke * 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 (bindir): New variable. (grub_mkrelpath): Likewise. (make_system_path_relative_to_its_root): Use grub-mkrelpath. * 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. * util/i386/pc/grub-setup.c (setup): Make core.img path relative to its root. 2009-11-24 Felix Zielcke * Makefile.in: Don't include GRUB_CONTRIB makefiles with emu platform. 2009-11-24 Felix Zielcke * util/getroot.c (grub_util_get_dev_abstraction): Properly use strncmp(). 2009-11-24 Felix Zielcke * util/getroot.c (grub_util_is_dmraid): New function. (grub_util_get_dev_abstraction): Treat dmraid and multipath devices as normal ones, not as LVM. 2009-11-23 Carles Pina i Estany * conf/common.rmk: Add grub-gettext_lib target and updates lib_DATA and CLEANFILES. Adds gettext.mod SOURCES, CFLAGS, LDFLAGS. * gettext/gettext.c: New file. (Reads mo files). * include/grub/file.h (grub_file_pread): New prototype. * include/grub/i18n.h (_): New prototype. * include/grub/misc.h (grub_gettext_dummy, grub_gettext): New prototypes. * kern/misc.c (grub_gettext_dummy): New function. * normal/menu_text.c: Include . * normal/menu_text.c (print_timeout): Gettexttize string. * normal/menu_text.c (print_message): Gettexttize string. * po/POTFILES: Add `normal/menu_text.c'. * po/ca.po: Add new translations. * util/grub.d/00_header.in: Define locale_dir and lang. insmod gettext module and defines locale_dir and lang in grub.cfg. * NEWS: Add gettext support. 2009-11-23 Robert Millan * util/hostdisk.c: Include `'. (find_grub_drive): Use ARRAY_SIZE for map size calculation. (make_device_name): Rewrite using asprintf. (convert_system_partition_to_system_disk): Replace 0 with NULL. (find_system_device): If a device is not found, generate one just by reusing the OS path name. (read_device_map): Make it permissible for device.map not to exist. 2009-11-23 Robert Millan * script/sh/execute.c: Move from here ... * script/execute.c: ... to here. Update all users. * script/sh/function.c: Move from here ... * script/function.c: ... to here. Update all users. * script/sh/lexer.c: Move from here ... * script/lexer.c: ... to here. Update all users. * script/sh/main.c: Move from here ... * script/main.c: ... to here. Update all users. * script/sh/parser.y: Move from here ... * script/parser.y: ... to here. Update all users. * script/sh/script.c: Move from here ... * script/script.c: ... to here. Update all users. 2009-11-23 Robert Millan * configure.ac: Detect all `emu' platforms. Define GRUB_MACHINE_* macros in TARGET_CFLAGS. Remove --enable-grub-emu logic. Disable include/grub/machine symlink on `emu' platforms. * genkernsyms.sh.in: Use @TARGET_CFLAGS@ during symbol generation. * gensymlist.sh.in: Likewise. * include/grub/i386/coreboot/machine.h: Remove file. * include/grub/i386/efi/machine.h: Likewise. * include/grub/i386/ieee1275/machine.h: Likewise. * include/grub/i386/pc/machine.h: Likewise. * include/grub/i386/qemu/machine.h: Likewise. * include/grub/powerpc/ieee1275/machine.h: Likewise. * include/grub/sparc64/ieee1275/machine.h: Likewise. * include/grub/x86_64/efi/machine.h: Likewise. * commands/acpi.c: Remove `'. * commands/halt.c: Likewise. * commands/reboot.c: Likewise. * include/grub/autoefi.h: Likewise. * include/grub/i386/at_keyboard.h: Likewise. * include/grub/i386/kernel.h: Likewise. * include/grub/i386/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * kern/dl.c: Likewise. * kern/i386/coreboot/init.c: Likewise. * loader/i386/bsd.c: Likewise. * loader/i386/linux.c: Likewise. * loader/multiboot_loader.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/usb_keyboard.c: Likewise. * include/grub/time.h [!GRUB_MACHINE_EMU]: Remove `' [!GRUB_MACHINE_EMU] (GRUB_TICKS_PER_SECOND): New macro. * util/misc.c: Remove `' and `'. * Makefile.in (enable_grub_emu): Remove variable. Include $(srcdir)/conf/any-emu.mk for the `emu' platform. * conf/any-emu.rmk: New file. * conf/common.rmk (grub_emu_init.lst, grub_emu_init.h) (grub_emu_init.c): Move from here ... * conf/any-emu.rmk: ... to here. * conf/i386-coreboot.rmk (sbin_UTILITIES): Remove `grub-emu'. (grub_emu_SOURCES, grub_emu_LDFLAGS): Move from here ... * conf/any-emu.rmk: ... to here. 2009-11-23 Robert Millan * include/grub/parser.h (grub_parser_register): Document need of `name' parameter. * normal/main.c (grub_normal_read_line): Simplify prompt string. * script/sh/main.c (grub_sh_parser, GRUB_MOD_INIT(sh)): Rename "sh" to "grub". 2009-11-23 Robert Millan * Makefile.in ($(srcdir)/po/$(PACKAGE).pot): Pass --keyword=N_ to `$(XGETTEXT)'. * include/grub/i18n.h (N_): New macro. * util/mkisofs/mkisofs.h: Likewise. * util/mkisofs/mkisofs.c (ld_options): Wrap all translatable strings around N_(). (usage): Use gettext() to translate help strings when printing them. 2009-11-23 Robert Millan Based on patch from Bean (http://lists.gnu.org/archive/html/grub-devel/2009-08/msg00384.html) * video/efi_fb.c: New file. * conf/i386-efi.rmk (pkglib_MODULES): Add `efi_fb.mod'. (efi_fb_mod_SOURCES, efi_fb_mod_CFLAGS, efi_fb_mod_LDFLAGS): New variables. * conf/x86_64-efi.rmk: Likewise. 2009-11-22 Robert Millan * util/i386/pc/grub-mkimage.c: Ungettextize grub_util_info() strings. * util/i386/pc/grub-setup.c: Likewise. 2009-11-21 Samuel Thibault * util/getroot.c [__GNU__]: Include , , and [__GNU__] (grub_guess_root_device): Call file_name_lookup and file_get_storage_info to implement grub_guess_root_device. 2009-11-21 Felix Zielcke * Makefile.in (target): Use make's builtin $(shell) function instead of calling directly $(SHELL) to create the locale directories, inside the $(foreach) function. 2009-11-21 Felix Zielcke * util/grub-mkrescue.in: Print an error and usage if output option has not been given. 2009-11-21 Felix Zielcke Patch from Loïc Minier . * util/grub.d/30_os-prober.in: Cope with Linux entries where root and /boot are on different devices. 2009-11-21 Robert Millan Fix build for srcdir != objdir. * Makefile.in (po/$(PACKAGE).pot): Rename to ... ($(srcdir)/po/$(PACKAGE).pot): ... this. Run $(XGETTEXT) from $(srcdir). ($(foreach lang, $(LINGUAS), po/$(lang).po)): Rename to ... ($(foreach lang, $(LINGUAS), $(srcdir)/po/$(lang).po): ... this. Use $^ reference for input. 2009-11-21 Robert Millan * util/grub-mkrescue.in: Use source directory direcly (without copiing or hardlinking it). Remove -J option, Joliet is not compatible with multiple source directories. 2009-11-21 Carles Pina i Estany 2009-11-21 Robert Millan * util/grub-mkrescue.in: Recognize `--override-directory' option. (process_input_dir): New function. Process an arbitrary input directory. Misc adjustments to support both "override mode" and system-wide mode. 2009-11-20 Felix Zielcke * configure.ac (UNIFONT_BDF): Rename to ... (FONT_SOURCE): ... this. Update all users. 2009-11-20 Felix Zielcke * configure.ac: Add `/usr/share/fonts/X11/misc/unifont.pcf.gz' to the list of unifont files to look for. 2009-11-19 Robert Millan Patch from Joe Auricchio * commands/minicmd.c (grub_mini_cmd_clear): New function. (GRUB_MOD_INIT(minicmd)): Register grub_mini_cmd_clear(). (GRUB_MOD_FINI(minicmd)): Unregister grub_mini_cmd_clear(). 2009-11-19 Felix Zielcke * Makefile.in (install-local): Add a missing backslash. 2009-11-19 Felix Zielcke * include/grub/x86_64/io.h: New file. 2009-11-19 Robert Millan * conf/i386-pc.rmk (grub_setup_SOURCES): Add `gnulib/progname.c'. * util/i386/pc/grub-setup.c: Include `'. Include `"progname.h"'. (main): Initialize gettext. * util/i386/pc/grub-setup.c: Gettexttize. * util/i386/pc/grub-mkimage.c: Likewise. * Makefile.in (po/*.po): Redefine as ... ($(foreach lang, $(LINGUAS), po/$(lang).po)): ... this. * po/POTFILES: Add `util/i386/pc/grub-setup.c'. 2009-11-19 Robert Millan * conf/common.rmk (grub_mkisofs_SOURCES): Add `gnulib/progname.c'. * util/mkisofs/mkisofs.c: Include `"progname.h"'. (program_name): Remove. (main): Initialize gettext support. * util/mkisofs/mkisofs.h: Include `'. Include `'. (_): New macro. * util/mkisofs/eltorito.c: Gettexttize. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/multi.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. * po/POTFILES: Update with new files. 2009-11-18 Robert Millan * util/mkisofs/eltorito.c: Fix minor mistake in license text. * util/mkisofs/iso9660.h: Likewise. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/mkisofs.h: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. * util/mkisofs/eltorito.c (rcsid): Remove. * util/mkisofs/hash.c: Likewise. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/name.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. 2009-11-18 Robert Millan * util/mkisofs/match.c: Rewrite from scratch, using a linked list instead of static allocation. * util/mkisofs/match.h: Likewise. 2009-11-18 Robert Millan * po/POTFILES-shell: New file. List `util/grub.d/10_kfreebsd.in' and `util/grub.d/10_linux.in'. * Makefile.in (po/$(PACKAGE).pot): Process `po/POTFILES-shell' for translatable Shell files. 2009-11-18 Robert Millan * Makefile.in ($(srcdir)/aclocal.m4): New target. 2009-11-17 Robert Millan * INSTALL: Document Automake is needed for bootstrap. * po/ca.po: Fix PO-Revision-Date and Language-Team fields. * util/grub.d/10_kfreebsd.in (bindir): New variable. Add gettext initialization. (kfreebsd_entry): Make menuentry output translatable. 2009-11-17 Robert Millan * Makefile.in (XGETTEXT, MSGMERGE, MSGFMT): New variables. (po/$(PACKAGE).pot): Replace `xgettext' with `$(XGETTEXT)'. (po/*.po): Replace `msgmerge' with `$(MSGMERGE)'. (po/%.mo): Replace `msgfmt' with `$(MSGFMT)'. (LINGUAS): Auto-generate using `po/LINGUAS'. * po/LINGUAS: New file. 2009-11-17 Robert Millan * configure.ac: Call AM_GNU_GETTEXT() (defines localedir, among other things). * Makefile.in (CPPFLAGS): Add `-DLOCALEDIR=\"$(localedir)\"'. * util/i386/pc/grub-mkimage.c (main): Issue setlocale() and bindtextdomain() calls for gettext initialization. 2009-11-17 Robert Millan * gnulib/progname.c: New file (imported from Gnulib). * gnulib/progname.h: Likewise. * conf/i386-pc.rmk (grub_mkimage_SOURCES): Add `gnulib/progname.c'. * util/i386/pc/grub-mkimage.c: Include `"progname.h"'. (usage): Replace `progname' with `program_name'. (main): Use set_program_name() for program name initialization. 2009-11-17 Robert Millan * conf/common.rmk (grub_mkisofs_CFLAGS): Move `-I$(srcdir)/gnulib' from here ... * Makefile.in (CPPFLAGS): ... to here. 2009-11-16 Robert Millan * aclocal.m4: Move from here ... * acinclude.m4: ... to here. * autogen.sh: Add call to `aclocal'. * configure.ac: Add AM_INIT_AUTOMAKE() after AC_INIT() call. 2009-11-16 Robert Millan * Makefile.in (CLEANFILES): Add `po/*.mo'. (LINGUAS): New variable. (all-local): Add `$(foreach lang, $(LINGUAS), po/$(lang).mo)'. (install-local): Install MO files. (po/$(PACKAGE).pot, po/*.po, po/%.mo): New rules. * include/grub/i18n.h: New file. * po/POTFILES: New file. * po/ca.po: New file. * util/grub.d/10_linux.in (bindir): New variable. Add gettext initialization. (linux_entry): Make menuentry output translatable. * util/i386/pc/grub-mkimage.c: Include `'. (usage): Make --help output translatable. (main): Initialize gettext. 2009-11-17 Robert Millan * import_gcry.py: New file (written by Vladimir with minor adjustments). * autogen.sh: Use import_gcry.py to auto-generate GRUB-ified ciphers. * INSTALL: Document that Python is required for bootstrap. 2009-11-17 Robert Millan Import ciphers from libgcrypt 1.4.4. * lib/libgcrypt/cipher/ChangeLog * lib/libgcrypt/cipher/ac.c * lib/libgcrypt/cipher/arcfour.c * lib/libgcrypt/cipher/bithelp.h * lib/libgcrypt/cipher/blowfish.c * lib/libgcrypt/cipher/camellia-glue.c * lib/libgcrypt/cipher/camellia.c * lib/libgcrypt/cipher/camellia.h * lib/libgcrypt/cipher/cast5.c * lib/libgcrypt/cipher/cipher.c * lib/libgcrypt/cipher/crc.c * lib/libgcrypt/cipher/des.c * lib/libgcrypt/cipher/dsa.c * lib/libgcrypt/cipher/ecc.c * lib/libgcrypt/cipher/elgamal.c * lib/libgcrypt/cipher/hash-common.c * lib/libgcrypt/cipher/hash-common.h * lib/libgcrypt/cipher/hmac-tests.c * lib/libgcrypt/cipher/md.c * lib/libgcrypt/cipher/md4.c * lib/libgcrypt/cipher/md5.c * lib/libgcrypt/cipher/primegen.c * lib/libgcrypt/cipher/pubkey.c * lib/libgcrypt/cipher/rfc2268.c * lib/libgcrypt/cipher/rijndael-tables.h * lib/libgcrypt/cipher/rijndael.c * lib/libgcrypt/cipher/rmd.h * lib/libgcrypt/cipher/rmd160.c * lib/libgcrypt/cipher/rsa.c * lib/libgcrypt/cipher/seed.c * lib/libgcrypt/cipher/serpent.c * lib/libgcrypt/cipher/sha1.c * lib/libgcrypt/cipher/sha256.c * lib/libgcrypt/cipher/sha512.c * lib/libgcrypt/cipher/tiger.c * lib/libgcrypt/cipher/twofish.c * lib/libgcrypt/cipher/whirlpool.c 2009-11-16 Robert Millan Fix build for systems without error(). * gnulib/error.c: New file (imported from Gnulib). * gnulib/error.h: Likewise. * conf/common.rmk (grub_mkisofs_SOURCES): Add `gnulib/error.c'. * util/mkisofs/mkisofs.c (program_name): Remove `static' qualifier (this variable is now used by error()). 2009-11-16 Felix Zielcke * util/mkisofs/name.c (iso9660_file_length): Use isascii macro instead of relying that char is signed. 2009-11-16 Vladimir Serbinenko * fs/i386/pc/pxe.c (grub_pxefs_open): Correctly handle PXE choosing blocksize different from specified. (grub_pxefs_read): Likewise. 2009-11-16 Felix Zielcke Enable ata.mod on x86_64-efi, i386-efi and i386-ieee1275. * disk/ata.c (grub_ata_dumpinfo): Add a cast. (grub_ata_readwrite): Likewise. Update 2 format strings. (grub_atapi_read): Likewise. * conf/i386-coreboot.rmk (pkglib_MODULES): Move `ata.mod' from here ... * conf/i386.rmk (pkglib_MODULES): ... to here ... * conf/x86_64-efi.rmk (pkglib_MODULES): ... and here. * conf/i386-coreboot.rmk (ata_mod_SOURCES, ata_mod_CFLAGS) (ata_mod_LDFLAGS): Move from here ... * conf/i386.rmk: ... to here ... * conf/x86_64-efi.rmk: ... and here. * conf/i386-pc.rmk (pkglib_MODULES): Remove `ata.mod' (ata_mod_SOURCES, ata_mod_CFLAGS, ata_mod_LDFLAGS): Remove. 2009-11-16 Robert Millan Relicense multiboot.h, with RMS' blessing. * include/multiboot.h: Change to X11 license. 2009-11-15 Robert Millan Support --version in grub-mkisofs. * util/mkisofs/mkisofs.c (rcsid): Remove variable. (OPTION_VERSION): New macro. (ld_options): Recognize --version. (usage): Move `program_name' from here ... (program_name): ... to here. Add `static' qualifier. (main): Recognize `OPTION_VERSION'. 2009-11-15 Felix Zielcke * Makefile.in (TARGET_CPPFLAGS): Replace `-isystem=$(srcdir)/include' with `-nostdinc -isystem $(shell $(TARGET_CC) -print-file-name=include)'. 2009-11-14 Robert Millan Fix help2man generation for mkisofs. * util/mkisofs/mkisofs.c (ld_options): Recognize --help. (usage): Send output to stdout (rather than stderr). 2009-11-14 Robert Millan * conf/i386-coreboot.rmk (grub_mkrescue_SOURCES): Replace `util/i386/coreboot/grub-mkrescue.in' with `util/grub-mkrescue.in'. * conf/i386-pc.rmk (grub_mkrescue_SOURCES): Replace `util/i386/pc/grub-mkrescue.in' with `util/grub-mkrescue.in'. (bin_SCRIPTS): Add `grub-mkfloppy'. (grub_mkfloppy_SOURCES): New variable. * util/grub-mkrescue.in: New file. * util/i386/pc/grub-mkfloppy.in: New file. * util/i386/coreboot/grub-mkrescue.in: Remove. * util/i386/pc/grub-mkrescue.in: Remove. 2009-11-13 Robert Millan * include/grub/multiboot.h (struct grub_multiboot_header): Move from here ... * include/multiboot.h (struct multiboot_header): ... to here. Update all users. * include/grub/multiboot.h (struct grub_multiboot_info): Move from here ... * include/multiboot.h (struct multiboot_info): ... to here. Update all users. * include/grub/multiboot.h (struct grub_multiboot_mmap_entry): Move from here ... * include/multiboot.h (struct multiboot_mmap_entry): ... to here. Update all users. * include/grub/multiboot.h (struct grub_mod_list): Move from here ... * include/multiboot.h (struct multiboot_mod_list): ... to here. Update all users. 2009-11-13 Robert Millan * include/multiboot2.h (multiboot_word): Rename from this ... (multiboot2_word): ... to this. Update all users. (multiboot_header): Rename from this ... (multiboot2_header): ... to this. Update all users. (multiboot_tag_header): Rename from this ... (multiboot2_tag_header): ... to this. Update all users. (multiboot_tag_start): Rename from this ... (multiboot2_tag_start): ... to this. Update all users. (multiboot_tag_name): Rename from this ... (multiboot2_tag_name): ... to this. Update all users. (multiboot_tag_module): Rename from this ... (multiboot2_tag_module): ... to this. Update all users. (multiboot_tag_memory): Rename from this ... (multiboot2_tag_memory): ... to this. Update all users. (multiboot_tag_unused): Rename from this ... (multiboot2_tag_unused): ... to this. Update all users. (multiboot_tag_end): Rename from this ... (multiboot2_tag_end): ... to this. Update all users. 2009-11-13 Robert Millan Disable Multiboot2 in i386-ieee1275. It didn't actually work, and on this platform we should support Multiboot1 first. * conf/i386-ieee1275.rmk (pkglib_MODULES): Remove `multiboot.mod'. (multiboot_mod_SOURCES, multiboot_mod_CFLAGS) (multiboot_mod_LDFLAGS, multiboot_mod_ASFLAGS): Remove. 2009-11-12 Robert Millan * 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. 2009-11-12 Robert Millan * util/i386/pc/grub-install.in: Move from here ... * util/grub-install.in: ... to here. Update all users. 2009-11-11 Colin Watson * util/powerpc/ieee1275/grub-mkrescue.in: Fix --version output. 2009-11-11 Robert Millan Support for El Torito without floppy emulation. * util/mkisofs/eltorito.c: Include `'. (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. 2009-11-11 Felix Zielcke Fix the generation of the man page. * util/pc/i386/grub-install.in: Source `${libdir}/grub/grub-mkconfig_lib' after options have been parsed. 2009-11-11 Robert Millan 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 `'. (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. 2009-11-09 Felix Zielcke * util/mkisofs/mkisofs.c (ld_options): Fix a spelling mistake. 2009-11-09 Robert Millan * util/mkisofs/fnmatch.c: Remove. * util/mkisofs/getopt1.c: Likewise. * util/mkisofs/getopt.c: Likewise. * conf/common.rmk (grub_mkisofs_SOURCES): Replace `util/mkisofs/fnmatch.c', `util/mkisofs/getopt1.c' and `util/mkisofs/getopt.c' with `gnulib/fnmatch.c', `gnulib/getopt1.c' and `gnulib/getopt.c'. (grub_mkisofs_CFLAGS): Add `-I$(srcdir)/gnulib'. * configure.ac: Detect `mingw32msvc' host_os. Check for lstat(), getuid() and getgid(). * util/mkisofs/joliet.c: Include `'. Replace all instances of `u_char' with `uint8_t'. * util/mkisofs/mkisofs.h: Include `'. [!HAVE_GETUID] (getuid): New function (stub). [!HAVE_GETGID] (getgid): Likewise. [!HAVE_LSTAT] (lstat): Likewise. [!S_IROTH] (S_IROTH): New macro (dummy). [!S_IRGRP] (S_IRGRP): Likewise. 2009-11-09 Robert Millan * gnulib/fnmatch_loop.c (EXT): Fix warning (signed and unsigned type in conditional expression). 2009-11-09 Robert Millan Import from Gnulib. * gnulib/fnmatch.c: New file. * gnulib/fnmatch.h: Likewise. * gnulib/fnmatch_loop.c: Likewise. * gnulib/getopt.c: Likewise. * gnulib/getopt.h: Likewise. * gnulib/getopt1.c: Likewise. * gnulib/getopt_int.h: Likewise. * gnulib/gettext.h: Likewise. 2009-11-09 Robert Millan * normal/dyncmd.c (read_command_list): Replace `0' with `NULL'. * normal/handler.c (read_handler_list): Likewise. 2009-11-09 Robert Millan Misc cleanup. * kern/command.c (grub_register_command_prio): Use grub_zalloc() instead of explicitly zeroing data. * kern/list.c: Include `'. (grub_named_list_find): Replace `0' with `NULL'. * normal/autofs.c (struct grub_fs_module_list): Remove ad-hoc type. (fs_module_list): Change type to `grub_named_list_t'. Update all users. * normal/dyncmd.c (read_command_list): Add space between function call and parenthesis. * normal/handler.c (read_handler_list): Likewise. 2009-11-09 Robert Millan * normal/auth.c (punishment_delay): Moved from here ... (grub_auth_strcmp): ... to here (inside function). 2009-11-09 Robert Millan * include/grub/list.h (struct grub_named_list): Remove `const' qualifier from `name'. (struct grub_prio_list): Likewise. 2009-11-09 Robert Millan * normal/auth.c: Include `'. (grub_auth_strcmp): Replace `strcmp' with `grub_strcmp'. 2009-11-09 Robert Millan * normal/auth.c (punishment_delay): New variable. (grub_auth_strcmp): Rewrite using grub_get_time_ms (). (grub_auth_check_authentication): Punish failed login attempts with an incremental (2^N) delay. 2009-11-09 Robert Millan * conf/common.rmk (grub_mkisofs_CFLAGS): Prefix include path with $(srcdir). 2009-11-09 Vladimir Serbinenko * normal/auth.c (grub_auth_strcmp): Fixed incorrect variable usage. 2009-11-09 Robert Millan * util/i386/coreboot/grub-mkrescue.in: New file. * conf/i386-coreboot.rmk (bin_SCRIPTS, grub_mkrescue_SOURCES): New variables. * conf/common.rmk (bin_UTILITIES): Add `grub-mkisofs'. (grub_mkisofs_SOURCES, grub_mkisofs_CFLAGS): New variables. * configure.ac: Add header and function checks to satisfy grub-mkisofs requirements. * util/mkisofs/defaults.h: New file. * util/mkisofs/eltorito.c: Likewise. * util/mkisofs/exclude.h: Likewise. * util/mkisofs/fnmatch.c: Likewise. * util/mkisofs/getopt.c: Likewise. * util/mkisofs/getopt1.c: Likewise. * util/mkisofs/hash.c: Likewise. * util/mkisofs/include/fctldefs.h: Likewise. * util/mkisofs/include/mconfig.h: Likewise. * util/mkisofs/include/prototyp.h: Likewise. * util/mkisofs/include/statdefs.h: Likewise. * util/mkisofs/iso9660.h: Likewise. * util/mkisofs/joliet.c: Likewise. * util/mkisofs/match.c: Likewise. * util/mkisofs/match.h: Likewise. * util/mkisofs/mkisofs.c: Likewise. * util/mkisofs/mkisofs.h: Likewise. * util/mkisofs/multi.c: Likewise. * util/mkisofs/name.c: Likewise. * util/mkisofs/rock.c: Likewise. * util/mkisofs/tree.c: Likewise. * util/mkisofs/write.c: Likewise. 2009-11-09 Vladimir Serbinenko * normal/auth.c (grub_auth_strcmp): Fix bug which resulted in function being insecure. 2009-11-08 Robert Millan * util/i386/pc/grub-mkrescue.in: Fix miss-identification as `grub-mkimage' (and use $0 when possible). 2009-11-08 Robert Millan * kern/i386/multiboot_mmap.c (grub_machine_mmap_init): Improve error message for excessively large memory map. 2009-11-08 Robert Millan * autogen.sh: Use `sh gendistlist.sh' to avoid reliing on executable bit. 2009-11-08 Robert Millan * kern/i386/multiboot_mmap.c (grub_machine_mmap_init): Improve error message for coreboot users. 2009-11-07 Robert Millan Fix build with GNU gold. * conf/i386-pc.rmk (boot_img_LDFLAGS, pxeboot_img_LDFLAGS) (diskboot_img_LDFLAGS, lnxboot_img_LDFLAGS) (cdboot_img_LDFLAGS): Prepend `0x' qualifier to hexadecimal link addresses. * aclocal.m4: Likewise. 2009-11-04 Felix Zielcke * configure.ac (AC_PREREQ): Bump to 2.59d. * INSTALL: Make it more clear when Autoconf and Ruby are needed and when to run `./autogen.sh'. 2009-11-03 Samuel Thibault * util/grub.d/30_os-prober.in: Restore default behavior for unsupported OSes. 2009-11-02 Samuel Thibault * util/grub.d/30_os-prober.in: Add GNU/Hurd support 2009-11-02 Samuel Thibault * util/grub.d/10_hurd.in: Drop /dev/ prefix from root device path before giving it to GNU Mach. 2009-11-02 Samuel Thibault * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): Subtract 1 from GNU partition number to get internal GRUB partition number. 2009-11-02 Samuel Thibault * util/grub.d/10_hurd.in: Call prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} before loading /boot kernel. 2009-11-01 Robert Millan Based on patch from BVK Chaitanya * kern/misc.c (grub_strchr, grub_strrchr): Fix to handle c == '\0' case. 2009-11-01 Felix Zielcke * Makefile.in (TARGET_CPPFLAGS): Add `-I$(srcdir)/include'. 2009-10-30 Robert Millan Fix build problem. * Makefile.in (TARGET_CPPFLAGS): Replace `-nostdinc' with `-isystem=$(srcdir)/include'. 2009-10-30 Robert Millan * util/i386/pc/grub-install.in: Remove hint that device.map should be checked (grub-install doesn't currently rely on it). 2009-10-29 Robert Millan Revert SVN r2660. * conf/common.rmk (script/sh/lexer.c_DEPENDENCIES): Moved from here ... * conf/i386-coreboot.rmk (script/sh/lexer.c_DEPENDENCIES): ... to here. * conf/i386-efi.rmk (script/sh/lexer.c_DEPENDENCIES): ... and here. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. 2009-10-28 Robert Millan * Makefile.in (TARGET_CPPFLAGS): Add `-nostdinc'. 2009-10-28 Robert Millan * include/grub/misc.h: Stop checking for APPLE_CC. 2009-10-28 Robert Millan * kern/i386/coreboot/init.c (grub_exit): Reimplement in a way that doesn't cause an infinite call loop. 2009-10-28 Felix Zielcke * commands/acpi.c (grub_cmd_acpi): Fix the out of memory error strings. 2009-10-26 Robert Millan * autogen.sh: Support addition of external modules via `GRUB_CONTRIB' variable. * Makefile.in: Likewise. 2009-10-26 Robert Millan * gendistlist.sh: Simplify .svn check. Skip .bzr as well. 2009-10-26 Robert Millan * Makefile.in (RMKFILES): Rewrite using $(wildcard). 2009-10-26 Robert Millan * disk/scsi.c: Remove `' (not needed). 2009-10-26 Robert Millan * gensymlist.sh.in (COMPILE_TIME_ASSERT): Copy macro declaration from here ... * include/grub/misc.h (COMPILE_TIME_ASSERT): ... to here. 2009-10-26 Robert Millan * Makefile.in (docs/grub.info): Use make syntax to ignore errors in $(MAKEINFO) invocation. This makes it clear in output that errors are being ignored. 2009-10-26 Robert Millan * conf/i386-coreboot.rmk (script/sh/lexer.c_DEPENDENCIES): Moved from here ... * conf/common.rmk (script/sh/lexer.c_DEPENDENCIES): ... to here. * conf/i386-efi.rmk (script/sh/lexer.c_DEPENDENCIES): Remove. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. 2009-10-26 Colin Watson * 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. 2009-10-26 Colin Watson 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. 2009-10-26 Robert Millan * 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. 2009-10-26 Robert Millan * docs/grub.cfg: Fix example usage of *BSD loaders. 2009-10-25 Robert Millan * util/i386/pc/grub-setup.c (setup): Add missing parameter to grub_util_error() call. 2009-10-25 Robert Millan * include/grub/fs.h [GRUB_UTIL] (struct grub_fs): Add `reserved_first_sector' member. * fs/ext2.c [GRUB_UTIL] (grub_ext2_fs): Initialize `reserved_first_sector' to 1. * fs/fat.c [GRUB_UTIL] (grub_fat_fs): Likewise. * fs/ntfs.c [GRUB_UTIL] (grub_ntfs_fs): Likewise. * fs/hfsplus.c [GRUB_UTIL] (grub_hfsplus_fs): Likewise. * util/i386/pc/grub-setup.c (setup): Add safety check that probes for filesystems which begin at first sector. (options): New option --skip-fs-probe. (main): Handle --skip-fs-probe and pass it to setup(). 2009-10-25 Robert Millan * include/grub/misc.h: Fix wrong evaluation of APPLE_CC. (memset): Fix function prototype. 2009-10-25 Robert Millan 2009-10-25 Vasily Averin * fs/ext2.c (grub_ext2_iterate_dir): Avoid infinite loop when `dirent.direntlen == 0'. 2009-10-25 Robert Millan * fs/cpio.c [MODE_USTAR]: Initialize `tar' module instead of `cpio'. [! MODE_USTAR]: Initialize `cpio' module instead of `tar'. 2009-10-25 Robert Millan * configure.ac: Check for `__ashldi3', `__ashrdi3', `__lshrdi3', `__trampoline_setup' and `__ucmpdi2'. * include/grub/powerpc/libgcc.h: Only export symbols for functions that libgcc provides. 2009-10-25 Robert Millan * include/grub/powerpc/libgcc.h (memset): Remove function prototype. * include/grub/sparc64/libgcc.h (memset): Likewise. * include/grub/misc.h (memset, memcmp): New function prototypes. 2009-10-25 Robert Millan * fs/cpio.c [MODE_USTAR]: Finish `tar' module instead of `cpio'. [! MODE_USTAR]: Finish `cpio' module instead of `tar'. 2009-10-25 Robert Millan Patch from Samuel Thibault * 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. 2009-10-21 Felix Zielcke * config.guess: Update to latest version from config git repository. * config.sub: Likewise. 2009-10-20 Robert Millan Fix build on sparc64. * configure.ac: Perform checks for libgcc symbols before adding `-nostdlib' to LDFLAGS. 2009-10-16 Vladimir Serbinenko Let user specify OpenBSD root device. * loader/i386/bsd.c (openbsd_root): New variable. (openbsd_opts): New option 'root'. (OPENBSD_ROOT_ARG): New macro. (grub_openbsd_boot): Use 'openbsd_root'. (grub_cmd_openbsd): Fill 'openbsd_root'. 2009-10-16 Robert Millan * NEWS: Misc adjustments. 2009-10-16 Vladimir Serbinenko * NEWS: Mentioned XNU, ACPI, gptsync, password and parttool. 2009-10-16 Robert Millan * configure.ac: Bump version to 1.97. 2009-10-16 Colin Watson * configure.ac (TARGET_CFLAGS): Add -mno-mmx -mno-sse -mno-sse2 -mno-3dnow on x86 architectures. Some toolchains enable these features by default, but they rely on registers that aren't enabled in GRUB. Thanks to Vladimir Serbinenko for the suggestion. 2009-10-15 Robert Millan Make entry text a bit more readable. * util/grub.d/10_linux.in: Add `with' before `Linux'. 2009-10-15 Vladimir Serbinenko * loader/i386/pc/xnu.c (grub_xnu_set_video): Fix loading splash image. 2009-10-15 Vladimir Serbinenko * commands/xnu_uuid.c (grub_cmd_xnu_uuid): Remove duplicated bitwise operations. 2009-10-15 Vladimir Serbinenko * configure.ac: Add missing dollar. 2009-10-15 Vladimir Serbinenko Revert 2009-06-10 Pavel Roskin * configure.ac: Put checks for __bswapsi2 and __bswapdi2. * include/grub/powerpc/libgcc.h: Don't use weak attribute for all exports. * include/grub/sparc64/libgcc.h: Likewise. Use preprocessor conditionals. 2009-10-14 Robert Millan * conf/common.rmk (grub-dumpbios): Remove rule. (sbin_SCRIPTS, CLEANFILES): Remove `grub-dumpbios'. * util/grub-dumpbios.in: Remove file. 2009-10-14 Robert Millan 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. 2009-10-12 Robert Millan * term/tparm.c: Switch to GPLv3. 2009-10-09 Robert Millan * include/grub/i386/cpuid.h: Add header protection. 2009-10-09 Robert Millan Fail gracefuly when attempting to load 64-bit kFreeBSD on IA32 CPU. * include/grub/i386/cpuid.h: New file. * commands/i386/cpuid.c: Include `'. (has_longmode): Rename to ... (grub_cpuid_has_longmode): ... this. Update all users. Remove `static' attribute. * loader/i386/bsd.c: Include `'. (grub_bsd_load_elf): Fail if load of 64-bit kernel was requested on a CPU that doesn't implement AMD64 instruction set. 2009-10-06 Colin Watson * Makefile.in (docs/stamp-vti): Depend on configure.ac as well, so that version.texi is rebuilt on version number changes. 2009-10-06 Colin Watson * Makefile.in: Don't set info_INFOS unless makeinfo was found. Fixes bug #27602. 2009-10-06 Colin Watson * 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. 2009-10-05 Robert Millan * configure.ac: Bump version to 1.97~beta4. 2009-10-03 Robert Millan Resync grub-mkdevicemap in x86_64-efi. * conf/x86_64-efi.rmk (sbin_UTILITIES): Enable `grub-mkdevicemap'. (grub_mkdevicemap_SOURCES): Add missing `util/deviceiter.c' and `util/devicemap.c'. 2009-10-01 Colin Watson * util/grub-editenv.c (create_envblk_file): Write new block with a .new suffix and then rename it into place, to ensure atomic creation. 2009-09-28 Robert Millan Do not automatically install headers. * Makefile.in (include_DATA): Remove. Update all users. 2009-09-26 Robert Millan * conf/common.rmk (pkglib_MODULES): Remove `lua.mod'. (lua_mod_SOURCES, lua_mod_CFLAGS, lua_mod_LDFLAGS): Remove. * util/osdetect.lua: Remove. * script/lua/lauxlib.c: Likewise. * script/lua/ldebug.c: Likewise. * script/lua/grub_main.c: Likewise. * script/lua/lauxlib.h: Likewise. * script/lua/ldebug.h: Likewise. * script/lua/ltablib.c: Likewise. * script/lua/liolib.c: Likewise. * script/lua/lstrlib.c: Likewise. * script/lua/lualib.h: Likewise. * script/lua/ldo.c: Likewise. * script/lua/ldump.c: Likewise. * script/lua/ldo.h: Likewise. * script/lua/loslib.c: Likewise. * script/lua/lundump.c: Likewise. * script/lua/grub_lib.c: Likewise. * script/lua/ldblib.c: Likewise. * script/lua/lundump.h: Likewise. * script/lua/lmem.c: Likewise. * script/lua/grub_lib.h: Likewise. * script/lua/lmathlib.c: Likewise. * script/lua/lstate.c: Likewise. * script/lua/ltm.c: Likewise. * script/lua/lvm.c: Likewise. * script/lua/lmem.h: Likewise. * script/lua/lstate.h: Likewise. * script/lua/ltm.h: Likewise. * script/lua/ltable.c: Likewise. * script/lua/lvm.h: Likewise. * script/lua/llex.c: Likewise. * script/lua/lgc.c: Likewise. * script/lua/grub_lua.h: Likewise. * script/lua/loadlib.c: Likewise. * script/lua/lfunc.c: Likewise. * script/lua/lopcodes.c: Likewise. * script/lua/lparser.c: Likewise. * script/lua/ltable.h: Likewise. * script/lua/llex.h: Likewise. * script/lua/lgc.h: Likewise. * script/lua/lfunc.h: Likewise. * script/lua/lbaselib.c: Likewise. * script/lua/lopcodes.h: Likewise. * script/lua/lparser.h: Likewise. * script/lua/lzio.c: Likewise. * script/lua/linit.c: Likewise. * script/lua/lobject.c: Likewise. * script/lua/llimits.h: Likewise. * script/lua/lstring.c: Likewise. * script/lua/lzio.h: Likewise. * script/lua/lapi.c: Likewise. * script/lua/lcode.c: Likewise. * script/lua/lua.h: Likewise. * script/lua/lobject.h: Likewise. * script/lua/lstring.h: Likewise. * script/lua/lapi.h: Likewise. * script/lua/lcode.h: Likewise. * script/lua/luaconf.h: Likewise. 2009-09-26 Colin Watson * docs/grub.texi (Command-line and menu entry commands): Document date and echo commands. 2009-09-24 Pavel Roskin * 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. 2009-09-24 Robert Millan Fix "lost keypress" bug in at_keyboard. * term/i386/pc/at_keyboard.c (grub_at_keyboard_checkkey): New function. Checks for readyness of input buffer (without flushing it). (grub_at_keyboard_term): Use grub_at_keyboard_checkkey() rather than grub_at_keyboard_getkey_noblock() for `checkkey' struct member. 2009-09-24 Robert Millan * util/i386/pc/grub-mkimage.c (generate_image): Enclose BIOS-specific size check within GRUB_MACHINE_PCBIOS section. 2009-09-24 Robert Millan * include/grub/i386/at_keyboard.h (KEYBOARD_ISREADY): Negate return value. * term/i386/pc/at_keyboard.c (grub_keyboard_getkey): Negate KEYBOARD_ISREADY check. (grub_at_keyboard_checkkey): Rename to ... (grub_at_keyboard_getkey_noblock): ... this. Update all users. Remove gratuitous cast. 2009-09-23 Colin Watson * configure.ac: Call AC_PROG_MKDIR_P. * Makefile.in (docs/stamp-vti): Create docs directory. Create version.texi in $(builddir) rather than $(srcdir). (docs/grub.info): Create docs directory. Prepend $(builddir)/docs to makeinfo's @include search path. 2009-09-23 Felix Zielcke * util/grub-mkconfig_lib.in (grub_file_is_not_garbage): Cope with `*.dpkg-*' 2009-09-23 Felix Zielcke * util/grub-mkconfig_lib.in (grub_file_is_not_garbage): Add support for `*.dpkg-new'. 2009-09-21 Colin Watson Build info documentation. Some code borrowed from Automake. * configure.ac: Check for makeinfo. * Makefile.in (MAKEINFO, INFOS, info_INFOS): New variables. (MAINTAINER_CLEANFILES): Add $(INFOS), docs/stamp-vti, and docs/version.texi. (MOSTLYCLEANFILES): Add vti.tmp. (docs/version.texi, docs/stamp-vti): Update automatically. (docs/grub.info): Build info documentation. Use --force and ignore errors for now. (all-local): Add $(INFOS). (install-local): Install info files. (uninstall): Uninstall info files. * docs/version.texi: Remove from revision control. This file is automatically generated on build now. * gendistlist.sh: Add `*.info'. 2009-09-21 Felix Zielcke * kern/term.c: Fix indentation. 2009-09-21 Felix Zielcke * util/hostdisk.c: Fix a comment. 2009-09-20 Robert Millan Fix regression introduced in r2539. * term/usb_keyboard.c (USB_HID_DEVICE_TO_HOST): Change from 0x61 to 0xA1. 2009-09-19 Colin Watson * 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. 2009-09-16 Vladimir Serbinenko * mmap/mmap.c (grub_cmd_badram): Fix off-by-one error. 2009-09-16 Robert Millan * aclocal.m4 (AC_LANG_PROGRAM): New macro. Overrides stock AC_LANG_PROGRAM from autoconf. (grub_ASM_USCORE, grub_PROG_OBJCOPY_ABSOLUTE): Add missing prototypes (fixes warning). * configure.ac: Add `-Werror' to TARGET_CFLAGS unless `--disable-werror' was used. 2009-09-16 Robert Millan * partmap/msdos.c (pc_partition_map_iterate): Fix possible use of uninitialized `lastaddr'. 2009-09-15 Vladimir Serbinenko * partmap/msdos.c (pc_partition_map_iterate): Detect and break loops. 2009-09-14 Colin Watson * commands/test.c (get_fileinfo): Return immediately if grub_fs_probe fails. 2009-09-14 José Martínez * commands/acpi.c (grub_cmd_acpi): Fix loading ACPI tables from file. 2009-09-14 Colin Watson * util/grub.d/30_os-prober.in: Cope with Windows 7 in os-prober output. 2009-09-13 Robert Millan * configure.ac: Remove --enable-grub-pe2elf. Only build grub-pe2elf when needed by the build system itself. * conf/common.rmk: Remove $(enable_grub_pe2elf) check. 2009-09-12 Robert Millan * configure.ac: Bump version to 1.97~beta3. * docs/version.texi: Likewise. 2009-09-12 Robert Millan * video/i386/pc/vbe.c (grub_vbe_get_video_mode_info): Move packed mode special handling (grub_vbe_bios_set_dac_palette_width() call) from here ... * loader/i386/linux.c [GRUB_MACHINE_PCBIOS] (grub_linux_setup_video): ... to here (with some adjustments). 2009-09-12 Robert Millan Fix memory corruption issue (spotted by Colin Watson). * kern/i386/pc/startup.S (grub_vbe_bios_getset_dac_palette): Fix bug causing returned size to be stored in an incorrect memory location. Fix use of uninitialized value when storing the returned size. 2009-09-12 Yves Blusseau Change clean rules to properly remove files * genmk.rb: add new clean rules * Makefile.in (clean): add the new targets (mostlyclean): likewise 2009-09-11 Colin Watson * include/grub/ntfs.h (struct grub_fshelp_node): Change `size' to grub_uint64_t. * fs/ntfs.c (init_file): Understand 64-bit sizes for non-resident files. 2009-09-11 Colin Watson * configure.ac: Don't look for help2man when cross-compiling. Fixes part of bug #27349. 2009-09-10 Felix Zielcke * util/grub-mkconfig.in: Make the created config mode 400 and print a warning if it fails. 2009-09-10 Robert Millan * util/grub.d/40_custom.in: Ask user to type custom entries below comment, rather than below 'exec tail' line. 2009-09-10 Colin Watson * util/grub.d/40_custom.in: Make sure that the explanatory text is visible in grub.cfg. 2009-09-10 Colin Watson * util/grub.d/40_custom.in: Make it a little clearer how to use this file. 2009-09-10 Felix Zielcke * docs/grub.cfg: Add an example menu entry for memtest86+. 2009-09-09 Felix Zielcke * config.guess: Update to latest version from config git. * config.sub: Likewise. 2009-09-08 Colin Watson * script/sh/execute.c (grub_script_execute_cmdline): Set "?" in unknown-command case. Fixes bug #27320. 2009-09-08 Felix Zielcke * kern/rescue_parser.c (grub_rescue_parse_line): Only suggest to try `help' if the command exists. 2009-09-06 Robert Millan * INSTALL: Require GCC 4.1.3 or later. 2009-09-06 Yves Blusseau * Makefile.in (RMKFILES): add i386-qemu.rmk (MAINTAINER_CLEANFILES): add $(srcdir)/DISTLIST $(srcdir)/config.h.in $(srcdir)/stamp-h.in 2009-09-05 Robert Millan * 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. 2009-09-05 Felix Zielcke * gendistlist.sh: Add `grub-dumpdevtree' and `*.lua' to the list find searches for. 2009-09-04 Vladimir Serbinenko * loader/i386/xnu.c (grub_cpu_xnu_fill_devicetree): Remove unnecessary calls to grub_error. 2009-09-04 Colin Watson * NEWS: Mention `keystatus' and Unicode fonts. 2009-09-04 Robert Millan * configure.ac: Bump version to 1.97~beta2. * docs/version.texi: Likewise. 2009-09-03 Colin Watson * configure.ac: By default, GCC 4.4 generates .eh_frame sections containing unwind information in some cases where it previously did not. Use -fno-dwarf2-cfi-asm if available to restore the old behaviour. See http://patchwork.kernel.org/patch/8555/ for related discussion. 2009-09-02 Yves BLUSSEAU Embedding loadenv module into grub-emu * conf/i386-pc.rmk (grub_emu_SOURCES): add lib/envblk.c and commands/loadenv.c * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise 2009-09-03 Magnus Granberg * aclocal.m4: Add grub_CHECK_PIE. It check if the compiler include -fPIE in the default specs. * configure.ac: Check if pie_possible is yes and add -fno-PIE to TARGET_CFLAGS. 2009-09-03 Felix Zielcke * INSTALL: Note that GNU Bison 2.3 or later is required. 2009-09-03 Colin Watson * kern/i386/pc/startup.S: Fix typo. 2009-09-02 Vladimir Serbinenko * efiemu/loadcore.c (SUFFIX (grub_efiemu_loadcore_load)): Fix style according to GCS. 2009-09-02 Colin Watson * docs/grub.texi (Naming convention): Describe one-based partition numbering. (Device syntax): Likewise. (File name syntax): Likewise. (Block list syntax): Likewise. (Making a GRUB bootable CD-ROM): Talk about grub.cfg rather than menu.lst. (File name syntax): Likewise. (Command-line and menu entry commands): Document acpi, blocklist, crc, export, insmod, keystatus, ls, set, and unset commands. 2009-09-02 Colin Watson * commands/keystatus.c (GRUB_MOD_INIT (keystatus)): Adjust summary to avoid implying that only one of --shift, --ctrl, or --alt may be used. 2009-09-02 Colin Watson * util/grub-probe.c (probe): Test st.st_mode using S_ISREG macro rather than comparing against S_IFREG, which will almost never work. 2009-09-01 Vladimir Serbinenko * commands/loadenv.c (check_blocklists): Fix off-by-one error. (write_blocklists): Likewise. 2009-09-01 Colin Watson * script/lua/grub_lua.h (fputs): Supply a format string as the first argument to grub_printf. 2009-09-01 Felix Zielcke * genmk.rb: Add quotes around $(TARGET_OBJ2ELF) to cope with non GNU test. 2009-08-30 Vladimir Serbinenko * kern/file.c (grub_file_read): Spelling fix 2009-08-30 Vladimir Serbinenko * loader/i386/bsdXX.c (SUFFIX (grub_freebsd_load_elfmodule)): Fix loading of headers in some cases. 2009-08-30 Robert Millan * configure.ac: Bump version to 1.97~beta1. * docs/version.texi: Likewise. 2009-08-29 Vladimir Serbinenko * include/grub/i386/xnu.h: Add license header. include grub/err.h explicitly. 2009-08-29 Robert Millan * util/grub.d/10_freebsd.in: Detect `ufs1' and `ufs2' and map them to `ufs' in the vfs.root.mountfrom kernel parameter. 2009-08-29 Robert Millan * term/i386/pc/serial.c: Include `'. [GRUB_MACHINE_PCBIOS] (serial_hw_io_addr): Macroify initialization value (0x0400 -> GRUB_MEMORY_MACHINE_BIOS_DATA_AREA_ADDR). [! GRUB_MACHINE_PCBIOS] (GRUB_SERIAL_PORT_NUM): Calculate using `ARRAY_SIZE' macro. 2009-08-28 Vladimir Serbinenko * kern/file.c (grub_file_read): Check offset. * fs/hfs.c (grub_hfs_read_file): Remove unnecessary offset check. * fs/jfs.c (grub_jfs_read_file): Likewise. * fs/ntfs.c (grub_ntfs_read): Likewise. * fs/reiserfs.c (grub_reiserfs_read): Likewise. * fs/minix.c (grub_minix_read_file): Correct offset check. * fs/ufs.c (grub_ufs_read_file): Likewise. 2009-08-28 Colin Watson * term/i386/pc/console.c (bios_data_area): Cast GRUB_MEMORY_MACHINE_BIOS_DATA_AREA_ADDR explicitly. 2009-08-28 Vladimir Serbinenko 1-bit optimised blitters. * include/grub/fbblit.h (grub_video_fbblit_replace_32bit_1bit): New prototype. (grub_video_fbblit_replace_24bit_1bit): Likewise. (grub_video_fbblit_replace_16bit_1bit): Likewise. (grub_video_fbblit_replace_8bit_1bit): Likewise. (grub_video_fbblit_blend_XXXA8888_1bit): Likewise. (grub_video_fbblit_blend_XXX888_1bit): Likewise. (grub_video_fbblit_blend_XXX565_1bit): Likewise. * video/fb/fbblit.c (grub_video_fbblit_replace_32bit_1bit): New function. (grub_video_fbblit_replace_24bit_1bit): Likewise. (grub_video_fbblit_replace_16bit_1bit): Likewise. (grub_video_fbblit_replace_8bit_1bit): Likewise. (grub_video_fbblit_blend_XXXA8888_1bit): Likewise. (grub_video_fbblit_blend_XXX888_1bit): Likewise. (grub_video_fbblit_blend_XXX565_1bit): Likewise. * video/fb/video_fb.c (common_blitter): Use 1-bit optimised blitters when possible. * video/video.c (grub_video_get_blit_format): Return GRUB_VIDEO_BLIT_FORMAT_1BIT_PACKED if bpp = 1. 2009-08-28 Colin Watson * normal/cmdline.c (grub_cmdline_get): Supply a format string as the first argument to grub_printf. 2009-08-28 Colin Watson 2009-08-28 Robert Millan Add `getkeystatus' terminal method. Add a new `keystatus' command to query it. * include/grub/term.h (GRUB_TERM_STATUS_SHIFT, GRUB_TERM_STATUS_CTRL, GRUB_TERM_STATUS_ALT): Definitions for modifier key bitmasks. (struct grub_term_input): Add `getkeystatus' member. (grub_getkeystatus): Add prototype. * kern/term.c (grub_getkeystatus): New function. * include/grub/i386/pc/memory.h (GRUB_MEMORY_MACHINE_BIOS_DATA_AREA_ADDR): New macro. (struct grub_machine_bios_data_area): Define necessary parts of BIOS Data Area layout. * term/i386/pc/console.c (grub_console_getkeystatus): New function. (grub_console_term_input): Set `getkeystatus' member. * term/usb_keyboard.c (grub_usb_hid): Macroify HID protocol constants. (grub_usb_keyboard_getreport): Likewise. (grub_usb_keyboard_checkkey): Likewise. (grub_usb_keyboard_getkeystatus): New function. (grub_usb_keyboard_term): Set `getkeystatus' member. * commands/keystatus.c: New file. * conf/common.rmk (pkglib_MODULES): Add keystatus.mod. (keystatus_mod_SOURCES): New variable. (keystatus_mod_CFLAGS): Likewise. (keystatus_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add commands/keystatus.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. 2009-08-28 Vladimir Serbinenko Split befs.mod and afs.mod into *_be.mod and *.mod * conf/common.rmk (grub_probe_SOURCES): Add afs_be.c and befs_be.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Add afs_be.mod and befs_be.mod. (afs_be_mod_SOURCES): New variable. (afs_be_mod_CFLAGS): Likewise. (afs_be_mod_LDFLAGS): Likewise. (befs_be_mod_SOURCES): Likewise. (befs_be_mod_CFLAGS): Likewise. (befs_be_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add afs_be.c and befs_be.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * fs/afs_be.c: New file. * fs/befs_be.c: New file. * fs/afs.c (GRUB_AFS_FSNAME_SUFFIX): New definition. (GRUB_AFS_FSNAME): Use GRUB_AFS_FSNAME_SUFFIX. (U16): Replaced with ... (grub_afs_to_cpu16): ...this. All users updated. (U32): Replaced with ... (grub_afs_to_cpu32): ...this. All users updated. (U64): Replaced with ... (grub_afs_to_cpu64): ...this. All users updated. (GRUB_AFS_BO_LITTLE_ENDIAN): Remove. (GRUB_AFS_BO_BIG_ENDIAN): Likewise. (grub_afs_validate_sblock): Check only one endianness. (GRUB_MOD_INIT (befs)) [MODE_BIGENDIAN && MODE_BFS]: Rename to .. (GRUB_MOD_INIT (befs_be)) [MODE_BIGENDIAN && MODE_BFS]: ... this. (GRUB_MOD_INIT (afs)) [MODE_BIGENDIAN && !MODE_BFS]: Rename to .. (GRUB_MOD_INIT (afs_be)) [MODE_BIGENDIAN && !MODE_BFS]: ... this. (GRUB_MOD_FINI (befs)) [MODE_BIGENDIAN && MODE_BFS]: Rename to .. (GRUB_MOD_FINI (befs_be)) [MODE_BIGENDIAN && MODE_BFS]: ... this. (GRUB_MOD_FINI (afs)) [MODE_BIGENDIAN && !MODE_BFS]: Rename to .. (GRUB_MOD_FINI (afs_be)) [MODE_BIGENDIAN && !MODE_BFS]: ... this. 2009-08-26 Bean * fs/xfs.c (GRUB_XFS_INO_INOINAG): Replace 1L with 1LL to support 64-bit number. (GRUB_XFS_FSB_TO_BLOCK): Likewise. (grub_xfs_inode_block): Change return type to grub_uint64_t. (grub_xfs_read_inode): Change type of block to grub_uint64_t. 2009-08-25 Vladimir Serbinenko NetBSD memory map support. * include/grub/i386/bsd.h (NETBSD_BTINFO_MEMMAP): New definition. (grub_netbsd_btinfo_mmap_header): New structure. (grub_netbsd_btinfo_mmap_entry): Likewise. * loader/i386/bsd.c (grub_netbsd_boot): Pass memory map. 2009-08-25 Vladimir Serbinenko Enable bsd.mod on coreboot. * conf/i386-coreboot.rmk (pkglib_MODULES): Add bsd.mod. (bsd_mod_SOURCES): New variable. (bsd_mod_CFLAGS): Likewise. (bsd_mod_LDFLAGS): Likewise. (bsd_mod_ASFLAGS): Likewise. * loader/i386/bsd.c [!GRUB_MACHINE_PCBIOS]: Fix includes. (grub_bsd_get_device) [!GRUB_MACHINE_PCBIOS]: Set *biosdev to 0xff. 2009-08-25 Vladimir Serbinenko Cleanup NetBSD root support. * loader/i386/bsd.c (grub_netbsd_boot): Remove call to grub_bsd_get_device. Fix typo. 2009-08-25 Felix Zielcke * 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. 2009-08-25 Vladimir Serbinenko Fix breakage in grub-setup. * util/i386/pc/grub-setup.c (setup): Use "part_msdos" instead of "msdos_partition_map". 2009-08-25 Vladimir Serbinenko Fix breakage in normal/auth.c. * normal/auth.c (grub_iswordseparator): New function. 2009-08-25 Vladimir Serbinenko Authentication support. * commands/password.c: New file. * conf/common.rmk (pkglib_MODULES): Add password.mod. (password_mod_SOURCES): New variable. (password_mod_CFLAGS): Likewise. (password_mod_LDFLAGS): Likewise. (normal_mod_SOURCES): Add normal/auth.c. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add commands/password.c and normal/auth.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * include/grub/auth.h: New file. * include/grub/err.h (grub_err_t): New enum value GRUB_ERR_ACCESS_DENIED. * include/grub/menu.h (grub_menu_entry): New fields 'restricted' and 'users'. * include/grub/normal.h (grub_cmdline_get): New argument 'history'. * normal/cmdline.c (grub_cmdline_get): New argument 'history'. All users updated. * normal/auth.c: New file. * normal/main.c (grub_normal_add_menu_entry): Handle --users option. (grub_cmdline_run): Don't allow to go to command line without authentication. * normal/menu.c (grub_menu_execute_entry): Handle restricted entries. * normal/menu_entry.c (grub_menu_entry_run): Don't allow editing menuentry without superuser rights. * normal/menu_viewer.c (grub_menu_viewer_show_menu): Don't exit if user isn't a superuser. 2009-08-24 Vladimir Serbinenko Save space by inlining misc.c functions. * kern/misc.c (grub_iswordseparator): Made static. * kern/misc.c (grub_strcat): Moved from here ... * include/grub/misc.h (grub_strcat): ... here. Inlined. * kern/misc.c (grub_strncat): Moved from here ... * include/grub/misc.h (grub_strncat): ... here. Inlined. * kern/misc.c (grub_strcasecmp): Moved from here ... * include/grub/misc.h (grub_strcasecmp): ... here. Inlined. * kern/misc.c (grub_strncasecmp): Moved from here ... * include/grub/misc.h (grub_strncasecmp): ... here. Inlined. * kern/misc.c (grub_isalpha): Moved from here ... * include/grub/misc.h (grub_isalpha): ... here. Inlined. * kern/misc.c (grub_isdigit): Moved from here ... * include/grub/misc.h (grub_isdigit): ... here. Inlined. * kern/misc.c (grub_isgraph): Moved from here ... * include/grub/misc.h (grub_isgraph): ... here. Inlined. * kern/misc.c (grub_tolower): Moved from here ... * include/grub/misc.h (grub_tolower): ... here. Inlined. 2009-08-24 Vladimir Serbinenko * script/sh/function.c (grub_script_function_find): Cut error message not to flood terminal. * script/sh/lexer.c (grub_script_yylex): Remove command line length limit. * script/sh/script.c (grub_script_arg_add): Duplicate string. 2009-08-24 Colin Watson * term/usb_keyboard.c (grub_usb_keyboard_getreport): Make `report' grub_uint8_t *. (grub_usb_keyboard_checkkey): Make `data' elements grub_uint8_t. Use a 50-millisecond timeout rather than just repeating grub_usb_keyboard_getreport 50 times. (grub_usb_keyboard_getkey): Make `data' elements grub_uint8_t. 2009-08-24 Vladimir Serbinenko 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. 2009-08-24 Vladimir Serbinenko Fix OpenBSD and NetBSD support. * include/grub/i386/bsd.h (GRUB_BSD_TEMP_BUFFER): Change to resolve memory address conflict. (OPENBSD_MMAP_ACPI): New definition. (OPENBSD_MMAP_NVS): Likewise. * loader/i386/bsd.c (grub_openbsd_boot): Support OPENBSD_MMAP_ACPI and OPENBSD_MMAP_NVS. Add memory map terminator Explicit cast when calling grub_unix_real_boot. (grub_netbsd_boot): Explicit cast when calling grub_unix_real_boot. 2009-08-24 Vladimir Serbinenko Let user specify NetBSD root device. * loader/i386/bsd.c (netbsd_root): New variable. (netbsd_opts): New option 'root'. (NETBSD_ROOT_ARG): New macro. (grub_netbsd_boot): Use 'netbsd_root'. (grub_bsd_unload): Free 'netbsd_root'. (grub_cmd_netbsd): Fill 'netbsd_root'. 2009-08-24 Vladimir Serbinenko Support for 64-bit NetBSD. * loader/i386/bsd.c (grub_bsd_load_elf): Apply correct mask to entry point when booting non-FreeBSD. 2009-08-24 Vladimir Serbinenko Support --no-smp and --no-acpi for NetBSD. * include/grub/i386/bsd.h (NETBSD_AB_NOSMP): New definition. (NETBSD_AB_NOACPI): Likewise. * loader/i386/bsd.c (netbsd_opts): New entries no-smp and no-acpi. (netbsd_flags): Add NETBSD_AB_NOSMP, NETBSD_AB_NOACPI. 2009-08-23 Vladimir Serbinenko * fs/hfsplus.c (grub_hfsplus_mount): Don't ignore grub_hfsplus_read_file errors. (grub_hfsplus_btree_iterate_node): Don't ignore grub_hfsplus_read_file errors. Call grub_error when needed. 2009-08-23 Vladimir Serbinenko * commands/search.c (search_fs): Try searching without autoload first. * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Load filesystem module explicitly for faster booting. 2009-08-23 Colin Watson * util/grub-mkconfig.in: Export GRUB_DISABLE_OS_PROBER. 2009-08-23 Colin Watson * util/grub.d/30_os-prober.in: Disable os-prober if `GRUB_DISABLE_OS_PROBER' was set to true. 2009-08-23 Robert Millan * partmap/pc.c: Rename to ... * partmap/msdos.c: ... this. Update all users. (grub_pc_partition_map): Rename to ... (grub_msdos_partition_map): ... this. Update all users. * parttool/pcpart.c: Rename to ... * parttool/msdospart.c: ... this. Update all users. * include/grub/pc_partition.h: Rename to ... * include/grub/msdos_partition.h: ... this. Update all users. (grub_pc_partition_bsd_entry): Rename to ... (grub_msdos_partition_bsd_entry): ... this. Update all users. (grub_pc_partition_disk_label): Rename to ... (grub_msdos_partition_disk_label): ... this. Update all users. (grub_pc_partition_entry): Rename to ... (grub_msdos_partition_entry): ... this. Update all users. (grub_pc_partition_mbr): Rename to ... (grub_msdos_partition_mbr): ... this. Update all users. (grub_pc_partition): Rename to ... (grub_msdos_partition): ... this. Update all users. (grub_pc_partition_is_empty): Rename to ... (grub_msdos_partition_is_empty): ... this. Update all users. (grub_pc_partition_is_extended): Rename to ... (grub_msdos_partition_is_extended): ... this. Update all users. (grub_pc_partition_is_bsd): Rename to ... (grub_msdos_partition_is_bsd): ... this. Update all users. * conf/common.rmk (amiga_mod_SOURCES, amiga_mod_CFLAGS) (amiga_mod_LDFLAGS, apple_mod_SOURCES, apple_mod_CFLAGS) (apple_mod_LDFLAGS, msdos_mod_SOURCES, msdos_mod_CFLAGS) (msdos_mod_LDFLAGS, sun_mod_SOURCES, sun_mod_CFLAGS) (sun_mod_LDFLAGS, acorn_mod_SOURCES, acorn_mod_CFLAGS) (acorn_mod_LDFLAGS, gpt_mod_SOURCES, gpt_mod_CFLAGS) (gpt_mod_LDFLAGS): Rename to ... (part_amiga_mod_SOURCES, part_amiga_mod_CFLAGS, part_amiga_mod_LDFLAGS) (part_apple_mod_SOURCES, part_apple_mod_CFLAGS, part_apple_mod_LDFLAGS) (part_msdos_mod_SOURCES, part_msdos_mod_CFLAGS, part_msdos_mod_LDFLAGS) (part_sun_mod_SOURCES, part_sun_mod_CFLAGS, part_sun_mod_LDFLAGS) (part_acorn_mod_SOURCES, part_acorn_mod_CFLAGS, part_acorn_mod_LDFLAGS) (part_gpt_mod_SOURCES, part_gpt_mod_CFLAGS) (part_gpt_mod_LDFLAGS): ... this. (pkglib_MODULES): Prefix partition modules with `part_'. Rename `pcpart.mod' to `msdospart.mod'. (pcpart_mod_SOURCES, pcpart_mod_CFLAGS, pcpart_mod_LDFLAGS): Rename to ... (msdospart_mod_SOURCES, msdospart_mod_CFLAGS) (msdospart_mod_LDFLAGS): ... this. 2009-08-23 Vladimir Serbinenko * loader/i386/bsd.c (freebsd_opts): Rewritten to use extcmd. (openbsd_opts): Likewise. (netbsd_opts): Likewise. (freebsd_flags): Added 0 terminator. (openbsd_flags): Likewise. (netbsd_flags): Likewise. (grub_bsd_parse_flags): Rewritten to use extcmd. All users updated. (grub_cmd_freebsd): Transformed into extended command. (grub_cmd_openbsd): Likewise. (grub_cmd_netbsd): Likewise. (cmd_freebsd): Changed type to grub_extcmd_t. (cmd_openbsd): Likewise. (cmd_netbsd): Likewise. (GRUB_MOD_INIT (bsd)): Register grub_cmd_freebsd, grub_cmd_netbsd and grub_cmd_openbsd as extended commands. (GRUB_MOD_FINI (bsd)): Use grub_unregister_extcmd for cmd_freebsd, cmd_netbsd and cmd_openbsd 2009-08-22 Vladimir Serbinenko * commands/xnu_uuid.c (transform): Use grub_memcpy instead of memcpy. 2009-08-21 Pavel Roskin * Makefile.in (install-local): When checking if a file is in the build directory, use "test -e" to detect symlinks. * Makefile.in (install-local): Remove all files in $(DESTDIR)$(pkglibdir) before installing new files there. 2009-08-18 Felix Zielcke * util/powerpc/ieee1275/grub-mkrescue.in (grub_mkimage): Use grub-mkelfimage. 2009-08-18 Felix Zielcke * util/grub-mkconfig.in: Don't use gfxterm by default if not explicitly specified by the user. 2009-08-18 Pavel Roskin * include/grub/fbfill.h (struct grub_video_fbrender_target): Use grub_uint8_t pointer for data. * include/grub/fbutil.h (struct grub_video_fbblit_info): Likewise. * video/fb/fbutil.c: Remove unnecessary casts. 2009-08-17 Michal Suchanek VBE cleanup. * video/i386/pc/vbe.c (vbe_mode_in_use): Removed (duplicate). (grub_vbe_set_video_mode): Save active mode info only after setting the mode. (grub_video_vbe_setup): Call 'grub_vbe_set_video_mode' with NULL as second argument. 2009-08-17 Michal Suchanek Rename variables for clarity. * video/i386/pc/vbe.c (active_mode_info): Renamed to ... (active_vbe_mode_info): ... this. All users updated. (framebuffer): Rename 'active_mode' to 'active_vbe_mode'. All users updated. (initial_mode): Rename to ... (initial_vbe_mode): ... this. All users updated. (mode_in_use): Rename to .. (vbe_mode_in_use): ... this. All users updated. (mode_list): Rename to .. (vbe_mode_list): ... this. All users updated. (grub_vbe_set_video_mode): Rename 'mode' to 'vbe_mode', 'mode_info' to 'vbe_mode_info' and 'old_mode' to 'old_vbe_mode'. (grub_video_vbe_init): Rename 'rm_mode_list' to 'rm_vbe_mode_list' and 'mode_list_size' to 'vbe_mode_list_size'. (grub_video_vbe_setup): Rename 'mode_info' to 'vbe_mode_info', 'best_mode_info' to 'best_vbe_mode_info' and 'best_mode' to 'best_vbe_mode' 2009-08-17 Michal Suchanek Remove duplicate grub_video_fb_get_video_ptr. * include/grub/fbutil.h (get_data_ptr): Rename to ... (grub_video_fb_get_video_ptr): ... this. * include/grub/video_fb.h (grub_video_fb_get_video_ptr): Removed. * video/fb/fbutil.c: Add comment about addressing. (get_data_ptr): Rename to ... (grub_video_fb_get_video_ptr): ... this. All users updated. * video/fb/video_fb.c (grub_video_fb_get_video_ptr): Remove. 2009-08-17 Robert Millan * fs/fat.c (grub_fat_read_data): Remove `#if 0' braces around the grub_dprintf() that was just added. 2009-08-17 Robert Millan * loader/i386/linux.c (GRUB_ASSUME_LINUX_HAS_FB_SUPPORT) (DEFAULT_VIDEO_MODE): Remove macros. (grub_linux_boot): Remove assumption that Linux has FB support, and use "text" as default video mode. 2009-08-15 Vladimir Serbinenko * fs/affs.c (grub_affs_read_symlink): Change leftover grub_printf into grub_dprintf. * fs/fat.c (grub_fat_read_data): Likewise. 2009-08-14 Vladimir Serbinenko * loader/i386/multiboot.c (grub_multiboot): Don't pass filename to payload. (grub_module): Likewise. 2009-08-14 Vladimir Serbinenko * loader/i386/multiboot.c (grub_multiboot_unload): Don't free mbi and mbi->cmdline but free playground. 2009-08-14 Vladimir Serbinenko Handle group offset on UFS1. * fs/ufs.c (grub_ufs_sblock): New field 'cylg_mask'. (grub_ufs_read_inode) [!MODE_UFS2]: handle cylg_offset and cylg_mask. 2009-08-14 Vladimir Serbinenko Split ufs.mod into ufs1.mod and ufs2.mod. * conf/common.rmk (grub_probe_SOURCES): Add fs/ufs2.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Remove ufs.mod. Add ufs1.mod and ufs2.mod. (ufs_mod_SOURCES): Remove. (ufs_mod_CFLAGS): Likewise. (ufs_mod_LDFLAGS): Likewise. (ufs1_mod_SOURCES): New variable. (ufs1_mod_CFLAGS): Likewise. (ufs1_mod_LDFLAGS): Likewise. (ufs2_mod_SOURCES): New variable. (ufs2_mod_CFLAGS): Likewise. (ufs2_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add fs/ufs2.c. * conf/i386-efi.rmk (util/i386/efi/grub-mkimage.c_DEPENDENCIES): Likewise. (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. (grub_setup_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64.rmk (grub_emu_SOURCES): Likewise. (grub_setup_SOURCES): Likewise. * conf/x86_64-efi.rmk (util/i386/efi/grub-mkimage.c_DEPENDENCIES): Likewise. * fs/ufs2.c: New file. * fs/ufs.c: Separate UFS1 from UFS2 by using preprocessor. 2009-08-14 Vladimir Serbinenko Framebuffer split. * commands/i386/pc/vbetest.c (grub_cmd_vbetest): Restore video subsystem at the end. * conf/common.rmk (pkglib_MODULES): Add video_fb.mod. (video_fb_mod_SOURCES): New variable. (video_fb_mod_CFLAGS): Likewise. (video_fb_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (vbe_mod_SOURCES): Remove video/i386/pc/vbeblit.c, video/i386/pc/vbefill.c and video/i386/pc/vbeutil.c. * video/i386/pc/vbeblit.c: Moved from here ... * video/fb/fbblit.c: ..here. Replaced 'vbe' with 'fb'. * video/i386/pc/vbefill.c: Moved from here ... * video/fb/fbfill.c: ..here. Replaced 'vbe' with 'fb'. * video/i386/pc/vbeutil.c: Moved from here ... * video/fb/fbutil.c: ..here. Replaced 'vbe' with 'fb'. * include/grub/i386/pc/vbeblit.h: Moved from here ... * include/grub/fbblit.h: ... here. Replaced 'vbe' with 'fb'. * include/grub/i386/pc/vbefill.h: Moved from here ... * include/grub/fbfill.h: ... here. Replaced 'vbe' with 'fb'. * include/grub/i386/pc/vbeutil.h: Moved from here ... * include/grub/fbutil.h: ... here. Replaced 'vbe' with 'fb'. * include/grub/i386/pc/vbe.h: Moved framebuffer part ... * include/grub/video_fb.h: ... here. Replaced 'vbe' with 'fb'. * include/grub/video.h (GRUB_VIDEO_RENDER_TARGET_FRONT_BUFFER): Removed. (GRUB_VIDEO_RENDER_TARGET_BACK_BUFFER): Likewise. (grub_video_adapter): Added 'get_info_and_fini'. (grub_video_get_info_and_fini): New prototype. (grub_video_set_mode): make modestring const char *. * loader/i386/linux.c (grub_linux_setup_video): Use grub_video_get_info_and_fini. (grub_linux_boot): Move modesetting just before booting. * loader/i386/pc/xnu.c (grub_xnu_set_video): Use grub_video_get_info_and_fini. * video/i386/pc/vbe.c: Moved framebuffer part ... * video/fb/video_fb.c: ... here. Replaced 'vbe' with 'fb'. * video/i386/pc/vbe.c (grub_vbe_set_video_mode): Use grub_video_fbstd_colors and grub_video_fb_set_palette. (grub_video_vbe_init): Clear 'framebuffer' variable and use grub_video_fb_init. (grub_video_vbe_fini): Use grub_video_fb_fini. (grub_video_vbe_setup): Use framebuffer.render_target instead of render_target and use grub_video_fb_set_active_render_target and grub_video_fb_set_palette. (grub_video_vbe_set_palette): Use grub_video_fb_set_palette. (grub_video_vbe_set_viewport): Use grub_video_fb_set_viewport. (grub_video_vbe_adapter): Use framebuffer. * video/video.c (grub_video_get_info_and_fini): New function. (grub_video_set_mode): Make modestring const char *. (GRUB_MOD_INIT(video_video)): Don't set variables to 0 since these values are already initialised. 2009-08-14 Pavel Roskin * boot/i386/pc/cdboot.S: Use LOCAL for local labels. Eliminate ABS and APPLE_CC. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/lnxboot.S: Likewise. Hardcode the number of code sectors allow compilation on MacOSX. * conf/i386-pc.rmk: Enable unconditional compilation of lnxboot.img. 2009-08-13 Colin Watson * util/grub-mkconfig.in: Export GRUB_HIDDEN_TIMEOUT. * util/grub.d/00_header.in: Enter interruptible sleep if GRUB_HIDDEN_TIMEOUT is set. 2009-08-13 Yves Blusseau * include/grub/symbol.h: Add the LOCAL macro. * boot/i386/pc/boot.S: Use the LOCAL macro for all labels starting with "L_". 2009-08-13 Pavel Roskin * boot/i386/pc/boot.S: Remove ABS macro, it's not required by any modern compilers we support. * boot/i386/pc/boot.S: Remove all code dependent on APPLE_CC. Use local labels starting with "L_" so that Apple assembler knows they are local. 2009-08-10 Robert Millan * include/grub/i386/bsd.h (KERNEL_TYPE_NONE, KERNEL_TYPE_FREEBSD) (KERNEL_TYPE_OPENBSD, KERNEL_TYPE_NETBSD): Convert to ... (bsd_kernel_types): ... this enum. * loader/i386/bsd.c (grub_cmd_freebsd_loadenv, grub_cmd_freebsd_module) (grub_cmd_freebsd_module_elf): Abort with "You need to load the kernel first." when `kernel_type' is set to KERNEL_TYPE_NONE. (grub_bsd_load_aout, grub_bsd_load, grub_cmd_freebsd_loadenv) (grub_cmd_freebsd_module, grub_cmd_freebsd_module_elf) (GRUB_MOD_INIT (bsd)): Fix capitalization in a few error messages. 2009-08-08 Robert Millan * 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. 2009-08-08 Robert Millan * fs/jfs.c: Update copyright year. 2009-08-08 Felix Zielcke * util/grub.d/00_header.in: Fix a comment. * util/grub.d/10_linux.in: Likewise. * util/grub.d/10_windows.in: Likewise. * util/grub.d/10_hurd.in: Likewise. 2009-08-08 Felix Zielcke * util/grub-mkconfig.in: Allow the user to specify the used font with GRUB_FONT. 2009-08-08 Pavel Roskin * include/grub/powerpc/libgcc.h: Export __ashrdi3() if available, xfs.mod needs it now. * 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.in: Define datarootdir, datadir may depend on it. Add missing space before closing bracket. Fix misleading formatting. 2009-08-07 Robert Millan * docs/grub.texi: Major overhaul. Remove all sections that are specific to GRUB Legacy, or mostly composed of Legacy-specific information. 2009-08-07 Robert Millan * docs/version.texi: New file. Provides version information for grub.texi. 2009-08-07 Robert Millan * docs/grub.texi: Update CVS information to SVN. Replace outdated "GRUB 2 will include" phrase with "GRUB 2 includes". 2009-08-07 Felix Zielcke * util/grub-mkconfig.in: Remove a wrong `fi'. 2009-08-07 Felix Zielcke * fs/uuid.c (grub_jfs_superblock): New fields unused2 and uuid. (grub_jfs_uuid): New function. (grub_jfs_fs): Set uuid field to grub_jfs_uuid. 2009-08-07 Felix Zielcke * 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 * 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 * util/grub.d/10_freebsd.in: Use an absolute device path for `vfs.root.mountfrom'. Set `vfs.root.mountfrom.options=rw'. 2009-08-06 Felix Zielcke * util/grub-mkconfig_lib.in (prepare_grub_to_access_device): Fix handling of multiple abstraction modules. 2009-08-04 Robert Millan Fix a bug resulting in black screen when loading Linux using a packed video mode. * kern/i386/pc/startup.S (grub_vbe_bios_getset_dac_palette_width): New function. * include/grub/i386/pc/vbe.h (GRUB_VBE_CAPABILITY_DACWIDTH): New macro. (grub_vbe_bios_getset_dac_palette_width): New function. (grub_vbe_bios_get_dac_palette_width) (grub_vbe_bios_set_dac_palette_width): New macros (act as wrappers for grub_vbe_bios_getset_dac_palette_width()). * video/i386/pc/vbe.c (grub_vbe_probe): Use `GRUB_VBE_STATUS_OK' to check for return status. (grub_vbe_get_video_mode_info): When getting information for a packed mode (<= 8 bpp), obtain DAC palette width using grub_vbe_bios_getset_dac_palette_width(), and use that for initializing {red,green,blue}_mark_size. 2009-08-04 Felix Zielcke * commands/search.c (options): Fix help output to match actual code. 2009-08-02 Vladimir Serbinenko * commands/hexdump.c (grub_cmd_hexdump): Use grub_disk_read instead of homegrown code. 2009-08-01 Vladimir Serbinenko * util/hostfs.c (grub_hostfs_dir): Don't use DT_DIR: It doesn't work on XFS or ReiserFS. 2009-08-01 Vladimir Serbinenko Support Apple partition map with sector size different from 512 bytes. * partmap/apple.c (grub_apple_header): New field 'blocksize'. (apple_partition_map_iterate): Respect 'aheader.blocksize' and 'apart.partmap_size'. 2009-08-01 Vladimir Serbinenko 2009-08-01 Robert Millan Fix cpuid command. * commands/i386/cpuid.c (options): New variable. (grub_cmd_cpuid): Return real error. (GRUB_MOD_INIT(cpuid)): Declare options. 2009-07-31 Vladimir Serbinenko * partmap/pc.c (pc_partition_map_iterate): Check that boot flags are valid. 2009-07-31 Bean * fs/xfs.c (grub_xfs_sblock): Change unused5 field to log2_sect and log2_inode. (grub_fshelp_node): Move inode field to the end. (grub_xfs_data): Remove inode field. (grub_xfs_inode_block): Calculate inode size using sblock. (grub_xfs_inode_offset): Likewise. (grub_xfs_read_inode): Calculate inode size using sblock. (grub_xfs_read_block): Replace XFS_INODE_EXTENTS with nrec. (grub_xfs_iterate_dir): Calculate inode size using sblock. (grub_xfs_mount): Use grub_zalloc instead of grub_malloc. Realloc data to match inode size. (grub_xfs_dir): goto mount_fail when mount fails, as data->diropen is not accessible when data is null. (grub_xfs_open): Likewise. 2009-07-31 Bean * 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 . (fstest): Replace grub_raid_rescan with module fini function followed by init function. * util/grub-probe.c: Add include file . (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. 2009-07-31 Pavel Roskin * disk/raid5_recover.c (grub_raid5_recover): Revert conversion to grub_zalloc(), it was erroneous. Reported by Bean 2009-07-30 Vladimir Serbinenko * util/i386/pc/grub-setup.c (setup): Check that no partition is in embedding zone, not only the first one. 2009-07-29 Joe Auricchio * term/gfxterm.c (clear_char): New function. (grub_virtual_screen_setup): Use clear_char. (scroll_up): Likewise. (grub_virtual_screen_cls): Likewise. 2009-07-29 Felix Zielcke * util/deviceiter.c (get_acceleraid_disk_name): New static function. (grub_util_iterate_devices): Handle Accelraid devices. * util/hostdisk.c (convert_system_partition_to_system_disk): Likewise. 2009-07-28 Robert Millan * loader/i386/linux.c (grub_cmd_linux): Use ',' rather than ';' as separator for the suggested gfxpayload string (';' collides with the parser and needs escaping). 2009-07-28 Vladimir Serbinenko * loader/i386/multiboot_helper.S (grub_multiboot_backward_relocator): Clear direction flag before jumping to OS. (grub_multiboot2_real_boot): Likewise. 2009-07-28 Felix Zielcke * util/i386/pc/grub-install: Fix parsing of --disk-module option. 2009-07-28 Felix Zielcke * util/i386/pc/grub-setup.c (setup): Fix 2 incorrect checks when embedding. 2009-07-26 Felix Zielcke * util/grub-mkconfig.in (package_version): New variable. Use it do display the version. 2009-07-25 Felix Zielcke * kern/file.c (grub_file_open): Revert to previous check with grub_errno. 2009-07-25 Vladimir Serbinenko * commands/probe.c (GRUB_MOD_INIT (probe)): Remove "[--target=target]" from help line. It's out of sync with code. 2009-07-25 Vladimir Serbinenko * kern/parser.c (grub_parser_execute): Fix a bug causing truncated entries on failed boot. 2009-07-25 Felix Zielcke * kern/file.c (grub_file_open): Fix an error check. 2009-07-24 Vladimir Serbinenko * util/i386/pc/grub-setup.c (setup): Fix segmentation fault when partition map couldn't be identified. 2009-07-23 Pavel Roskin * commands/xnu_uuid.c (transform): Use GRUB_CPU_WORDS_BIGENDIAN instead of WORDS_BIGENDIAN. Use grub_le_to_cpu32(), so that the case of little endian words becomes just an optimization. Respect const modifier. (md5_final): Use code that doesn't depend on endianness. * include/grub/misc.h (ALIGN_UP): Cast align to the type of addr to avoid loss of upper bits if align is unsigned and shorter than addr. 2009-07-21 Vladimir Serbinenko UUID support for UFS * fs/ufs.c (grub_ufs_sblock): Add uuidhi and uuidlow. (grub_ufs_uuid): New function. (grub_ufs_fs): add .uuid 2009-07-21 Pavel Roskin * kern/dl.c (grub_dl_check_header): Make static. 2009-07-21 Felix Zielcke * util/grub.d/30_os-prober.in: Remove unused CHAINROOT. Don't add drivemap for Vista. It breaks Windows 7. 2009-07-21 Vladimir Serbinenko * fs/ufs.c (grub_ufs_sblock): Fix offset of mtime2 which was off by 128 bytes 2009-07-20 Vladimir Serbinenko Add BFS support * conf/common.rmk (grub_probe_SOURCES): Add fs/befs.c. (grub_fstest_SOURCES): Likewise. (pkglib_MODULES): Add befs.mod. (befs_mod_SOURCES): New variable. (befs_mod_CFLAGS): Likewise. (befs_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. (grub_setup_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. (grub_setup_SOURCES): Likewise. * fs/befs.c: New file. * fs/afs.c (GRUB_AFS_FSNAME): New declaration. (GRUB_AFS_SBLOCK_SECTOR): Likewise. (GRUB_AFS_SBLOCK_MAGIC1) [MODE_BFS]: New conditional declaration. (GRUB_AFS_BTREE_MAGIC) [MODE_BFS]: Likewise (B_KEY_INDEX_ALIGN): New declaration. (B_KEY_INDEX_OFFSET): Use B_KEY_INDEX_ALIGN. (grub_afs_bnode) [MODE_BFS]: Make key_count and key_size 16-bit (grub_afs_btree) [MODE_BFS]: New conditional declaration. (grub_afs_sblock) [MODE_BFS]: Remove link_count. (grub_afs_validate_sblock) [MODE_BFS]: Support BFS (grub_afs_mount) [MODE_BFS]: Likewise. (grub_afs_dir) [MODE_BFS]: Divide mtime by 65536 and not 1000000. (grub_afs_fs): Use GRUB_AFS_FSNAME (GRUB_MOD_INIT (afs)) [MODE_BFS]: Rename to ... (GRUB_MOD_INIT (befs)) [MODE_BFS]: ... this (GRUB_MOD_FINI (afs)) [MODE_BFS]: Rename to ... (GRUB_MOD_FINI (befs)) [MODE_BFS]: ... this 2009-07-19 Yves BLUSSEAU * util/getroot.c (find_root_device): Add support for MacOSX. * util/hostdisk.c: Likewise. 2009-07-20 Vladimir Serbinenko * font/font.c (find_glyph): Check whether a font is present to avoid segmentation fault. 2009-07-20 Joe Auricchio * term/gfxterm.c (grub_virtual_screen_setup): Clear virtual_screen. 2009-07-20 Pavel Roskin * configure.ac: Trim excessively wordy excuses. 2009-07-20 Vladimir Serbinenko Add symlink, mtime and label support to AtheFS. * fs/afs.c (grub_afs_sblock): Declare `name' as char. (grub_afs_iterate_dir): Handle symlinks. (grub_afs_open): Use grub_afs_read_symlink. (grub_afs_dir): Likewise. Pass mtime. (grub_afs_label): New function. (grub_afs_fs): Add grub_afs_label. (grub_afs_read_symlink): New function. 2009-07-20 Vladimir Serbinenko Fix AtheFS support. * fs/afs.c: Fix comments style. (grub_afs_blockrun): Declare as packed. (grub_afs_datastream): Likewise. (grub_afs_bnode): Likewise. (grub_afs_btree): Likewise. (grub_afs_sblock): Likewise. Declare `name' as char. (grub_afs_inode): Declare as packed. Change void *vnode to grub_uint32_t unused. (grub_afs_iterate_dir): Check that key_size is positive. (grub_afs_mount): Don't read superblock twice. (grub_afs_dir): Don't free node in case of error, grub_fshelp_find_file already handles this. (grub_afs_open): Likewise. 2009-07-19 Pavel Roskin * Makefile.in: Remove LIBLZO and enable_lzo. * conf/i386-pc.rmk: Remove lzo support. * configure.ac: Remove checks for lzo, don't define ENABLE_LZMA. * include/grub/i386/pc/kernel.h: Define ENABLE_LZMA. Remove lzo support. * kern/i386/pc/lzo1x.S: Remove. * kern/i386/pc/startup.S: Remove lzo support. * util/i386/pc/grub-mkimage.c: Likewise. 2009-07-19 Vladimir Serbinenko * disk/usbms.c (grub_usbms_transfer): Fix double semicolon. * fs/xfs.c (grub_xfs_dir): Likewise. * fs/afs.c (grub_afs_dir): Likewise. * fs/iso9660.c (grub_iso9660_iterate_dir): Likewise. (grub_iso9660_open): Likewise. * fs/jfs.c (grub_jfs_open): Likewise. * fs/ext2.c (grub_ext2_dir): Likewise. * include/grub/macho.h (grub_macho_fat_arch): Likewise. * script/sh/lexer.c (grub_script_yylex): Likewise. 2009-07-16 Pavel Roskin * configure.ac: Never add "-c" to CFLAGS. * configure.ac: Fix incorrect comparison for grub_cv_cc_efiemu. * configure.ac: Fix wrong use of grub_cv_cc_no_red_zone where grub_cv_cc_efiemu should be used. * configure.ac: Typo fixes. * kern/mm.c (grub_zalloc): New function. (grub_debug_zalloc): Likewise. * include/grub/mm.h: Declare grub_zalloc() and grub_debug_zalloc(). * util/misc.c (grub_zalloc): New function. * bus/usb/uhci.c (grub_uhci_pci_iter): Use grub_zalloc() instead of grub_malloc(), remove unneeded initializations. * bus/usb/usbhub.c (grub_usb_hub_add_dev): Likewise. * commands/extcmd.c (grub_extcmd_dispatcher): Likewise. * commands/parttool.c (grub_cmd_parttool): Likewise. * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Likewise. * disk/raid5_recover.c (grub_raid5_recover): Likewise. * disk/raid6_recover.c (grub_raid6_recover): Likewise. * disk/usbms.c (grub_usbms_finddevs): Likewise. * efiemu/mm.c (grub_efiemu_request_memalign): Likewise. * efiemu/pnvram.c (grub_efiemu_pnvram): Likewise. (grub_cmd_efiemu_pnvram): Likewise. * fs/i386/pc/pxe.c (grub_pxefs_open): Likewise. * fs/iso9660.c (grub_iso9660_mount): Likewise. (grub_iso9660_iterate_dir): Likewise. * fs/jfs.c (grub_jfs_opendir): Likewise. * fs/ntfs.c (list_file): Likewise. (grub_ntfs_mount): Likewise. * kern/disk.c (grub_disk_open): Likewise. * kern/dl.c (grub_dl_load_core): Likewise. * kern/elf.c (grub_elf_file): Likewise. * kern/env.c (grub_env_context_open): Likewise. (grub_env_set): Likewise. (grub_env_set_data_slot): Likewise. * kern/file.c (grub_file_open): Likewise. * kern/fs.c (grub_fs_blocklist_open): Likewise. * loader/i386/multiboot.c (grub_module): Likewise. * loader/xnu.c (grub_xnu_create_key): Likewise. (grub_xnu_create_value): Likewise. * normal/main.c (grub_normal_add_menu_entry): Likewise. (read_config_file): Likewise. * normal/menu_entry.c (make_screen): Likewise. * partmap/sun.c (sun_partition_map_iterate): Likewise. * script/sh/lexer.c (grub_script_lexer_init): Likewise. * script/sh/script.c (grub_script_parse): Likewise. * video/bitmap.c (grub_video_bitmap_create): Likewise. * video/readers/jpeg.c (grub_video_reader_jpeg): Likewise. * video/readers/png.c (grub_png_output_byte): Likewise. (grub_video_reader_png): Likewise. 2009-07-16 Vladimir Serbinenko Enable all targets that can be built by default * configure.ac: enable efiemu runtime, grub-emu, grub-emu-usb, grub-mkfont and grub-fstest if they can be built 2009-07-16 Vladimir Serbinenko Fix hang and segmentation fault in grub-emu-usb * disk/scsi.c (grub_scsi_open): return err and not grub_errno * util/usb.c (grub_libusb_devices): likewise (grub_libusb_init): rename to ... (GRUB_MOD_INIT (libusb)):...this (grub_libusb_fini): rename to .. (GRUB_MOD_FINI (libusb)):...this * disk/usbms.c (grub_usbms_transfer): fix retry logic * include/grub/disk.h (grub_raid_init): removed, it's useless (grub_raid_fini): likewise (grub_lvm_init): likewise (grub_lvm_fini): likewise * util/grub-emu.c (main): don't call grub_libusb_init, it's done by grub_init_all 2009-07-16 Vladimir Serbinenko Fix libusb * Makefile.in (LIBUSB): new macro * genmk.rb (Utility/print_tail): new method (Utility/rule): use intermediary variable #{prefix}_OBJECTS (top level): call util.print_tail at the end. 2009-07-16 Vladimir Serbinenko Make FreeBSD accept zpool.cache * loader/i386/bsd.c (grub_freebsd_add_meta_module): spoof filename if type is /boot/zfs/zpool.cache 2009-07-16 Vladimir Serbinenko Fix 64-bit efiemu * include/grub/efiemu/efiemu.h (grub_efiemu_configuration_table64_t): correct wrong typedef * efiemu/prepare.c (SUFFIX (grub_efiemu_prepare)): minor style fixes 2009-07-15 Pavel Roskin * include/grub/disk.h (struct grub_disk_dev): Use enum for id. * kern/disk.c (struct grub_disk_cache): Likewise. * commands/probe.c (options): Typo fix. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_BPB_END): Increase to 0x5a to accommodate FAT32. Adjust other offsets accordingly. Original patch by Yves Blusseau * boot/i386/pc/boot.S (general_error_string): Add DOS newline at the end of "Error" to make the message more readable. * boot/i386/pc/boot.S (kernel_segment): Remove. (copy_buffer): Use GRUB_BOOT_MACHINE_KERNEL_ADDR in segment 0 for destination. * boot/i386/pc/boot.S (boot_version): Remove. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_VER_MAJ): Remove. * include/grub/i386/pc/boot.h: Sort all offsets. (GRUB_BOOT_MACHINE_KERNEL_ADDRESS): Remove, it's unused. (GRUB_BOOT_MACHINE_KERNEL_SEGMENT): Likewise. * boot/i386/pc/boot.S: Assert location of every offset listed in include/grub/i386/pc/boot.h. 2009-07-13 Pavel Roskin * include/grub/i386/coreboot/machine.h: Rename GRUB_MACHINE_LINUXBIOS to GRUB_MACHINE_COREBOOT. * loader/multiboot_loader.c (grub_cmd_multiboot_loader): Allow multiboot 1 for GRUB_MACHINE_COREBOOT and GRUB_MACHINE_QEMU. * kern/dl.c: Force native word size to suppress warnings when compiling grub-emu. * kern/device.c (grub_device_iterate): Change struct part_ent to hold the name, not a pointer to it. Use one grub_malloc() per partition, not two. Free partition_name if grub_malloc() fails. Set ents to NULL only before grub_partition_iterate() is called. 2009-07-11 Bean * kern/ieee1275/openfw.c (grub_children_iterate): Fix size of childname. 2009-07-10 Bean 2009-07-10 Robert Millan * kern/ieee1275/openfw.c (grub_children_iterate) (grub_devalias_iterate): Fix size evaluation for property or path strings, which was broken since r2132. 2009-07-07 Pavel Roskin * commands/search.c (search_file): Merge into ... (search_fs): ... this. Accept search type as argument. (grub_cmd_search): Pass search type to search_fs(). * include/grub/util/console.h: New file. * util/console.c: Use it instead of grub/machine/console.h. * util/grub-emu.c: Likewise. * lib/arg.c (find_long_option): Remove. (find_long): Add `len' argument, make `s' const char *. (grub_arg_parse): Parse long options in place, not in a temporary buffer. 2009-07-06 Pavel Roskin * commands/search.c (search_fs): Fix potential NULL pointer dereference. * commands/search.c (search_fs): Replace QUID macro with quid_fn function pointer. 2009-07-06 Daniel Mierswa * commands/search.c (search_fs): Use grub_strcasecmp() for UUID comparison. 2009-07-05 Pavel Roskin * include/grub/i386/linux.h (struct linux_kernel_params): Restore padding3, it's still needed. * util/grub.d/10_freebsd.in: Fix spelling of `device.hints' on FreeBSD. * util/osdetect.lua: Likewise. 2009-07-05 Bean * conf/common.rmk (lua_mode_SOURCES): Add script/lua/lstrlib.c. * script/lua/grub_lib.c (grub_lua_run): Check input parameter. (grub_lua_getenv): Likewise. (grub_lua_setenv): Likewise. (save_errno): New function. (push_result): Likewise. (grub_lua_enum_device): Likewise. (grub_lua_enum_file): Likewise. (grub_lua_file_open): Likewise. (grub_lua_file_close): Likewise. (grub_lua_file_seek): Likewise. (grub_lua_file_read): Likewise. (grub_lua_file_getline): Likewise. (grub_lua_file_getsize): Likewise. (grub_lua_file_getpos): Likewise. (grub_lua_file_eof): Likewise. (grub_lua_file_exist): Likewise. (grub_lua_add_menu): Likewise. * script/lua/grub_lua.h (isupper): New inline function. (islower): Likewise. (ispunct): Likewise. (isxdigit): Likewise. (strcspn): Change to normal function. (strpbkr): New function declaration. (memchr): Likewise. * script/lua/grub_main.c (scan_str): New function. (strcspn): Likewise. (strpbrk): Likewise. (memchr): Likewise. * script/lua/linit.c (lualibs): Enable the string library. * util/osdetect.lua: New file. 2009-07-04 Robert Millan * include/grub/i386/linux.h (struct linux_kernel_params): Add `capabilities' member. 2009-07-02 Pavel Roskin * genparttoollist.sh: Add missing newline at the end. 2009-07-01 Pavel Roskin * kern/x86_64/efi/callwrap.S: Add missing newline at the end. * util/hostdisk.c (open_device): Remove `const' from `sysctl_size', as sysctlbyname() can change it (in this case it doesn't actually happen). * include/grub/types.h: Define GRUB_LONG_MAX and GRUB_LONG_MIN using signed long int constants. * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): Make `p' constant to avoid a warning on FreeBSD. * util/hostdisk.c (device_is_wholedisk): Compile only on systems where it's needed. * Makefile.in: Install include/grub/machine symlink. * Makefile.in: When installing symlinks, use "cp -fR", which works on FreeBSD and MacOSX. From Yves Blusseau * kern/dl.c (grub_dl_resolve_symbol): Make static. * include/grub/dl.h: Remove grub_dl_resolve_symbol(). * util/misc.c: Move grub_reboot() and grub_halt() ... * util/grub-emu.c: ... here. Make main_env static. * include/grub/util/misc.h: Remove main_env. * kern/mm.c: Use correct format to print size_t. * include/grub/elf.h: Define Elf_Sword and Elf_Xword. * kern/i386/dl.c: Use ELF symbols without "32" or "64". * kern/powerpc/dl.c: Likewise. * kern/sparc64/dl.c: Likewise. * kern/x86_64/dl.c: Likewise. 2009-07-01 Robert Millan Fix grub-emu build on sparc64-ieee1275. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Synchronize with ... * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): ... this. 2009-07-01 Robert Millan * util/misc.c: Include `' and `'. (grub_reboot, grub_halt): New functions. * util/i386/pc/misc.c: Delete. Update all users. * util/sparc64/ieee1275/misc.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. 2009-07-01 Robert Millan * conf/i386.rmk (setjmp_mod_SOURCES) (setjmp_mod_ASFLAGS, setjmp_mod_LDFLAGS): Move to ... * conf/common.rmk (setjmp_mod_SOURCES) (setjmp_mod_ASFLAGS, setjmp_mod_LDFLAGS): ... here, and modify to use $(target_cpu). * conf/x86_64-efi.rmk (setjmp_mod_SOURCES) (setjmp_mod_ASFLAGS, setjmp_mod_LDFLAGS): Remove. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/i386-pc.rmk (kernel_img_SOURCES): Use $(target_cpu) for kern/$(target_cpu)/dl.c. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/powerpc-ieee1275.rmk (kernel_img_SOURCES): Use $(target_cpu) for kern/$(target_cpu)/dl.c and for kern/$(target_cpu)/cache.S. * conf/sparc64-ieee1275.rmk: Likewise. 2009-07-01 Robert Millan * include/grub/i386/linux.h (linux_kernel_params): Change `mmap_size' type to `grub_uint8_t', and adjust `padding9' accordingly. 2009-06-29 Robert Millan * include/grub/i386/linux.h (GRUB_VIDEO_TYPE_TEXT): New macro. * loader/i386/linux.c [__i386__] (grub_linux_boot): Simplify inline assembly in final jump, using register constraints. (grub_linux_boot): For text mode, initialize `have_vga' using GRUB_VIDEO_TYPE_TEXT rather than 0 (this changes its value to 1). Initialize `video_cursor_x' and `video_cursor_y' as late as possible, right before the final jump. Set `video_mode' to 0x3. Document initialization of `video_page', `video_mode' and `video_ega_bx'. 2009-06-29 Robert Millan * include/grub/i386/linux.h (GRUB_LINUX_FLAG_QUIET): New macro. * loader/i386/linux.c (grub_cmd_linux): Recognize "quiet" option, and set GRUB_LINUX_FLAG_QUIET appropriately. 2009-06-29 Robert Millan Fix build on Debian / sparc. * configure.ac: Recognize `sparc' target_cpu (as sparc64). 2009-06-28 Pavel Roskin * kern/i386/qemu/mmap.c (grub_machine_mmap_iterate): Use cast to fix a warning. * util/grub.d/10_linux.in: Match SUSE style initrd names. 2009-06-27 Robert Millan * loader/i386/linux.c (grub_linux_boot): Fix uninitialized use of `err'. 2009-06-27 Robert Millan Revert r2338. * loader/i386/linux.c (grub_cmd_linux): Don't call grub_error when file can't be opened. grub_file_open() is already supposed to set grub_errno / grub_errmsg appropriately. * loader/i386/pc/linux.c (grub_cmd_linux): Likewise. 2009-06-27 Pavel Roskin 2009-06-27 Robert Millan * include/grub/dl.h: Include grub/elf.h. (struct grub_dl): Add symtab field. * kern/dl.c [GRUB_MACHINE_QEMU]: Define GRUB_MODULES_MACHINE_READONLY. (grub_dl_resolve_symbols): Populate mod->symtab, making a copy of the header for read-only modules. (grub_dl_unload): Free mod->symtab for read-only modules. * kern/i386/dl.c: Use mod->symtab. * kern/powerpc/dl.c: Likewise. * kern/sparc64/dl.c: Likewise. * kern/x86_64/dl.c: Likewise. * conf/i386-qemu.rmk: New file. * kern/i386/qemu/startup.S: Likewise. * kern/i386/qemu/mmap.c: Likewise. * boot/i386/qemu/boot.S: Likewise. * include/grub/i386/qemu/time.h: Likewise. * include/grub/i386/qemu/serial.h: Likewise. * include/grub/i386/qemu/kernel.h: Likewise. * include/grub/i386/qemu/console.h: Likewise. * include/grub/i386/qemu/boot.h: Likewise. * include/grub/i386/qemu/init.h: Likewise. * include/grub/i386/qemu/machine.h: Likewise. * include/grub/i386/qemu/loader.h: Likewise. * include/grub/i386/qemu/memory.h: Likewise. * conf/i386-coreboot.rmk (GRUB_BOOT_MACHINE_LINK_ADDR) (GRUB_KERNEL_MACHINE_LINK_ADDR): New variables. [qemu] (pkglib_IMAGES): Add `boot.img'. [qemu] (boot_img_SOURCES, boot_img_ASFLAGS, boot_img_LDFLAGS) [qemu] (boot_img_FORMAT): New variables. [qemu] (bin_UTILITIES): Add `grub-mkimage'. [qemu] (grub_mkimage_SOURCES, grub_mkimage_CFLAGS): New variables. [qemu] (kernel_img_SOURCES, kernel_img_HEADERS, kernel_img_CFLAGS) [qemu] (kernel_img_ASFLAGS, kernel_img_LDFLAGS) [qemu] (kernel_img_FORMAT): New variables. * configure.ac: Recognise `i386-qemu'. * util/i386/pc/grub-mkimage.c (compress_kernel): Add dummy variant (for no compression). [GRUB_MACHINE_QEMU] (generate_image): Misc adjustments to produce a valid i386 ROM image. Make `GRUB_KERNEL_MACHINE_COMPRESSED_SIZE', `GRUB_KERNEL_MACHINE_INSTALL_DOS_PART' and `GRUB_KERNEL_MACHINE_INSTALL_BSD_PART' optional features (with ifdefs). 2009-06-27 Pavel Roskin * efiemu/prepare.c: Eliminate TYPE macro, it makes code hard to read. * efiemu/prepare32.c: Likewise. * efiemu/prepare64.c: Likewise. 2009-06-26 Pavel Roskin * include/grub/types.h: Define GRUB_TARGET_WORDSIZE. * include/grub/elf.h: Define symbols without "32" or "64" based on GRUB_TARGET_WORDSIZE. * include/grub/multiboot2.h: Use GRUB_TARGET_WORDSIZE. * efiemu/loadcore32.c: Redefine GRUB_TARGET_WORDSIZE, remove own ELF definitions. * efiemu/loadcore64.c: Likewise. * loader/i386/bsd32.c: Likewise. * loader/i386/bsd64.c: Likewise. * kern/dl.c: Remove own ELF definitions. * util/i386/efi/grub-mkimage.c: Likewise. 2009-06-23 Robert Millan * kern/i386/pc/startup.S (real_to_prot): Access `gdtdesc' using segment 0x0 unconditionally, because the reference generated by GAS is an absolute address. 2009-06-22 Robert Millan * include/grub/i386/kernel.h: Include `'. [! GRUB_MACHINE_IEEE1275]: Set `GRUB_MOD_ALIGN' to 0x1. 2009-06-22 Robert Millan * commands/search.c (grub_cmd_search): Macroify hardcoded args[] indexes. Check for -f explicitly. (search_file): Improve error message. (GRUB_MOD_INIT(search)): Add missing `-n' to help output. 2009-06-22 Robert Millan * conf/i386-pc.rmk (GRUB_MEMORY_MACHINE_LINK_ADDR): Rename to ... (GRUB_KERNEL_MACHINE_LINK_ADDR): ... this. Update all users. 2009-06-22 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/i386/misc.S'. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * kern/i386/pc/startup.S (grub_stop): Remove function. * kern/i386/ieee1275/startup.S: Likewise. * kern/i386/coreboot/startup.S: Likewise. * kern/i386/misc.S (grub_stop): New function. 2009-06-22 Robert Millan * kern/i386/pc/startup.S (real_to_prot): Move from here ... * kern/i386/realmode.S (real_to_prot): ... to here. 2009-06-22 Robert Millan * conf/i386-ieee1275.rmk (pkglib_PROGRAMS): Replace `kernel.elf' with `kernel.img'. (kernel_elf_SOURCES): Rename to ... (kernel_img_SOURCES): ... this. (kernel_elf_HEADERS): Rename to ... (kernel_img_HEADERS): ... this. Update all users. (kernel_elf_ASFLAGS): Rename to ... (kernel_img_ASFLAGS): ... this. (kernel_elf_CFLAGS): Rename to ... (kernel_img_CFLAGS): ... this. (kernel_elf_LDFLAGS): Rename to ... (kernel_img_LDFLAGS): ... this. * conf/i386-coreboot.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * util/elf/grub-mkimage.c (add_segments): Replace "kernel.elf" with "kernel.img". 2009-06-21 Pavel Roskin * loader/powerpc/ieee1275/linux.c (offset_phdr): Fix prototypes to match nested functions. * loader/sparc64/ieee1275/linux.c: Likewise. * conf/i386-ieee1275.rmk: Define kernel_elf_ASFLAGS. 2009-06-21 Robert Millan * configure.ac: Enable `END_SYMBOL' / `BSS_START_SYMBOL' test on all i386 platforms. 2009-06-21 Robert Millan Fix asm file handling on ELF, and remove workarounds. * genmk.rb (class Programs): Detect assembly files, and set ASFLAGS and -DASM_FILE=1 appropriately (copied from `class Images' stanza). * kern/i386/ieee1275/startup.S (ASM_FILE): Remove macro. * kern/i386/coreboot/startup.S (ASM_FILE): Likewise. 2009-06-21 Vladimir Serbinenko Load BSD ELF modules * conf/i386-pc.rmk (bsd_mod_SOURCES): Add loader/i386/bsd32.c and loader/i386/bsd64.c * include/grub/i386/bsd.h (FREEBSD_MODTYPE_MODULE): Remove (FREEBSD_MODTYPE_ELF_MODULE): New definition (FREEBSD_MODTYPE_ELF_MODULE_OBJ): Likewise (grub_freebsd_load_elfmodule32): New declaration (grub_freebsd_load_elfmoduleobj64): Likewise (grub_freebsd_load_elf_meta32): Likewise (grub_freebsd_load_elf_meta64): Likewise (grub_freebsd_add_meta): Likewise (grub_freebsd_add_meta_module): Likewise * loader/i386/bsd.c (grub_freebsd_add_meta): Make global (grub_freebsd_add_meta_module): Likewise and move module-specific parts to grub_cmd_freebsd and grub_cmd_freebsd_module (grub_cmd_freebsd): Add elf-kernel specific parts based on grub_freebsd_add_meta_module (grub_cmd_freebsd_module): Add type parsing moved from grub_freebsd_add_meta_module (grub_cmd_freebsd_module_elf): New function (cmd_freebsd_module_elf): New variable (GRUB_MOD_INIT): Register freebsd_module_elf * loader/i386/bsd32.c: New file * loader/i386/bsd64.c: Likewise * loader/i386/bsdXX.c: Likewise * kern/elf.c (grub_elf32_load): Let hook decide which pheaders to load (grub_elf64_load): Likewise * include/grub/elfload.h (grub_elf32_load_hook_t): New parameter do_load All users updated (grub_elf64_load_hook_t): Likewise 2009-06-21 Colin Watson * 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. 2009-06-20 Robert Millan * util/i386/pc/grub-mkimage.c (main): Oops, free `output' only after it's no longer needed. 2009-06-20 Robert Millan * 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. 2009-06-20 Vladimir Serbinenko * disk/mdraid_linux.c (GRUB_MOD_FINI): use grub_raid_unregister and not grub_raid_register * disk/dmraid_nvidia.c (GRUB_MOD_FINI): likewise 2009-06-19 Pavel Roskin * configure.ac: Remove stray AC_MSG_CHECKING. 2009-06-19 Vladimir Serbinenko * disk/scsi.c (grub_scsi_open): use continue instead of big if 2009-06-18 Pavel Roskin * conf/common.rmk: Add fs_file.mod. * disk/fs_file.c: New file. * include/grub/disk.h (enum grub_disk_dev_id): Add GRUB_DISK_DEVICE_FILE_ID. 2009-06-18 Vladimir Serbinenko Fix build with Apple's toolchain. Part 2 * aclocal.m4 (grub_PROG_TARGET_CC): add missing prototype for main and a fake start 2009-06-18 Vladimir Serbinenko Fix build with Apple's toolchain. Part 1 * commands/i386/pc/drivemap_int13h.S: use assembly-time constants for long calls * configure.ac: remove a leftover AC_MSG_RESULT (CFLAGS): don't add -Wl,--defsym,___main=0x8100 when building with Apple's toolchain 2009-06-18 Vladimir Serbinenko Fix warnings * fs/ntfscomp.c (decomp_get16): initialize c1 and c2 (decomp_block): initialize ch use grub_memcpy instead of memcpy 2009-06-17 Pavel Roskin * include/grub/i386/coreboot/console.h: Don't use the i386-pc version, use declarations needed to use vga_text as the startup console. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Remove term/i386/pc/at_keyboard.c, it doesn't need to be compiled into the kernel. * kern/i386/coreboot/init.c: Don't call grub_at_keyboard_init() and grub_at_keyboard_fini(), it's done on module load and unload. 2009-06-17 Felix Zielcke * loader/i386/linux.c (grub_cmd_linux): Set grub_error if the file can't be found. * loader/i386/pc/linux.c (grub_cmd_linux): Likewise. 2009-06-17 Vladimir Serbinenko Fix newline handling * include/grub/script_sh.h (grub_lexer_param): new field was_newline * script/sh/lexer.c (grub_script_lexer_init): initialize was_newline (grub_script_yylex): don't segfault on unterminated script newline terminates command and variable 2009-06-17 Vladimir Serbinenko avoid double grub_adjust_range call. Bug reported by David Simner * kern/disk.c (grub_disk_write): change to raw disk access before calling disk_read 2009-06-17 Colin Watson * 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. 2009-06-16 Pavel Roskin * kern/i386/halt.c: Include grub/machine/init.h. * kern/i386/reboot.c: Include grub/cpu/reboot.h. 2009-06-16 Felix Zielcke * util/grub.d/30_os-prober.in: Use ${root} in the generated drivemap menuentry. 2009-06-16 James Jarvis * commands/help.c GRUB_MOD_INIT(echo): Fix the help output of `echo' command. 2009-06-16 Pavel Roskin * 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. 2009-06-16 Vladimir Serbinenko xnu_uuid command * commands/xnu_uuid.c: new file * conf/common.rmk (pkglib_MODULES): add xnu_uuid.mod (xnu_uuid_mod_SOURCES): new variable (xnu_uuid_mod_CFLAGS): likewise (xnu_uuid_mod_LDFLAGS): likewise * conf/i386-coreboot.rmk (grub_emu_SOURCES): add commands/probe.c * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise * util/grub.d/30_os-prober.in: use UUID for Mac OS X/Darwin 2009-06-16 Pavel Roskin * configure.ac: Avoid '==' in test command, it's not portable. 2009-06-16 Vladimir Serbinenko Probe command * commands/probe.c: new file * conf/common.rmk (pkglib_MODULES): add probe.mod (probe_mod_SOURCES): new variable (probe_mod_CFLAGS): likewise (probe_mod_LDFLAGS): likewise * conf/i386-coreboot.rmk (grub_emu_SOURCES): add commands/probe.c * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise 2009-06-15 Vladimir Serbinenko Fix handling of string like \"hello\" and "a b" * script/sh/lexer.c (check_textstate): accept GRUB_PARSER_STATE_ESC (grub_script_yylex): fix parsing of quoting, escaping and newline 2009-06-13 Vladimir Serbinenko * loader/i386/multiboot.c (grub_multiboot_get_bootdev): fix partition handling 2009-06-13 Jun Inoue * util/grub-mkconfig.in: Fix parsing of --output option. 2009-06-12 Pavel Roskin * Makefile.in (pkgdata_SRCDIR): Remove. genmodsrc.sh and genmk.rb don't need to be generated or installed. 2009-06-12 Vladimir Serbinenko * commands/i386/pc/drivemap_int13h.S: add more comments 2009-06-11 Pavel Roskin * Makefile.in (uninstall): Uninstall manuals. * Makefile.in: Rename lib_DATA to lib_SCRIPTS, move it from PKGLIB to SCRIPTS. This fixes installation of grub-mkconfig_lib and update-grub_lib in two places. * conf/common.rmk: Rename lib_DATA to lib_SCRIPTS. * disk/usbms.c (grub_usbms_transfer): Initialize `err' to fix a compiler warning. * loader/i386/bsd.c (grub_freebsd_boot): Rename `entry' to `entry_lo' to fix variable shadowing. 2009-06-11 Christian Franke * kern/misc.c (__enable_execute_stack): Add missing return type to prevent gcc warning. 2009-06-11 Felix Zielcke * conf/i386-ieee1275.rmk (COMMON_LDFLAGS): Remove `-static -lgcc'. 2009-06-11 Pavel Roskin * Makefile.in: Don't rely on any scripts being executable. Always use $(SHELL) to run shell scripts. * configure.ac: Always define ___main if using -nostdlib. This fixes tests on Cygwin. 2009-06-11 Giuseppe Caizzone UDF fix * fs/udf.c (grub_udf_read_block): handle the fact that ad->length is in bytes and not in blocks 2009-06-11 Pavel Roskin * kern/i386/halt.c (grub_halt): Make `i' unsigned to fix a warning. 2009-06-11 Felix Zielcke * 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. 2009-06-11 Pavel Roskin * configure.ac: Remove host_m32. Issues with 64-bit utilities have long been resolved. 2009-06-11 Colin Watson * util/grub.d/10_linux.in: Capitalise "Linux". * util/grub-pe2elf.c (usage): Fix references to grub-editenv. 2009-06-11 Pavel Roskin * kern/efi/efi.c (grub_exit): Add infinite loop at the end to fix a gcc warning and ensure that the function won't ever exit. * kern/i386/ieee1275/init.c: Add missing prototype for grub_stop_floppy(). * loader/ieee1275/multiboot2.c [__i386__]: Include grub/cpu/multiboot.h. * term/i386/pc/serial.c (serial_translate_key_sequence): Avoid casts to short - they are not portable and cause warnings. Fix use of uninitialized values in input_buf. Use ARRAY_SIZE. 2009-06-11 Vladimir Serbinenko Drivemap fixes * commands/i386/pc/drivemap.c (grub_get_root_biosnumber_drivemap): new function (grub_get_root_biosnumber_saved): new variable (GRUB_MOD_INIT): register grub_get_root_biosnumber_drivemap (GRUB_MOD_FINI): unregister grub_get_root_biosnumber_drivemap * commands/i386/pc/drivemap_int13h.S (grub_drivemap_handler): restore %dx after the call if necessary * conf/common.rmk (pkglib_MODULES): remove boot.mod (boot_mod_SOURCES): remove (boot_mod_CFLAGS): remove (boot_mod_LDFLAGS): remove * conf/i386-coreboot.rmk (pkglib_MODULES): add boot.mod (boot_mod_SOURCES): new variable (boot_mod_CFLAGS): likewise (boot_mod_LDFLAGS): likewise * conf/i386-efi.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise * conf/x86_64-efi.rmk: likewise * include/grub/i386/pc/biosnum.h: new file * lib/i386/pc/biosnum.c: likewise * loader/i386/bsd.c (grub_bsd_get_device): use grub_get_root_biosnumber * loader/i386/multiboot.c (grub_multiboot_get_bootdev): likewise * loader/i386/pc/chainloader.c (grub_chainloader_cmd): likewise 2009-06-10 Pavel Roskin * io/gzio.c (test_header): Don't reuse one buffer for all data. Use separate variables. Read only the file size at the end, but not the checksum that we don't use. * kern/file.c (grub_file_read): Use void pointer for the buffer. Adjust all callers. * kern/ieee1275/openfw.c: Remove libc includes. * kern/ieee1275/cmain.c: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * kern/i386/coreboot/init.c: Include grub/cpu/tsc.h to fix compiler warnings. 2009-06-10 Felix Zielcke * Makefile.in: Remove all trailing whitespace. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * docs/grub.texi: Likewise. * docs/texinfo.tex: Likewise. * disk/fs_uuid.c: Likewise. * disk/lvm.c: Likewise. * disk/scsi.c: Likewise. * disk/ata.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/host.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/usbms.c: Likewise. * disk/memdisk.c: Likewise. * disk/loopback.c: Likewise. * kern/powerpc/dl.c: Likewise. * kern/device.c: Likewise. * kern/dl.c: Likewise. * kern/sparc64/dl.c: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/term.c: Likewise. * kern/fs.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/mmap.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/ieee1275/init.c: Likewise. * kern/i386/realmode.S: Likewise. * kern/i386/tsc.c: Likewise. * kern/partition.c: Likewise. * kern/corecmd.c: Likewise. * kern/file.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/main.c: Likewise. * kern/err.c: Likewise. * kern/env.c: Likewise. * kern/disk.c: Likewise. * kern/generic/millisleep.c: Likewise. * kern/generic/rtc_get_time_ms.c: Likewise. * kern/misc.c: Likewise. * kern/parser.c: Likewise. * genmk.rb: Likewise. * configure.ac: Likewise. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * boot/i386/pc/boot.S: Likewise. * boot/i386/pc/lnxboot.S: Likewise. * boot/i386/pc/cdboot.S: Likewise. * parttool/pcpart.c: Likewise. * video/readers/tga.c: Likewise. * video/video.c: Likewise. * video/bitmap.c: Likewise. * lib/envblk.c: Likewise. * lib/i386/setjmp.S: Likewise. * fs/xfs.c: Likewise. * fs/afs.c: Likewise. * fs/fat.c: Likewise. * fs/ntfs.c: Likewise. * fs/udf.c: Likewise. * fs/affs.c: Likewise. * fs/iso9660.c: Likewise. * fs/hfs.c: Likewise. * fs/fshelp.c: Likewise. * fs/ext2.c: Likewise. * fs/jfs.c: Likewise. * fs/reiserfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/minix.c: Likewise. * fs/cpio.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * efiemu/prepare.c: Likewise. * efiemu/loadcore_common.c: Likewise. * efiemu/runtime/efiemu.sh: Likewise. * efiemu/runtime/efiemu.S: Likewise. * efiemu/runtime/efiemu.c: Likewise. * efiemu/pnvram.c: Likewise. * efiemu/main.c: Likewise. * efiemu/i386/pc/cfgtables.c: Likewise. * efiemu/i386/loadcore64.c: Likewise. * efiemu/i386/loadcore32.c: Likewise. * efiemu/loadcore.c: Likewise. * efiemu/symbols.c: Likewise. * efiemu/mm.c: Likewise. * include/grub/autoefi.h: Likewise. * include/grub/datetime.h: Likewise. * include/grub/term.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/i386/tsc.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/xnu.h: Likewise. * include/grub/i386/efiemu.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/parttool.h: Likewise. * include/grub/video.h: Likewise. * include/grub/memory.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/xnu.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/memory.h: Likewise. * include/grub/multiboot.h: Likewise. * include/grub/usbdesc.h: Likewise. * include/grub/multiboot2.h: Likewise. * include/grub/acpi.h: Likewise. * include/grub/efiemu/efiemu.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/net.h: Likewise. * include/grub/machoload.h: Likewise. * include/grub/macho.h: Likewise. * include/multiboot.h: Likewise. * genmoddep.awk: Likewise. * normal/main.c: Likewise. * normal/menu_entry.c: Likewise. * normal/menu_viewer.c: Likewise. * normal/completion.c: Likewise. * normal/cmdline.c: Likewise. * normal/misc.c: Likewise. * normal/datetime.c: Likewise. * bus/usb/usbtrans.c: Likewise. * bus/usb/ohci.c: Likewise. * bus/usb/uhci.c: Likewise. * bus/usb/usb.c: Likewise. * mmap/efi/mmap.c: Likewise. * mmap/i386/pc/mmap_helper.S: Likewise. * mmap/i386/pc/mmap.c: Likewise. * mmap/i386/mmap.c: Likewise. * mmap/i386/uppermem.c: Likewise. * mmap/mmap.c: Likewise. * commands/acpi.c: Likewise. * commands/echo.c: Likewise. * commands/blocklist.c: Likewise. * commands/loadenv.c: Likewise. * commands/usbtest.c: Likewise. * commands/boot.c: Likewise. * commands/parttool.c: Likewise. * commands/search.c: Likewise. * commands/cat.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/drivemap.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/acpi.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ls.c: Likewise. * commands/cmp.c: Likewise. * commands/test.c: Likewise. * commands/efi/acpi.c: Likewise. * commands/gptsync.c: Likewise. * commands/help.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/acorn.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * partmap/gpt.c: Likewise. * script/sh/lexer.c: Likewise. * script/sh/function.c: Likewise. * font/font.c: Likewise. * font/font_cmd.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/multiboot_loader.c: Likewise. * loader/macho.c: Likewise. * loader/i386/multiboot.c: Likewise. * loader/i386/linux.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot2.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/xnu.c: Likewise. * loader/i386/bsd_trampoline.S: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/multiboot_elfxx.c: Likewise. * loader/i386/bsd_helper.S: Likewise. * loader/i386/bsd.c: Likewise. * loader/i386/linux_trampoline.S: Likewise. * loader/i386/xnu_helper.S: Likewise. * loader/i386/xnu.c: Likewise. * loader/i386/bsd_pagetable.c: Likewise. * loader/i386/multiboot_helper.S: Likewise. * loader/xnu.c: Likewise. * loader/xnu_resume.c: Likewise. * io/gzio.c: Likewise. * term/efi/console.c: Likewise. * term/terminfo.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/usb_keyboard.c: Likewise. * term/gfxterm.c: Likewise. * aclocal.m4: Likewise. * util/lvm.c: Likewise. * util/grub.d/30_os-prober.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/console.c: Likewise. * util/grub-macho2img.c: Likewise. * util/grub-probe.c: Likewise. * util/hostfs.c: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/grub-mkconfig.in: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-emu.c: Likewise. * util/getroot.c: Likewise. * util/hostdisk.c: Likewise. * util/usb.c: Likewise. * util/grub-editenv.c: Likewise. * util/misc.c: Likewise. 2009-06-10 Felix Zielcke * gendistlist.sh (EXTRA_DISTFILES): Add `genhandlerlist.sh' and `genparttoollist.sh'. (DISTDIRS): Add `efiemu', `mmap', `parttool' and `script'. Add `*.sh' to the list find searches for and change `mdate.sh' to `mdate-sh'. 2009-06-10 Pavel Roskin * include/grub/multiboot2.h: Provide compatibility defines for multiboot2.h. * include/multiboot2.h: Include stdint.h only if needed, using angle brackets. * loader/i386/pc/multiboot2.c: Include multiboot2.h after grub/multiboot2.h. * loader/ieee1275/multiboot2.c: Likewise. * loader/multiboot2.c: Likewise. * loader/multiboot_loader.c: Likewise. * configure.ac: Use -nostdlib when probing for the target. It should not be required to have libc for the target. * configure.ac: Remove checks for __bswapsi2 and __bswapdi2, they fail without libc headers for the target. * include/grub/powerpc/libgcc.h: Use weak attribute for all exports. * include/grub/sparc64/libgcc.h: Likewise. Don't use preprocessor conditionals. * conf/common.rmk: Compile tar.mod from tar.c, not cpio.c. The build system doesn't need to be aware of the tar.c internals. 2009-06-09 Michel Hermier * fs/i386/pc/pxe.c (grub_pxefs_read): Fix returned values. 2009-06-09 Robert Millan * util/deviceiter.c (grub_util_iterate_devices): Increase number of disk limit to 26 for IDE, Virtio, Xen and SCSI. 2009-06-09 Felix Zielcke * util/i386/pc/grub-install.in: Change the error message if UUIDs aren't available if ata.mod gets used. 2009-06-09 Oliver Henshaw * bus/usb/ohci.c (grub_ohci_pci_iter): Link struct only after initialising controller. * bus/usb/uhci.c (grub_uhci_pci_iter): Likewise. 2009-06-08 Felix Zielcke * util/i386/pc/grub-install.in: Add a parameter --disk-module to choose between ata and biosdisk module on i386-pc. 2009-06-08 Oliver Henshaw * bus/usb/ohci.c (grub_ohci_pci_iter): Define the Class, Subclass and Programming Interface fields in terms of the 3 byte Class Code register. * bus/usb/uhci.c (grub_uhci_pci_iter): Likewise. * bus/usb/ohci.c (grub_ohci_pci_iter): Check that programming interface is OHCI. Add grub_dprintf for symmetry with bus/usb/uhci.c. * bus/usb/uhci.c (grub_uhci_pci_iter): Check that programming interface is UHCI. Add interf variable for programming interface. Print interface with class/subclass. * bus/usb/ohci.c: Set interf with correct field. * bus/usb/uhci.c: Remove unneeded doubled lines. * bus/usb/ohci.c: Likewise. Change interf to grub_uint32_t. Remove whitespace inside comment. 2009-06-08 Robert Millan * loader/i386/linux.c (grub_cmd_linux): When processing `vga=', use as fallback an equivalent option without depth. 2009-06-08 Vladimir Serbinenko Not fail if unable to retrieve C/H/S on LBA disks * disk/i386/pc/biosdisk.c (grub_biosdisk_open): behave gracefully if unable to retrieve C/H/S on LBA disks 2009-06-08 Pavel Roskin * fs/hfs.c (grub_hfs_find_dir): Use union to avoid a warning about aliasing. 2009-06-08 Felix Zielcke * Makefile.in (uninstall): Remove all $lib_DATA files. 2009-06-08 Vladimir Serbinenko Bugfix: install on partitionless device * util/hostdisk.c (grub_util_biosdisk_get_grub_dev): check if os_dev is a whole disk 2009-06-08 Felix Zielcke * Makefile.in (uninstall): Remove all $include_DATA files. 2009-06-08 Felix Zielcke * commands/true.c: New file. Implement the true and false commands. * conf/common.rmk.c (pkglib_MODULES): Add `true.mod'. (true_mod_SOURCES): New variable. (true_mod_CFLAGS): Likewise. (true_mod_LDFLAGS): Likewise. 2009-06-05 Colin D Bennett Optimized font character lookup using binary search instead of linear search. Fonts now are required to have the character index ordered by code point. * font/font.c (load_font_index): Verify that fonts have ordered character indices. (find_glyph): Use binary search instead of linear search to find a character in a font. 2009-06-05 Michael Scherer * fs/hfsplus.c (grub_hfsplus_mount): Determine if the filesystem uses case sensitive btree. (grub_hfsplus_iterate_dir): Use GRUB_FSHELP_CASE_INSENSITIVE only for case insensitive filesystems. 2009-06-05 Vladimir Serbinenko * conf/i386-pc.rmk (efiemu_mod_CFLAGS): remove -Werror -Wall * conf/common.rmk (search_mod_CFLAGS): likewise 2009-06-04 Vladimir Serbinenko * kern/i386/pc/startup.S [APPLE_CC]: block of nops to compensate a compiler bug 2009-06-04 Vladimir Serbinenko * include/grub/term.h (GRUB_TERM_BACKSPACE): explicitly define as 8 instead of '\b' 2009-06-04 Vladimir Serbinenko Definitions for creating asm symbols with Apple's CC * include/grub/symbol.h [APPLE_CC] (FUNCTION): new macro [APPLE_CC] (VARIABLE): likewise 2009-06-04 Vladimir Serbinenko Disable lnxboot.img when compiled with Apple's CC * conf/i386-pc.rmk (pkglib_IMAGES): remove lnxboot.img pkglib_IMAGES [! TARGET_APPLE_CC] (pkglib_IMAGES): add lnxboot.img * boot/i386/pc/lnxboot.S [APPLE_CC]: define an #error [! APPLE_CC] (CODE_LENG): skip [! APPLE_CC] (setup_sects): likewise [! APPLE_CC]: skip filling 2009-06-04 Vladimir Serbinenko Address in trampolines based on 32-bit registers when compiled with Apple's CC * loader/i386/xnu_helper.S [APPLE_CC]: use 32-bit registers for addresses * loader/i386/linux_trampoline.S [APPLE_CC]: likewise 2009-06-04 Vladimir Serbinenko Avoid aliases when compiling with Apple's CC for PCBIOS machine * kern/misc.c [APPLE_CC] (memcpy): new function [APPLE_CC] (memmove): likewise [APPLE_CC && !GRUB_UTIL] (grub_err_printf): likewise (memcpy): define alias conditionally on !APPLE_CC (memset): likewise (abort): likewise * include/grub/misc.h (memove): don't define when both GRUB_UTIL and APPLE_CC are defined * include/grub/list.h [APPLE_CC] (grub_assert_fail): new function (grub_assert_fail): make prototype conditional 2009-06-04 Vladimir Serbinenko 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 2009-06-04 Vladimir Serbinenko Use objconv when compiling with Apple's CC * conf/i386-pc.rmk (efiemu32.o): use OBJCONV if defined (efiemu64.o): likewise (efiemu64_c.o): omit -mcmodel=large and add -DAPPLE_CC=1 when compiling with Apple's CC (efiemu64_s.o): likewise * configure.ac: check for objconv when compiling with Apple's CC * genmk.rb: use objconv for modules when compiled with Apple's CC 2009-06-04 Vladimir Serbinenko Define segment as well as section when compiling with Apple's CC * efiemu/runtime/efiemu.c (PHYSICAL_ATTRIBUTE): new definition (efiemu_set_virtual_address_map): declare with PHYSICAL_ATTRIBUTE (efiemu_convert_pointer): likewise (efiemu_set_virtual_address_map): likewise (efiemu_convert_pointer): likewise (efiemu_getcrc32): likewise (init_crc32_table): likewise (reflect): likewise * include/grub/dl.h (GRUB_MOD_NAME): define segment with Apple's CC (GRUB_MOD_DEP): likewise 2009-06-04 Vladimir Serbinenko Allow a compilation without -mcmodel=large * kern/efi/mm.c (grub_efi_allocate_pages): don't allocate >4GiB when compiled without -mcmodel=large (filter_memory_map): remove memory post 4 GiB when compiled without -mcmodel=large * configure.ac: fail gracefully and add -DMCMODEL_SMALL=1 to TARGET_CFLAGS when -mcmodel=large isn't supported 2009-06-04 Vladimir Serbinenko Remove nested functions in efiemu core * efiemu/runtime/efiemu.c (reflect): make static instead of nested 2009-06-04 Vladimir Serbinenko Avoid clobbering %ebx/%rbx in inline assembly with Apple's CC * efiemu/runtime/efiemu.c (write_cmos): use %cl instead of %bl as temporary storage * include/grub/i386/tsc.h (grub_get_tsc): restore %rbx/%ebx when using Apple's CC (grub_cpu_is_tsc_supported): likewise * loader/i386/xnu.c (guessfsb): restore %rbx/%ebx in inline assembly 2009-06-04 Vladimir Serbinenko Absolute addressing through constant with Apple's cc * kern/i386/pc/startup.S: Define necessary constants and address through it when using ABS with Apple's CC * boot/i386/pc/diskboot.S: likewise * boot/i386/pc/boot.S: likewise * boot/i386/pc/lnxboot.S: likewise * boot/i386/pc/cdboot.S: likewise * mmap/i386/pc/mmap_helper.S: likewise * commands/i386/pc/drivemap_int13h.S: likewise 2009-06-04 Vladimir Serbinenko Check if compiler is apple cc * Makefile.in (ASFLAGS): new variable (TARGET_ASFLAGS): likewise (TARGET_MODULE_FORMAT): likewise (TARGET_APPLE_CC): likewise (OBJCONV): likewise (TARGET_IMG_CFLAGS): likewise (TARGET_CPPFLAGS): add includedir * configure.ac: call grub_apple_cc and grub_apple_target_cc (TARGET_IMG_LDFLAGS): Add -Wl,-Ttext,. All users updated Check for linker script only if compiler isn't Apple's CC (TARGET_MODULE_FORMAT): set (TARGET_APPLE_CC): likewise (TARGET_ASFLAGS): likewise (ASFLAGS): likewise Check for objcopy only if compiler isn't Apple's CC Check for BSS symbol only if compiler isn't Apple's CC * genmk.rb: adapt nm options if we use Apple's utils * aclocal.m4 (grub_apple_cc): new test (grub_apple_target_cc): likewise 2009-06-04 Vladimir Serbinenko Simplify sed expressions and improve awk * Makefile.in (install-local): simplify sed expression * gencmdlist.sh: likewise * genmoddep.awk: avoid adding module as a dependency of itself 2009-06-04 Vladimir Serbinenko Add missing start symbols * boot/i386/pc/boot.S: add start * boot/i386/pc/pxeboot.S: likewise 2009-06-04 Vladimir Serbinenko Fix wrong assumptions with grub-mkimage on EFI * i386/efi/grub-mkimage.c (read_kernel_module): don't write prefix here (relocate_addresses): consider both r_addend and value at offset (make_mods_section): zerofill modinfo and header (convert_elf): write prefix here 2009-06-04 Vladimir Serbinenko Use .asciz instead of .string * i386/pc/diskboot.S: use .asciz instead of .string * i386/pc/boot.S: likewise * include/grub/dl.h (GRUB_MOD_DEP): likewise (GRUB_MOD_NAME): likewise 2009-06-04 Vladimir Serbinenko 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 2009-06-04 Vladimir Serbinenko Avoid calling biosdisk in drivemap * commands/i386/pc/drivemap.c (parse_biosdisk): remove (revparse_biosdisk): likewise (list_mappings): derive name from id directly (grub_cmd_drivemap): use tryparse_diskstring 2009-06-04 Vladimir Serbinenko Script fixes * include/grub/script_sh.h (grub_script_cmdline): remove cmdline (grub_lexer_param): add tokenonhold (grub_script_create_cmdline): remove cmdline. All callers updated (grub_script_function_create): make functionname grub_script_arg. All callers updated (grub_script_execute_argument_to_string): new prototype * kern/parser.c (state_transitions): reorder (grub_parser_cmdline_state): fix a bug and make more compact * script/sh/execute.c (grub_script_execute_argument_to_string): make global (grub_script_execute_cmdline): use new format * script/sh/function.c (grub_script_function_create): make functionname grub_script_arg. All callers updated * script/sh/lexer.c (grub_script_lexer_init): initialize tokenonhold (grub_script_yylex): remove (grub_script_yylex2): renamed to ... (grub_script_yylex): ...renamed parse the expressions like a${b}c * script/sh/parser.y (GRUB_PARSER_TOKEN_ARG): new typed terminal (GRUB_PARSER_TOKEN_VAR): remove (GRUB_PARSER_TOKEN_NAME): likewise ("if"): declare as typeless ("while"): likewise ("function"): likewise ("else"): likewise ("then"): likewise ("fi"): likewise (text): remove (argument): likewise (script): accept empty scripts and make exit on error (arguments): use GRUB_PARSER_TOKEN_ARG (function): likewise (command): move error handling to script (menuentry): move grub_script_lexer_ref before * script/sh/script.c (grub_script_create_cmdline): remove cmdline argument. All callers updated 2009-06-04 Robert Millan 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. 2009-06-04 Robert Millan Simplify the code duplication in commands/search.c. * commands/search.c (search_label, search_fs_uuid): Merge into ... (search_fs): ... this. Update all users. 2009-06-03 Felix Zielcke * util/grub-mkconfig.in (update_grub_dir): Rename to grub_mkconfig_dir. 2009-05-28 Pavel Roskin * Makefile.in: Don't use "cp -d", it doesn't work on FreeBSD. Remove the original symlink explicitly. * fs/hfs.c (grub_hfs_find_dir): Skip sequences of slashes, not just one slash. That's how grub_fshelp_find_file() does it. 2009-05-26 Pavel Roskin * genmk.rb: Avoid shadowing variable `s', rename the outer `s' to `str'. * util/getroot.c (grub_util_get_dev_abstraction): Mark os_dev as possibly unused. 2009-05-25 Christian Franke * disk/ata.c (grub_ata_wait_not_busy): Add debug output of status register. (grub_atapi_identify): Add wait after drive select. (grub_ata_identify): Do more strict status register check before calling grub_atapi_identify (). Suppress error message if status register is 0x00 after command failure. Add status register check after PIO read to avoid bogus identify due to stuck DRQ. Thanks to Pavel Roskin for testing. (grub_device_initialize): Remove unsafe status register check. Thanks to 'phcoder' for problem report and patch. Prevent sign extension in debug message. 2009-05-23 Colin D Bennett Cleaned up `include/grub/normal.h'. Grouped prototypes by definition file, and functions defined in `normal/menu.c' have had their prototypes moved to `include/grub/menu.h' for consistency. * include/grub/menu.h (grub_menu_execute_callback): Added; moved from normal.h. (grub_menu_get_entry): Likewise. (grub_menu_get_timeout): Likewise. (grub_menu_set_timeout): Likewise. (grub_menu_execute_entry): Likewise. (grub_menu_execute_with_fallback): Likewise. (grub_menu_entry_run): Likewise. * include/grub/normal.h: Re-ordered and grouped function prototypes by file that the function is defined in. (grub_menu_execute_callback): Removed; moved to menu.h. (grub_menu_get_entry): Likewise. (grub_menu_get_timeout): Likewise. (grub_menu_set_timeout): Likewise. (grub_menu_execute_entry): Likewise. (grub_menu_execute_with_fallback): Likewise. (grub_menu_entry_run): Likewise. (grub_menu_addentry): Renamed from this ... (grub_normal_add_menu_entry): ... to this. * normal/main.c (grub_menu_addentry): Renamed from this ... (grub_normal_add_menu_entry): ... to this. * script/sh/execute.c (grub_script_execute_menuentry): Update reference to renamed grub_menu_addentry function. 2009-05-23 Felix Zielcke * commands/i386/pc/drivemap.c (MODNAME): Remove. Update all users. 2009-05-22 Pavel Roskin * aclocal.m4 (grub_I386_CHECK_REGPARM_BUG): Remove. * configure.ac: Don't call grub_I386_CHECK_REGPARM_BUG. Define NESTED_FUNC_ATTR using AH_BOTTOM. Use regparm(1) only when compiling for the i386 targets, but not for the utilities. * include/grub/i386/pc/kernel.h (grub_boot_drive): Change type to grub_uint8_t. (grub_root_drive): Likewise. * kern/i386/pc/startup.S (grub_boot_drive): Change size to byte, remove alignment. (grub_root_drive): Change size to byte. (grub_start_addr): Remove. (grub_end_addr): Likewise. (grub_apm_bios_info): Likewise. 2009-05-21 Felix Zielcke * normal/i386: Remove. * normal/powerpc: Likewise. * normal/sparc64: Likewise. * normal/x86_64: Likewise. 2009-05-19 Vladimir Serbinenko * conf/x86_64-efi.rmk (linux_mod_ASFLAGS): Add missing variable * loader/i386/linux_trampoline.S: Fix indentation * loader/i386/xnu_helper.S: Likewise 2009-05-18 Colin D Bennett Display error messages when parsing a Lua statement fails. Previously, executing a syntactically invalid statement like ")foo" or "bar;" would silently fail. * script/lua/grub_main.c (handle_lua_error): New function. (grub_lua_parse_line): Improved reporting of Lua parser and execution errors. 2009-05-17 Vladimir Serbinenko Remove -Werror which causes build to fail on some systems * conf/i386-pc.rmk (xnu_mod_CFLAGS): Remove -Werror -Wall * conf/i386-efi.rmk (xnu_mod_CFLAGS): Likewise * conf/x86_64-efi.rmk (xnu_mod_CFLAGS): Likewise 2009-05-17 Vladimir Serbinenko trampoline for linux on 64-bit platform * conf/x86_64-efi.rmk (linux_mod_SOURCES): added loader/i386/efi/linux_trampoline.S * include/grub/x86_64/efi/loader.h (grub_linux_real_boot): removed declaration * kern/x86_64/efi/startup.S (grub_linux_real_boot): moved from here * loader/i386/linux_trampoline.S: moved here * loader/i386/efi/linux.c (allocate_pages): reserve space for trampoline (jumpvector): removed (grub_linux_trampoline_start): new declaration (grub_linux_trampoline_end): likewise (grub_linux_boot): use trampoline when on 64-bit platform * loader/i386/linux.c: likewise 2009-05-16 Pavel Roskin * script/lua/grub_lib.c (grub_lua_getenv): Make name and value const to avoid a warning. (grub_lua_setenv): Likewise. * script/lua/grub_main.c (grub_lua_parse_line): Use size_t for lmsg to fix a warning. 2009-05-16 Felix Zielcke * conf/i386.rmk (setjmp_mod_CFLAGS): Rename to ... (setjmp_mod_ASFLAGS): ... this. Set to $(COMMON_ASFLAGS). * conf/x86_64-efi.rmk (setjmp_mod_CFLAGS): Rename to ... (setjmp_mod_ASFLAGS): ... this. Set to $(COMMON_ASFLAGS). * conf/powerpc-ieee1275.rmk (setjmp_mod_CFLAGS): Rename to ... (setjmp_mod_ASFLAGS): ... this. Set to $(COMMON_ASFLAGS). * conf/sparc64-ieee1275.rmk (setjmp_mod_CFLAGS): Rename to ... (setjmp_mod_ASFLAGS): ... this. Set to $(COMMON_ASFLAGS). 2009-05-16 Felix Zielcke * util/grub-mkconfig.in: Export GRUB_TERMINAL_INPUT. 2009-05-16 Bean * conf/common.rmk (pkglib_MODULES): Add lua.mod. (lua_mod_SOURCES): New variable. (lua_mod_CFLAGS): Likewise. (lua_mod_LDFLAGS): Likewise. * conf/i386.rmk (pkglib_MODULES): Add setjmp.mod. (setjmp_mod_SOURCES): New variable. (setjmp_mod_CFLAGS): Likewise. (setjmp_LDFLAGS): Likewise. * conf/x86_64-efi.rmk (pkglib_MODULES): Add setjmp.mod. (setjmp_mod_SOURCES): New variable. (setjmp_mod_CFLAGS): Likewise. (setjmp_LDFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod. (setjmp_mod_SOURCES): New variable. (setjmp_mod_CFLAGS): Likewise. (setjmp_LDFLAGS): Likewise. * conf/sparc64-ieee1275.rmk (pkglib_MODULES): Add setjmp.mod. (setjmp_mod_SOURCES): New variable. (setjmp_mod_CFLAGS): Likewise. (setjmp_LDFLAGS): Likewise. * normal/i386/setjmp.S: Moved from here ... * lib/i386/setjmp.S: ... Moved here * normal/x86_64/setjmp.S: Moved from here ... * lib/x86_64/setjmp.S: ... Moved here * normal/powerpc/setjmp.S: Moved from here ... * lib/powerpc/setjmp.S: ... Moved here * normal/sparc64/setjmp.S: Moved from here ... * lib/sparc64/setjmp.S: ... Moved here * include/grub/i386/setjmp.h (grub_setjmp): Don't use attribute returns_twice in mingw. * script/lua/grub_lib.c: New file. * script/lua/grub_lib.h: Likewise. * script/lua/grub_lua.h: Likewise. * script/lua/grub_main.c: Likewise. * script/lua/lapi.c: Likewise. * script/lua/lapi.h: Likewise. * script/lua/lauxlib.c: Likewise. * script/lua/lauxlib.h: Likewise. * script/lua/lbaselib.c: Likewise. * script/lua/lcode.c: Likewise. * script/lua/lcode.h: Likewise. * script/lua/ldblib.c: Likewise. * script/lua/ldebug.c: Likewise. * script/lua/ldebug.h: Likewise. * script/lua/ldo.c: Likewise. * script/lua/ldo.h: Likewise. * script/lua/ldump.c: Likewise. * script/lua/lfunc.c: Likewise. * script/lua/lfunc.h: Likewise. * script/lua/lgc.c: Likewise. * script/lua/lgc.h: Likewise. * script/lua/linit.c: Likewise. * script/lua/liolib.c: Likewise. * script/lua/llex.c: Likewise. * script/lua/llex.h: Likewise. * script/lua/llimits.h: Likewise. * script/lua/lmathlib.c: Likewise. * script/lua/lmem.c: Likewise. * script/lua/lmem.h: Likewise. * script/lua/loadlib.c: Likewise. * script/lua/lobject.c: Likewise. * script/lua/lobject.h: Likewise. * script/lua/lopcodes.c: Likewise. * script/lua/lopcodes.h: Likewise. * script/lua/loslib.c: Likewise. * script/lua/lparser.c: Likewise. * script/lua/lparser.h: Likewise. * script/lua/lstate.c: Likewise. * script/lua/lstate.h: Likewise. * script/lua/lstring.c: Likewise. * script/lua/lstring.h: Likewise. * script/lua/lstrlib.c: Likewise. * script/lua/ltable.c: Likewise. * script/lua/ltable.h: Likewise. * script/lua/ltablib.c: Likewise. * script/lua/ltm.c: Likewise. * script/lua/ltm.h: Likewise. * script/lua/lua.h: Likewise. * script/lua/luaconf.h: Likewise. * script/lua/lualib.h: Likewise. * script/lua/lundump.c: Likewise. * script/lua/lundump.h: Likewise. * script/lua/lvm.c: Likewise. * script/lua/lvm.h: Likewise. * script/lua/lzio.c: Likewise. * script/lua/lzio.h: Likewise. 2009-05-16 Bean * 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. 2009-05-14 Christian Franke * commands/i386/pc/drivemap_int13h.S: Add missing EXT_C for symbols. This fixes build on Cygwin. 2009-05-14 Pavel Roskin * commands/i386/pc/drivemap_int13h.S: Eliminate unconditional jump. This saves two bytes, so the typical case of 2 swapped drives would fit 32 bytes. 2009-05-13 Pavel Roskin * loader/i386/multiboot.c (grub_multiboot): Cast mmap_addr to grub_uint32_t to avoid a warning. * loader/i386/linux.c (allocate_pages): When assigning real_mode_mem, cast through grub_size_t to fix a warning. The code already makes sure that the value would fit a pointer. (grub_linux_setup_video): Cast render_target->data to grub_size_t to fix a warning. 2009-05-13 Javier Martín * commands/i386/pc/drivemap.c: New file - implement drivemap command. * commands/i386/pc/drivemap_int13h.S: New file - int13 handler. * conf/i386-pc.rmk: Add drivemap.c and drivemap_int13h.S. 2009-05-13 Pavel Roskin * util/i386/pc/grub-setup.c (setup): Remove unused variable embedding_area_exists. 2009-05-13 Robert Millan * util/i386/pc/grub-setup.c (setup): Restructure code flow to make it easier to understand / work with. Improve warning messages for cases where there's no embedding area, or when it is too small (or core.img too large). 2009-05-13 Pavel Roskin * loader/i386/pc/multiboot2.c: Add necessary includes for grub_multiboot2_real_boot(). * fs/iso9660.c (grub_iso9660_iterate_dir): The file mode in the PX record is always little-endian. We only need the lower 2 bytes of the mode. * fs/cpio.c: Use the same name "struct head" for tar and cpio to facilitate code reuse. (grub_cpio_mount): Use "struct head", not a char buffer. This fixes a warning reported by gcc 4.4. * kernel/disk.c (grub_disk_read): Use void pointer for the buffer. (grub_disk_write): Use const void pointer for the buffer. Adjust all callers. Remove unnecessary casts. 2009-05-10 Robert Millan * util/i386/pc/grub-install.in: Update copyright year. 2009-05-09 Vladimir Serbinenko gptsync * commands/gptsync.c: new file * conf/common.rmk (pkglib_MODULES): add gptsync.mod (gptsync_mod_SOURCES): new variable (gptsync_mod_CFLAGS): likewise (gptsync_mod_LDFLAGS): likewise * include/grub/pc_partition.h (GRUB_PC_PARTITION_TYPE_NTFS): new definition (GRUB_PC_PARTITION_TYPE_HFS): likewise * conf/i386-coreboot.rmk (grub_emu_SOURCES): add commands/gptsync.c * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise 2009-05-09 Vladimir Serbinenko Fixed grub-emu * kern/dl.c (grub_dl_ref): omit when compiling grub-emu (grub_dl_ref): likewise 2009-05-08 Robert Millan * util/i386/pc/grub-setup.c (setup): Factorize find_usable_region(), split in two functions (one for msdos and one for gpt). 2009-05-08 Pavel Roskin * disk/raid.c (grub_raid_block_xor): Make buf2 constant, it's not modified. * disk/raid6_recover.c (grub_raid6_recover): Fix warnings about uninitialized err[0] and err[1]. Rename them to bad1 and bad2. Initialize them with -1. Add sanity check for bad1. Eliminate nerr variable. 2009-05-08 David S. Miller * util/sparc64/ieee1275/grub-ofpathname.c (main): Set progname. 2009-05-06 Robert Millan * util/i386/pc/grub-setup.c (setup): Fix check for embed region existence. 2009-05-05 Felix Zielcke * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `kern/rescue_reader.c', `kern/rescue_parser.c' and `normal/autofs.c'. 2009-05-05 David S. Miller * util/sparc64/ieee1275/grub-install.in: Fix sed arg quoting. 2009-05-05 Pavel Roskin * include/grub/dl.h [GRUB_UTIL]: Provide inline implementations of grub_dl_ref() and grub_dl_unref(). * commands/parttool.c: Remove preprocessor conditionals around grub_dl_ref() and grub_dl_unref(). * fs/affs.c: Likewise. * fs/afs.c: Likewise. * fs/cpio.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/ntfs.c: Likewise. * fs/reiserfs.c: Likewise. * fs/sfs.c: Likewise. * fs/udf.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * include/grub/dl.h: Likewise. * loader/xnu.c: Likewise. 2009-05-04 Pavel Roskin * commands/acpi.c: Remove unused variable my_mod. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. 2009-05-04 David S. Miller * kern/ieee1275/openfw.c (grub_children_iterate): Fix string pointer args to grub_ieee1275_get_property(). * conf/sparc64-ieee1275.rmk: Fix build due to missing '\'. * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Bypass cdrom devices, and do not traverse down under controller nodes. * disk/ieee1275/ofdisk.c (compute_dev_path): New. (grub_ofdisk_open): Use it to un-escape "," characters. * kern/disk.c (find_part_sep): New. (grub_disk_open): Use it to find the first non-escaped ',' character in the disk name. * util/ieee1275/devicemap.c (escape_of_path): New. (grub_util_emit_devicemap_entry): Use it. * util/sparc64/ieee1275/grub-install.in: Update script to strip partition specifiers properly by not triggering on '\' escaped ',' characters. 2009-05-04 Robert Millan * include/grub/i386/linux.h (GRUB_LINUX_VID_MODE_VESA_START): Set to 0x300. * loader/i386/linux.c (vga_modes, linux_vesafb_res): Add a few resolutions. (linux_vesafb_modes): Add a lot of additional modes to the list (based on documentation from Wikipedia). 2009-05-04 Pavel Roskin * disk/ata.c: Spelling fixes. * disk/raid.c: Likewise. * disk/usbms.c: Likewise. * disk/dmraid_nvidia.c: Likewise. * kern/ieee1275/openfw.c: Likewise. * kern/ieee1275/init.c: Likewise. * kern/ieee1275/cmain.c: Likewise. * boot/i386/pc/cdboot.S: Likewise. * video/readers/png.c: Likewise. * video/i386/pc/vbe.c: Likewise. * fs/udf.c: Likewise. * fs/hfs.c: Likewise. * fs/reiserfs.c: Likewise. * efiemu/runtime/efiemu.c: Likewise. * efiemu/main.c: Likewise. * efiemu/mm.c: Likewise. * include/grub/elf.h: Likewise. * include/grub/xnu.h: Likewise. * include/grub/usbdesc.h: Likewise. * include/grub/usb.h: Likewise. * include/grub/script_sh.h: Likewise. * include/grub/lib/LzmaEnc.h: Likewise. * include/grub/efiemu/efiemu.h: Likewise. * include/grub/command.h: Likewise. * normal/menu.c: Likewise. * normal/main.c: Likewise. * normal/datetime.c: Likewise. * bus/usb/uhci.c: Likewise. * mmap/i386/uppermem.c: Likewise. * mmap/mmap.c: Likewise. * commands/acpi.c: Likewise. * commands/test.c: Likewise. * partmap/apple.c: Likewise. * font/font.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * loader/macho.c: Likewise. * loader/i386/bsd_trampoline.S: Likewise. * loader/i386/bsd.c: Likewise. * loader/xnu.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/usb_keyboard.c: Likewise. * util/resolve.c: Likewise. * util/getroot.c: Likewise. 2009-05-04 Felix Zielcke * conf/i386-pc.rmk (libpkg_DATA): Rename to pkglib_DATA. 2009-05-04 Robert Millan * loader/i386/linux.c [GRUB_MACHINE_PCBIOS] (grub_cmd_linux): Fix build error. 2009-05-04 Robert Millan * loader/i386/linux.c (grub_cmd_linux): Make "vga=" compatibility parameter only available on BIOS. 2009-05-04 Vladimir Serbinenko Removed wrong semicolon in declaration * grub/misc.h (grub_dprintf): remove semicolon 2009-05-04 Robert Millan * loader/i386/linux.c (GRUB_ASSUME_LINUX_HAS_FB_SUPPORT): New macro. (grub_linux_boot): Don't check for `linux_vesafb_modes' bounds (this is done by grub_cmd_linux() now). [! GRUB_ASSUME_LINUX_HAS_FB_SUPPORT]: If "vga=" parameter wasn't set, restore video to text mode. (grub_cmd_linux): Default `vid_mode' initialization to 0, which indicates lack of "vga=" parameter. "vga=0" is mapped to `GRUB_LINUX_VID_MODE_NORMAL'. 2009-05-04 Felix Zielcke * conf/i386-efi.rmk (grub_emu_SOURCES): Remove `normal/execute.c', `normal/lexer.c', `kern/rescue.c', `normal/function.c', `normal/misc.c' and `normal/script.c'. Add `kern/rescue_reader.c', `kern/rescue_parser.c', `script/sh/main.c', `script/sh/execute.c', `script/sh/function.c', `script/sh/lexer.c', `script/sh/script.c' and `grub_script.tab.c'. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * Makefile.in: Remove duplicated 2008 in Copyright line. 2009-05-04 Robert Millan * util/misc.c (grub_util_warn): New function. Emits a warning unconditionally. * include/grub/util/misc.h (grub_util_warn): New declaration. * util/i386/pc/grub-install.in: Understand --force and pass it down to grub-setup. * util/i386/pc/grub-setup.c (main): Understand --force and pass it down to setup(). (setup): Improve error messages and add warnings when requested to install in odd layouts. Refuse to install using blocklists unless --force was set. 2009-05-04 martin f. krafft * disk/raid.c (grub_raid_scan_device): Improve debug message. 2009-05-04 Vladimir Serbinenko Updated copyright year * fs/hfsplus.c: updated copyright year 2009-05-04 Vladimir Serbinenko HFS+ UUID * fs/hfsplus.c (grub_hfsplus_volheader): added num_serial field in the space previously used by unused3 (grub_hfsplus_uuid): new function (grub_hfsplus_fs): added uuid field 2009-05-03 Pavel Roskin * disk/ata.c: Don't cast mod to void in GRUB_MOD_INIT to suppress warnings. It's no longer needed. * disk/host.c: Likewise. * disk/ata_pthru.c: Likewise. * disk/loopback.c: Likewise. * hook/datehook.c: Likewise. * parttool/pcpart.c: Likewise. * fs/i386/pc/pxe.c: Likewise. * fs/ntfscomp.c: Likewise. * efiemu/main.c: Likewise. * mmap/mmap.c: Likewise. * commands/crc.c: Likewise. * commands/hexdump.c: Likewise. * commands/hdparm.c: Likewise. * commands/acpi.c: Likewise. * commands/echo.c: Likewise. * commands/minicmd.c: Likewise. * commands/blocklist.c: Likewise. * commands/memrw.c: Likewise. * commands/loadenv.c: Likewise. * commands/usbtest.c: Likewise. * commands/lsmmap.c: Likewise. * commands/boot.c: Likewise. * commands/parttool.c: Likewise. * commands/configfile.c: Likewise. * commands/search.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * commands/cat.c: Likewise. * commands/i386/pc/pxecmd.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/lspci.c: Likewise. * commands/date.c: Likewise. * commands/handler.c: Likewise. * commands/ls.c: Likewise. * commands/test.c: Likewise. * commands/cmp.c: Likewise. * commands/efi/loadbios.c: Likewise. * commands/efi/fixvideo.c: Likewise. * commands/halt.c: Likewise. * commands/help.c: Likewise. * commands/reboot.c: Likewise. * hello/hello.c: Likewise. * script/sh/main.c: Likewise. * loader/xnu.c: Likewise. * term/terminfo.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/usb_keyboard.c: Likewise. 2009-05-03 David S. Miller * normal/menu.c: Include grub/parser.h 2009-05-03 Pavel Roskin * mmap/efi/mmap.c (grub_mmap_malign_and_register): Return void*, not char*. * mmap/i386/mmap.c (grub_mmap_malign_and_register): Likewise. Suggested by Javier Martín * util/i386/pc/grub-mkrescue.in: Allow for the case when efiemu??.o doesn't exist. * util/i386/pc/grub-install.in: Likewise. Use "cp -f" for copying. 2009-05-03 Bean Vladimir Serbinenko FreeBSD 64-bit support * conf/i386-pc.rmk (bsd_mod_SOURCES): add loader/i386/bsd_helper.S and loader/i386/bsd_trampoline.S (bsd_mod_ASFLAGS): new variable * include/grub/i386/bsd.h (FREEBSD_MODINFOMD_SMAP): new definition (FREEBSD_MODTYPE_KERNEL64): likewise (grub_bsd64_trampoline_start): likewise (grub_bsd64_trampoline_end): likewise (grub_bsd64_trampoline_selfjump): likewise (grub_bsd64_trampoline_gdt): likewise * include/grub/i386/loader.h (grub_unix_real_boot): moved from here ... * include/grub/i386/bsd.h (grub_unix_real_boot): ... moved here * kern/i386/loader.S (grub_unix_real_boot): moved from here ... * loader/i386/bsd_helper.S (grub_unix_real_boot): moved here * include/grub/gpt_partition.h (grub_gpt_partentry): Corrected the type of "attrib" member * loader/i386/bsd_pagetable.c: new file * loader/i386/bsd_trampoline.S: likewise * loader/i386/bsd.c (ALIGN_QWORD): new macro (ALIGN_VAR): likewise (entry_hi): new variable (kern_end_mdofs): likewise (is_64bit): likewise (grub_freebsd_add_meta): use ALIGN_VAR (grub_e820_mmap): new declaration (grub_freebsd_add_mmap): new function (grub_freebsd_add_meta_module): support 64 bit kernels (grub_freebsd_list_modules): use ALIGN_VAR (gdt_descriptor): new declaration (grub_freebsd_boot): support 64 bit kernels (grub_bsd_elf64_hook): new function (grub_bsd_load_elf): support elf64 2009-05-03 Bean * script/sh/execute.c (grub_script_execute_cmdif): Reset grub_errno after we get the result of if statement. 2009-05-03 Bean * Makefile.in (enable_efiemu): New variable. * conf/i386-pc.rmk: Only compile efiemu runtimes when enable_efiemu is set. (efiemu32.o): Use macro $< for source file, add $(srcdir) to include path. (efi64_c.o): Use macro $< for source file, add $(srcdir) to include path, add -mno-red-zone option. (efiemu64_s.o): Likewise. (efiemu64.o): Use macro $^ for source file. * configure.ac (--enable-efiemu): New option. 2009-05-03 Vladimir Serbinenko xnu support * conf/i386-efi.rmk (kernel_mod_HEADERS): added i386/pit.h (pkglib_MODULES): add xnu.mod (xnu_mod_SOURCES): new variable (xnu_mod_CFLAGS): likewise (xnu_mod_LDFLAGS): likewise (xnu_mod_ASFLAGS): likewise * conf/i386-pc.rmk: likewise * conf/x86_64-efi.rmk: likewise * include/grub/efi/efi.h (grub_efi_finish_boot_services): new declaration * include/grub/i386/macho.h: new file * include/grub/i386/xnu.h: likewise * include/grub/macho.h: likewise * include/grub/machoload.h: likewise * include/grub/x86_64/macho.h: likewise * include/grub/x86_64/xnu.h: likewise * include/grub/xnu.h: likewise * kern/efi/efi.c (grub_efi_finish_boot_services): new function * kern/efi/mm.c (MAX_HEAP_SIZE): increase * loader/i386/efi/xnu.c: new file * loader/i386/pc/xnu.c: likewise * loader/i386/xnu.c: likewise * loader/i386/xnu_helper.S: likewise * loader/macho.c: likewise * loader/xnu.c: likewise * loader/xnu_resume.c: likewise * util/grub-dumpdevtree: likewise * include/grub/i386/pit.h: include grub/err.h (grub_pit_wait): export * util/grub.d/30_os-prober.in: support Darwin/Mac OS X 2009-05-02 Vladimir Serbinenko Efiemu * conf/i386-pc.rmk: new modules efiemu, efiemu_acpi, efiemu_pnvram, _linux_efi, linux_efi. new files in grub-emu new targets efiemu32.o and efiemu64.o * loader/linux_normal_efiemu.c: likewise * loader/i386/efi/linux.c: added preliminary efiemu support * util/i386/pc/grub-install.in: add efiemu??.o to the list of files to copy * include/grub/autoefi.h: new file * include/grub/i386/efiemu.h: likewise * include/grub/i386/pc/efiemu.h: likewise * include/grub/efi/api.h: add LL suffix when necessary new definitions relating to tables * include/grub/efiemu/efiemu.h: new file * include/grub/efiemu/runtime.h: likewise * efiemu/prepare.c: likewise * efiemu/loadcore_common.c: likewise * efiemu/loadcore64.c: likewise * efiemu/runtime/efiemu.sh: likewise * efiemu/runtime/efiemu.S: likewise * efiemu/runtime/efiemu.c: likewise * efiemu/runtime/config.h: likewise * efiemu/prepare32.c: likewise * efiemu/main.c: likewise * efiemu/modules/pnvram.c: likewise * efiemu/modules/i386: likewise * efiemu/modules/i386/pc: likewise * efiemu/modules/acpi.c: likewise * efiemu/i386/pc/cfgtables.c: likewise * efiemu/i386/loadcore64.c: likewise * efiemu/i386/loadcore32.c: likewise * efiemu/prepare64.c: likewise * efiemu/loadcore.c: likewise * efiemu/symbols.c: likewise * efiemu/mm.c: likewise * efiemu/loadcore32.c: likewise 2009-05-02 Vladimir Serbinenko ACPI spoofing * commands/acpi.c: new file * commands/i386/pc/acpi.c: likewise * commands/efi/acpi.c: likewise * include/grub/acpi.h: likewise * conf/i386-pc.rmk (pkglib_MODULES): added acpi.mod (acpi_mod_SOURCES): new variable (acpi_mod_CFLAGS): likewise (acpi_mod_LDFLAGS): likewise * conf/i386-efi.rmk: likewise * conf/x86_64-efi.rmk: likewise 2009-05-02 Vladimir Serbinenko Missing part from mmap patch * mmap/efi/mmap.c (grub_machine_mmap_unregister): renamed to (grub_mmap_unregister) (grub_mmap_free_and_unregister): use grub_mmap_register 2009-05-02 Vladimir Serbinenko Mmap services * loader/i386/efi/linux.c (grub_linux_boot): use grub_mmap_iterate * loader/i386/linux.c (find_mmap_size): likewise (allocate_pages): likewise * loader/i386/multiboot.c (grub_get_multiboot_mmap_len): likewise (grub_fill_multiboot_mmap): likewise (grub_multiboot): use grub_mmap_get_lower and grub_mmap_get_upper * loader/i386/pc/linux.c (grub_cmd_linux): use grub_mmap_get_lower * include/grub/i386/bsd.h (OPENBSD_MMAP_AVAILABLE): new definition (OPENBSD_MMAP_RESERVED): likewise * include/grub/i386/pc/memory.h: include grub/memory.h (grub_lower_mem): removed (grub_upper_mem): likewise (GRUB_MACHINE_MEMORY_ACPI): new definition (GRUB_MACHINE_MEMORY_NVS): likewise (GRUB_MACHINE_MEMORY_MAX_TYPE): likewise (GRUB_MACHINE_MEMORY_HOLE): likewise (grub_machine_mmap_register): likewise (grub_machine_mmap_unregister): likewise (grub_machine_get_upper): likewise (grub_machine_get_lower): likewise (grub_machine_get_post64): likewise * include/grub/i386/efi/memory.h: new file * include/grub/x86_64/efi/memory.h: likewise * include/grub/efi/memory.h: likewise * conf/i386-pc.rmk (pkglib_MODULES): added mmap.mod (mmap_mod_SOURCES): new variable (mmap_mod_LDFLAGS): likewise (mmap_mod_ASFLAGS): likewise * conf/i386-coreboot.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/i386-efi.rmk: likewise * conf/x86_64-efi.rmk: likewise * include/grub/types.h (UINT_TO_PTR): new macro (PTR_TO_UINT32): likewise (PTR_TO_UINT64): likewise * include/grub/memory.h: new file * mmap/i386/pc/mmap.c: likewise * mmap/i386/pc/mmap_helper.S: likewise * mmap/i386/uppermem.c: likewise * mmap/mmap.c: likewise * mmap/efi/mmap.c: likewise * kern/i386/coreboot/init.c (grub_machine_init): don't use grub_upper_mem * kern/i386/pc/init.c (grub_lower_mem): removed variable (grub_upper_mem): likewise (grub_machine_init): don't use grub_upper_mem, make grub_lower_mem local * loader/i386/bsd.c (grub_openbsd_boot): use grub_mmap_get_lower, grub_mmap_iterate and grub_mmap_get_upper (grub_netbsd_boot): use grub_mmap_get_lower and grub_mmap_get_upper 2009-05-02 Bean * conf/common.rmk (grub_script.tab.c): Change normal/parser.y to script/sh/parser.y. (pkglib_MODULES): Add normal.mod and sh.mod. (normal_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. (sh_mod_SOURCES): Likewise. (sh_mod_CFLAGS): Likewise. (sh_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (normal/lexer.c_DEPENDENCIES): Changed to script/sh/lexer.c_DEPENDENCIES. (kernel_img_SOURCES): Remove kern/rescue.c, and kern/reader.c, kern/rescue_reader.c and kern/rescue_parser.c. (kernel_img_HEADERS): Remove rescue.h, add reader.h. (grub_emu_SOURCES): Change source files. (pkglib_MODULES): Remove normal.mod. (normal_SOURCES): Removed. (normal_mod_CFLAGS): Likewise. (normal_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1276.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/command.h (grub_command_execute): New inline function. * include/grub/menu.h (grub_menu_entry): Removed commands field. * include/grub/normal.h: Remove . (grub_fs_module_list): Moved to normal/autofs.c. (grub_exit_env): Removed. (grub_command_execute): Likewise. (grub_normal_menu_addentry): Renamed to grub_menu_addentry, removed parameter script. (read_command_list): New function declaration. (read_fs_list): Likewise. * include/parser.h: Include . (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser): New structure. (grub_parser_class): New variable. (grub_parser_execute): New function declaration. (grub_register_rescue_parser): Likewise. (grub_parser_register): New inline function. (grub_parser_unregister): Likewise. (grub_parser_get_current): Likewise. (grub_parser_set_current): Likewise. * include/grub/reader.h: New file. * kern/reader.c: Likewise. * kern/rescue_parser.c: Likewise. * kern/rescue_reader.c: Likewise. * normal/autofs.c: Likewise. * normal/dyncmd.c: Likewise. * include/grub/rescue.h: Removed. * normal/command.h: Likewise. * include/grub/script.h: Moved to ... * include/grub/script_sh.h: ... Moved here. * normal/execute.c: Moved to ... * script/sh/execute.c: ... Moved here. * normal/function.c: Moved to ... * script/sh/function.c: ... Moved here. * normal/lexer.c: Moved to ... * script/sh/lexer.c: ... Moved here. * normal/parser.y: Moved to ... * script/sh/parser.y: ... Moved here. * normal/script.c: Moved to ... * script/sh/script.c: ... Moved here. * normal/main.c: Remove and , include . (grub_exit_env): Removed. (fs_module_list): Moved to normal/autofs.c. (grub_file_getline): Don't handle comment here. (free_menu): Skip removed field entry->commands. (grub_normal_menu_addentry): Removed as grub_menu_entry, removed script parameter. (read_config_file): Removed nested parameter, change getline function. (grub_enter_normal_mode): Removed. (grub_dyncmd_dispatcher): Moved to normal/dyncmd.c. (read_command_list): Likewise. (autoload_fs_module): Moved to normal/autofs.c. (read_fs_list): Likewise. (reader_nested): New variable. (grub_normal_execute): Run parser.sh to switch to sh parser. (grub_cmd_rescue): Removed. (cmd_normal): Removed. (grub_cmd_normal): Unregister itself at the beginning. Don't register rescue command. (grub_cmdline_run): New function. (grub_normal_reader_init): Likewise. (grub_normal_read_line): Likewise. (grub_env_write_pager): Likewise. (cmdline): New variable. (grub_normal_reader): Likewise. (GRUB_MOD_INIT): Register normal reader and set as current, register pager hook, register normal command with grub_register_command_prio, so that it won't show up in command.lst. (GRUB_MOD_FINI): Unregister normal reader, unhook pager, clear grub_fs_autoload_hook. * normal/menu.c: Remove , add . (grub_menu_execute_entry): Replace grub_script_execute with grub_parser_execute, change parameter to grub_command_execute. * normal/menu_text.c: Remove . * normal/menu_entry.c: Remove , add and . (run): Change editor_getline to use new parser interface. Change parameter to grub_command_execute. * kern/main.c: Remove , include , and . (grub_load_normal_mode): Execute normal command. (grub_main): Call grub_register_core_commands, grub_register_rescue_parser and grub_register_rescue_reader, use grub_reader_loop to enter input loop. * kern/parser.c (grub_parser_split_cmdline): Change type of getline parameter. (grub_parser_class): New variable. (grub_parser_execute): New function. * loader/i386/multiboot.c: Remove . * loader/multiboot2.c: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * util/grub-emu.c (read_command_list): New dummy function. 2009-05-02 Robert Millan * util/deviceiter.c (grub_util_iterate_devices): Increase max drive count to 16 for CCISS and IDA. 2009-05-02 Robert Millan * normal/menu_text.c (grub_wait_after_message): Print a newline after waiting for user input. * loader/i386/linux.c: Include `'. (grub_cmd_linux): Improve the error message about `ask' mode, by waiting for user input so it's not missed (we can do this, since user requested interaction). 2009-05-02 Vladimir Serbinenko Added missing lst to grub-mkrescue * util/i386/pc/grub-mkrescue.in: added ${input_dir}/handler.lst and ${input_dir}/parttool.lst 2009-04-30 David S. Miller * util/hostdisk.c (device_is_wholedisk): New function. (grub_util_biosdisk_get_grub_dev): Shortcut when hdg.start is zero only if device_is_wholedisk() returns true. * util/hostdisk.c (convert_system_partition_to_system_disk): Handle virtual disk devices named /dev/vdiskX as found on sparc and powerpc. * kern/sparc64/ieee1275/init.c (grub_machine_set_prefix): If lettered partition specifier is found, convert to numbered. 2009-04-29 David S. Miller * include/grub/powerpc/ieee1275/memory.h: Include ieee1275.h. * include/grub/sparc64/ieee1275/memory.h: Likewise. * normal/command.c: Add missing newline at end of file. * commands/lsmmap.c (grub_cmd_lsmmap): Add casts to avoid printf warnings. * kern/ieee1275/openfw.c (grub_claimmap): Likewise. * disk/ieee1275/ofdisk.c (grub_ofdisk_open, grub_ofdisk_close, grub_ofdisk_read): Likewise, and deal similarly with the fact that ihandles have a 32-bit type but need to be stored in a "void *". 2009-04-28 Pavel Roskin * disk/fs_uuid.c (grub_fs_uuid_open): Use parent->data for dev, not disk. Adjust all dependencies. (grub_fs_uuid_close): Use grub_device_close(), not grub_disk_close(). * disk/fs_uuid.c (grub_fs_uuid_open): Allocate memory to copy parent's partition, don't copy it by reference, as it gets freed on close. 2009-04-27 Vladimir Serbinenko Preboot hooks support * commands/boot.c (struct grub_preboot_t): new declaration (preboots_head): new variable (preboots_tail): likewise (grub_loader_register_preboot_hook): new function (grub_loader_unregister_preboot_hook): likewise (grub_loader_set): launch preboot hooks * include/grub/loader.h (grub_loader_preboot_hook_prio_t): new type (grub_loader_register_preboot_hook): new declaration (grub_loader_unregister_preboot_hook): likewise 2009-04-27 Vladimir Serbinenko Warning fix * disk/scsi.c (grub_scsi_open): added missing cast when calling grub_dprintf 2009-04-26 Vladimir Serbinenko Bug and warning fixes * include/grub/i386/pc/init.h (grub_stop_floppy): added missing declaration * commands/test.c (test_parse): fixed bug with file tests and corrected declaration of find_file 2009-04-26 Pavel Roskin * Makefile.in: Don't install empty manual pages if help2man is missing. Use help2man option for output, not shell redirection. 2009-04-26 David S. Miller * util/grub-mkdevicemap.c (make_device_map): Add missing NESTED_FUNC_ATTR to process_device(). 2009-04-25 Vladimir Serbinenko Test command * commands/test.c: rewritten to use bash-like test 2009-04-25 Vladimir Serbinenko Parttool autoloading and improvements * Makefile.in (pkglib_DATA): add parttool.lst (parttool.lst): new target * genmk.rb: generate parttool-* (CLEANFILES): add #{parttool} (PARTTOOLFILES): new variable * genparttoollist.sh: new file * parttool/pcpart.c (grub_pcpart_boot): more feedback (grub_pcpart_type): likewise * commands/parttool.c (helpmsg): new variable (grub_cmd_parttool): output help if not enough arguments are supplied autoload modules (GRUB_MOD_INIT(parttool)): use helpmsg 2009-04-24 David S. Miller Avoiding opening same device multiple times in device iterator. * kern/device.c: (grub_device_iterate): Define struct part_ent, and use it to build a list of partitions in iterate_disk() and iterate_partition(). * disk/fs_uuid.c (grub_fs_uuid_close): Call grub_disk_close() on disk->data. * disk/ieee1275/nand.c (grub_nand_iterate): Return grub_devalias_iterate() result instead of unconditional 0. * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Likewise. Also, capture hook return value, either directly or via grub_children_iterate(), and propagate to caller. * include/grub/ieee1275/ieee1275.h (grub_devalias_iterate, grub_children_iterate): Return value is now 'int' instead of 'grub_err_t'. * kern/ieee1275/openfw.c (grub_children_iterate): Fix to behave like a proper iterator, stopping when hooks return non-zero. (grub_devalias_iterate): Likewise. 2009-04-23 David S. Miller * kern/sparc64/ieee1275/openfw.c: Unused, delete. 2009-04-22 David S. Miller * kern/ieee1275/mmap.c (grub_machine_mmap_iterate): If size_cells is larger than address_cells, use that value for address_cells too. * include/grub/ieee1275/ieee1275.h (IEEE1275_MAX_PROP_LEN, IEEE1275_MAX_PATH_LEN): Define. * kern/ieee1275/openfw.c (grub_children_iterate): Dynamically allocate 'childtype', 'childpath', 'childname', and 'fullname'. (grub_devalias_iterate): Dynamically allocate 'aliasname' and 'devtype'. Explicitly NULL terminate devalias expansion. * util/sparc64/ieee1275/misc.c: New file. * util/sparc64/ieee1275/grub-setup.c: New file. * util/sparc64/ieee1275/grub-ofpathname.c: New file. * util/sparc64/ieee1275/grub-mkimage.c: New file. * util/sparc64/ieee1275/grub-install.in: New file. * util/ieee1275/ofpath.c: New file. * util/ieee1275/devicemap.c: New file. * util/devicemap.c: New file. * util/deviceiter.c: New file. * kern/sparc64/ieee1275/init.c: New file. * include/grub/util/ofpath.h: New file. * include/grub/util/deviceiter.h: New file. * util/grub-mkdevicemap.c: Include deviceiter.h. Implement using grub_util_emit_devicemap_entry and grub_util_iterate_devices. * conf/i386-corebook.rmk: Build util/deviceiter.c and util/devicemap.c into grub-mkdevicemap * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Add rules to build boot block images and installation utilities. Build kernel as image instead of as elf binary. Use common rules as much as possible. 2009-04-19 Vladimir Serbinenko Correct GPT definition * include/grub/gpt_partition.h (grub_gpt_partentry): Corrected the type of "attrib" member 2009-04-19 Felix Zielcke * INSTALL: Replace `autogen.sh' with `./autogen.sh'. 2009-04-19 David S. Miller * loader/sparc64/ieee1275/linux.c: Include grub/command.h (grub_rescue_cmd_linux): Rename to... (grub_cmd_linux): and fix prototype. (grub_rescue_cmd_initrd): Rename to... (grub_cmd_initrd): and fix prototype. (cmd_linux, cmd_initrd): New. (GRUB_MOD_INIT(linux)): Use grub_register_command(). (GRUB_MOD_FINI(linux): Use grub_unregister_command(). 2009-04-17 Pavel Roskin * bus/usb/ohci.c (grub_ohci_transaction): Fix incorrect printf format. (grub_ohci_transfer): Likewise. * bus/usb/usbtrans.c (grub_usb_control_msg): Warning fix. * loader/multiboot_loader.c (grub_cmd_multiboot_loader): Fix return without a value. Fix inconsistent indentation. * fs/i386/pc/pxe.c (grub_pxefs_dir): Fix function prototype to match struct grub_fs. * disk/ata.c (grub_ata_pciinit): Use NESTED_FUNC_ATTR. * bus/usb/ohci.c (grub_ohci_pci_iter): Likewise. * bus/usb/uhci.c (grub_uhci_pci_iter): Likewise. * commands/lspci.c (grub_lspci_iter): Likewise. 2009-04-16 Bean * commands/efi/loadbios.c (grub_cmd_fakebios): Add missing return value. 2009-04-15 Pavel Roskin * include/grub/types.h: Rename ULONG_MAX to GRUB_ULONG_MAX and LONG_MAX to GRUB_LONG_MAX. Introduce GRUB_LONG_MIN. Update all users of ULONG_MAX, LONG_MAX and LONG_MIN to use the new definitions. 2009-04-15 Felix Zielcke * disk/lvm.c (grub_lvm_scan_device): Add `LVM' to the error messages, that no multiple data or metadata areas are supported and `Unknown metadata header'. 2009-04-15 Vladimir Serbinenko Move loader out of the kernel * kern/loader.c: moved to ... * commands/boot.c: ... moved here * commands/minicmd.c (grub_mini_cmd_boot): moved to ... * commands/boot.c (grub_cmd_boot): moved here. All users updated * include/grub/kernel.h (grub_machine_fini): export * include/grub/loader.h (grub_loader_is_loaded): update declaration (grub_loader_set): likewise (grub_loader_unset): likewise (grub_loader_boot): likewise * conf/common.rmk: new module boot.mod (pkglib_MODULES): add boot.mod * conf/i386-coreboot.rmk (kernel_elf_SOURCES): remove kern/loader.c (grub_emu_SOURCES): likewise * conf/i386-efi.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise * conf/i386-pc.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise * conf/sparc64-ieee1275.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise * conf/x86_64-efi.rmk (kernel_elf_SOURCES): likewise (grub_emu_SOURCES): likewise 2009-04-15 Vladimir Serbinenko use grub_lltoa instead of grub_itoa and grub_ltoa for all purposes * kern/misc.c (grub_itoa): Removed function (grub_ltoa): likewise (grub_vsprintf): use grub_lltoa 2009-04-15 Vladimir Serbinenko Restore grub-emu * conf/i386-pc.rmk (grub_emu_SOURCES): add normal/handler.c * conf/i386-coreboot.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise 2009-04-15 Felix Zielcke * INSTALL: Add that `./autogen.sh' needs to be run before `./configure.'. 2009-04-14 Bean * Makefile.in (pkglib_DATA): Add handler.lst. (handler.lst): New rule. * conf/i386-pc.rmk (normal_mod_SOURCES): Add normal/handler.c. * conf/i386-coreboot.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * genhandlerlist.sh: New file. * genmk.rb: Add rules to generate handler.lst. * include/grub/normal.h (grub_file_getline): New function definition. (read_handler_list): Likewise. (free_handler_list): Likewise. * include/grub/term.h (grub_term_register_input): Add name parameter for auto generation of handler.lst. (grub_term_register_output): Likewise. * normal/handler.c: New file. * normal/main.c (get_line): Renamed to grub_file_getline. (read_config_file): Use the newly renamed grub_file_getline. (read_command_list): Likewise. (read_fs_list): Likewise. (grub_normal_execute): Call read_handler_list to parse handler.lst. (GRUB_MOD_FINI): Call free_handler_list to free handler list. * term/efi/console.c (grub_console_init): Add name parameter for auto generation of handler.lst. * term/gfxterm.c: Likewise. * term/i386/pc/at_keyboard.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/i386/pc/vga_text.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * term/usb_keyboard.c: Likewise. 2009-04-14 Bean * util/grub-pe2elf.c (write_symbol_table): Terminate short name symbol properly with null character. 2009-04-14 Felix Zielcke * configure: Remove. * config.h.in: Likewise. * stamp-h.in: Likewise. * DISTLIST: Likewise. * conf/common.mk: Likewise. * conf/i386-coreboot.mk: Likewise. * conf/i386-efi.mk: Likewise. * conf/i386-ieee1275.mk: Likewise. * conf/i386.mk: Likewise. * conf/i386-pc.mk: Likewise. * conf/powerpc-ieee1275.mk: Likewise. * conf/sparc64-ieee1275.mk: Likewise. * conf/x86_64-efi.mk: Likewise. * INSTALL: Remove the sentence that Ruby and autoconf are only required if you develop on GRUB. 2009-04-14 John Stanley David S. Miller * util/hostdisk.c (make_device_name): Fix buffer length calculations. 2009-04-14 Felix Zielcke * util/hostdisk.c [__FreeBSD__ || __FreeBSD_kernel__]: Include and . (open_device) [__FreeBSD__ || __FreeBSD_kernel_]: Use sysctlgetbyname() to add 0x10 to `kern.geom.debugflags' if it's not already set, before opening the device and reset them afterwards. 2009-04-13 Pavel Roskin * conf/common.rmk (grub_fstest_SOURCES): Add normal/datetime.c. Reported by John Stanley 2009-04-13 Robert Millan * util/grub.d/10_freebsd.in: Detect Debian GNU/kFreeBSD and use that name for menuentries when appropriate. 2009-04-13 Felix Zielcke * util/grub.d/10_freebsd.in: Add a missing `fi'. 2009-04-13 Robert Millan * loader/i386/linux.c (grub_cmd_linux): Don't pass `vga=ask' parameter to Linux, simply abort telling the user it's no longer supported. 2009-04-13 Felix Zielcke * util/grub.d/10_freebsd.in: Don't exit if /boot/devices.hints doesn't exist. Check also for /boot/kernel/kernel.gz. Print `freebsd_loadenv' only when devices.hints exist. 2009-04-13 Pavel Roskin * term/usb_keyboard.c (grub_usb_keyboard_getkey): Warning fixes. 2009-04-13 Felix Zielcke * util/i386/pc/grub-install.in (install_drive): Remove the BSD partition number. (grub_drive): Likewise. 2009-04-13 David S. Miller * kern/sparc64/ieee1275/ieee1275.c: New file. * include/grub/sparc64/ieee1275/ieee1275.h (IEEE1275_MAP_WRITE, IEEE1275_MAP_READ, IEEE1275_MAP_EXEC, IEEE1275_MAP_LOCKED, IEEE1275_MAP_CACHED, IEEE1275_MAP_SE, IEEE1275_MAP_GLOBAL, IEEE1275_MAP_IE, IEEE1275_MAP_DEFAULT): Define. (grub_ieee1275_map_physical, grub_ieee1275_claim_vaddr, grub_ieee1275_alloc_physmem): Declare new exported functions. * include/grub/sparc64/ieee1275/loader.h: New file. * include/grub/sparc64/ieee1275/memory.h: Likewise. * include/grub/sparc64/kernel.h: Likewise. * loader/sparc64/ieee1275/linux.c: Likewise. * conf/common.rmk (grub_probe_SOURCES): Add Sun partition module. (grub_fstest_SOURCES): Likewise. * util/hostdisk.c (make_device_name): Do not make any assumptions about the length of drive names. * kern/dl.c (grub_dl_load_file): Close file immediately when we are done using it. 2009-04-12 David S. Miller * kern/misc.c (grub_ltoa): Fix cast when handling negative values. Noticed by Pavel Roskin. * configure.ac: Check for __bswapsi2 and__bswapdi2 using target compiler. * genmk.rb: Add more flexible image type specification, also pass --strip-unneeded to objcopy. * conf/i386-pc.rmk: Use *_FORMAT. * conf/i386-pc.mk: Rebuilt. * disk/ieee1275/ofdisk.c (struct ofdisk_hash_ent): New struct. (OFDISK_HASH_SZ): Define. (ofdisk_hash): New hash table. (ofdisk_hash_fn, ofdisk_hash_find, ofdisk_hash_add): New functions. (grub_ofdisk_open): Use ofdisk_hash_ent address as disk->id instead of device phandle which is not unique. * kern/sparc64/ieee1275/init.c: Delete, replace with... * kern/sparc64/ieee1275/crt0.S: assembler implementation. * include/grub/sparc64/ieee1275/kernel.h: Declare grub_prefix[]. (GRUB_MOD_ALIGN, GRUB_MOD_GAP, GRUB_KERNEL_MACHINE_TOTAL_MODULE_SIZE, GRUB_KERNEL_MACHINE_KERNEL_IMAGE_SIZE, GRUB_KERNEL_MACHINE_COMPRESSED_SIZE, GRUB_KERNEL_MACHINE_PREFIX, GRUB_KERNEL_MACHINE_DATA_END): Define. (grub_kernel_image_size, grub_total_module_size): Declare. 2009-04-12 Pavel Roskin * configure.ac: Change the logic when we check for target tools. Do it when the target is specified and it's different from the specified value of the host. 2009-04-11 Felix Zielcke * util/hostdisk.c [__FreeBSD_kernel__]: Include sys/disk.h. (grub_util_biosdisk_open) [__FreeBSD_kernel__]: Add support for GNU/kFreeBSD. Check if a device is a character device. Use DIOCGMEDIASIZE to get the size. (convert_system_partition_to_system_disk) [__FreeBSD_kernel__]: Add support for GNU/kFreeBSD. (grub_util_biosdisk_get_grub_dev) [__FreeBSD_kernel__]: Check if OS_DEV is a character device instead of a block device. Add support for FreeBSD device names. * util/getroot.c (find_root_device) [__FreeBSD_kernel__]: Check if ENT is a character device instead of a block device. * util/grub-probe.c (probe) [__FreeBSD_kernel__]: Check if DEVICE_NAME is a character device instead of a block device. 2009-04-11 Andrey Shuvikov * util/hostdisk.c [__FreeBSD__]: Include sys/disk.h. (grub_util_biosdisk_open) [__FreeBSD__]: Add support for FreeBSD. Check if a device is a character device. Use DIOCGMEDIASIZE to get the size. (convert_system_partition_to_system_disk) [__FreeBSD__]: Add support for FreeBSD. (grub_util_biosdisk_get_grub_dev) [__FreeBSD__]: Check if OS_DEV is a character device instead of a block device. Add support for FreeBSD device names. * util/getroot.c (find_root_device) [__FreeBSD__]: Check if ENT is a character device instead of a block device. (grub_util_check_char_device): New function. * util/grub-probe.c (probe) [__FreeBSD__]: Check if DEVICE_NAME is a character device instead of a block device. * include/grub/util/getroot.h (grub_util_check_char_device): New prototype. 2009-04-11 David S. Miller * conf/sparc64-ieee1275.rmk (kernel_img_LDFLAGS): Link with static libgcc. * configure.ac: Check for __bswapsi2 and __bswapdi2 presence. * include/grub/sparc64/libgcc.h (__bswapsi2): Export libgcc function, if present. (__bswapdi2): Likewise. * include/grub/sparc64/ieee1275/boot.h: New file. * boot/sparc64/ieee1275/boot.S: Likewise. * boot/sparc64/ieee1275/diskboot.S: Likewise. * kern/misc.c (grub_ltoa): New function. (grub_vsprintf): Use it to format 'long' integers. 2009-04-10 David S. Miller * disk/ieee1275/nand.c (grub_nand_open): All ieee1275 call arg slots are of type grub_ieee1275_cell_t. (grub_nand_read): Likewise. * kern/ieee1275/ieee1275.c (IEEE1275_PHANDLE_INVALID, IEEE1275_IHANDLE_INVALID): Use grub_ieee1275_cell_t since these macros are used to compare values in arg/ret block of the call. (grub_ieee1275_finddevice, grub_ieee1275_get_property, grub_ieee1275_next_property, grub_ieee1275_get_property_length, grub_ieee1275_instance_to_package, grub_ieee1275_package_to_path, grub_ieee1275_instance_to_path, grub_ieee1275_write, grub_ieee1275_read, grub_ieee1275_seek, grub_ieee1275_peer, grub_ieee1275_child, grub_ieee1275_parent, grub_ieee1275_open, grub_ieee1275_close, grub_ieee1275_set_property, grub_ieee1275_set_color): All ieee1275 call arg slots are of type grub_ieee1275_cell_t. * kern/ieee1275/openfw.c (grub_map): Likewise. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_ihandle_t, grub_ieee1275_phandle_t): Define as grub_unit32_t type. * kern/ieee1275/init.c (grub_machine_init): Make 'actual' grub_ssize_t. * kern/ieee1275/openfw.c (grub_children_iterate): Likewise. (grub_devalias_iterate): Likewise. 2009-04-10 Vladimir Serbinenko UFS improvements * fs/ufs.c (INODE_NBLOCKS): new definition (struct grub_ufs_dirent): added fields for non-BSD dirents (grub_ufs_get_file_block): fixed double indirect handling (grub_ufs_lookup_symlink): use more robust way to determine whether symlink is inline (grub_ufs_find_file): support for non-BSD dirents (grub_ufs_dir): support for non-BSD dirents 2009-04-10 Bean * include/grub/efi/api.h (grub_efi_configuration_table): Add packed attribute, otherwise the size would be wrong for i386 platform. * include/grub/pci.h (grub_pci_read_word): New inline function. (grub_pci_read_byte): Likewise. (grub_pci_write): Likewise. (grub_pci_write_word): Likewise. (grub_pci_write_byte): Likewise. * include/grub/pci.h (grub_pci_iteratefunc_t): Add NESTED_FUNC_ATTR. * loader/i386/efi/linux.c (fake_bios_data): Moved to loadbios module. (find_framebuf): Scan pci to locate the frame buffer address. * commands/efi/fixvideo.c: New file. * commands/efi/loadbios.c: Likewise. * commands/memrw.c: Likewise. * util/grub-dumpbios.in: Likewise. * conf/common.rmk (grub-dumpbios): New utility. (pkglib_MODULES): New module memrw.mod. (memrw_mod_SOURCE): New macro. (memrw_mod_CFLAGS): Likewise. (memrw_mod_LDFLAGS): Likewise. * conf/i386-efi.rmk (pkglib_MODULES): New module loadbios.mod and fixvideo.mod. (loadbios_mod_SOURCE): New macro. (loadbios_mod_CFLAGS): Likewise. (loadbios_mod_LDFLAGS): Likewise. (fixvideo_mod_SOURCE): Likewise. (fixvideo_mod_CFLAGS): Likewise. (fixvideo_mod_LDFLAGS): Likewise. * conf/x86_64.rmk (pkglib_MODULES): New module loadbios.mod and fixvideo.mod. (loadbios_mod_SOURCE): New macro. (loadbios_mod_CFLAGS): Likewise. (loadbios_mod_LDFLAGS): Likewise. (fixvideo_mod_SOURCE): Likewise. (fixvideo_mod_CFLAGS): Likewise. (fixvideo_mod_LDFLAGS): Likewise. 2009-04-08 Felix Zielcke * disk/lvm.c (grub_lvm_scan_device): Add a missing NULL check. 2009-04-07 David S. Miller * kern/sparc64/dl.c (grub_arch_dl_relocate_symbols): Add support for R_SPARC_OLO10 relocations. Fix compile warning for R_SPARC_WDISP30 case. * kern/sparc64/cache.S: Fix grub_arch_sync_caches implementation. 2009-04-06 Pavel Roskin * include/grub/misc.h (ARRAY_SIZE): New macro. * include/grub/i386/linux.h (GRUB_LINUX_VID_MODE_VESA_START): New macro. * loader/i386/linux.c (allocate_pages): Use free_pages(). (grub_linux_unload): Don't use free_pages(). (grub_linux_boot): Prevent accessing linux_vesafb_modes with a wrong index. Treat all other modes as text modes. (grub_cmd_linux): Initialize vid_mode unconditionally to GRUB_LINUX_VID_MODE_NORMAL. Recognize and support "vga=ask". * commands/help.c (print_command_help): Use cmd->prio, not cmd->flags to check for GRUB_PRIO_LIST_FLAG_ACTIVE. 2009-04-06 Vladimir Serbinenko Parttool * parttool/pcpart.c: new file * commands/parttool.c: likewise * conf/common.rmk (pkglib_MODULES): Added parttool.mod and pcpart.mod (parttool_mod_SOURCES): new variable (parttool_mod_CFLAGS): likewise (parttool_mod_LDFLAGS): likewise (pcpart_mod_SOURCES): likewise (pcpart_mod_CFLAGS): likewise (pcpart_mod_LDFLAGS): likewise * conf/i386-coreboot.rmk (grub_emu_SOURCES): added commands/parttool.c and parttool/pcpart.c * conf/i386-efi.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise * conf/x86_64-ieee1275.rmk: likewise 2009-04-05 Vladimir Serbinenko Support for mtime and further expandability of dir command * include/grub/lib/datetime.h: moved to ... * include/grub/datetime.h: ... moved here and added declaration of grub_unixtime2datetime. All users updated * include/grub/fs.h: new syntax for dir and mtime functions in struct grub_fs * include/grub/fshelp.h: new declarations of GRUB_FSHELP_TYPE_MASK and GRUB_FSHELP_FLAGS_MASK * commands/ls.c (grub_ls_list_files): Write mtime in long format * fs/ext2.c (grub_ext2_dir): use new dir syntax and supply mtime (grub_ext2_mtime): new function * fs/hfsplus.c (grub_hfsplus_dir): use new dir syntax and supply mtime (grub_hfsplus_mtime): new function * fs/ufs.c (GRUB_UFS_ATTR_TYPE): new definition (GRUB_UFS_ATTR_FILE): likewise (GRUB_UFS_ATTR_LNK): likewise (struct grub_ufs_sblock): new fields mtime (grub_ufs_read_inode): new parameter to read inode to a separate buffer all users updated (grub_ufs_dir): mtime support (grub_ufs_mtime): new function * fs/affs.c (grub_affs_dir): use new dir syntax * fs/afs.c (grub_afs_dir): likewise * fs/cpio.c (grub_cpio_dir): likewise * fs/fat.c (grub_fat_find_dir): likewise * fs/hfs.c (grub_hfs_dir): likewise * fs/iso9660.c (grub_iso9660_dir): likewise * fs/jfs.c (grub_jfs_dir): likewise * fs/minix.c (grub_minix_dir): likewise * fs/ntfs.c (grub_ntfs_dir): likewise * fs/reiserfs.c (grub_reiserfs_dir): likewise * fs/sfs.c (grub_sfs_dir): likewise * fs/xfs.c (grub_xfs_dir): likewise * util/hostfs.c (grub_hostfs_dir): likewise * lib/datetime.c: moved to ... * normal/datetime.c: ... moved here (grub_unixtime2datetime): new function * kern/rescue.c (grub_rescue_print_files): use new dir syntax * normal/completion.c (iterate_dir): use new dir syntax * normal/misc.c (grub_normal_print_device_info): tell the last modification time of a volume * kern/fs.c (grub_fs_probe): updated dummy function to use new syntax * conf/common.rmk: added lib/datetime.c to ls.mod * conf/i386-coreboot.rmk (grub_emu_SOURCES): add normal/datetime.c (normal_mod_SOURCES): likewise (datetime_mod_SOURCES): Removed lib/datetime.c * conf/i386-efi.rmk: likewise * conf/i386-ieee1275.rmk: likewise * conf/i386-pc.rmk: likewise * conf/powerpc-ieee1275.rmk: likewise * conf/sparc64-ieee1275.rmk: likewise * conf/x86_64-efi.rmk: likewise 2009-04-05 Vladimir Serbinenko Trim trailing spaces in FAT label and support mtools-like labels * fs/fat.c (grub_fat_iterate_dir): New function based on grub_fat_find_dir (grub_fat_find_dir): use grub_fat_iterate_dir (grub_fat_label): likewise 2009-04-04 Vladimir Serbinenko * conf/powerpc-ieee1275.rmk (kernel_elf_HEADERS): add list.h and command.h remove extraneous kernel_elf_HEADERS 2009-04-04 Bean * include/grub/util/misc.h: Add dummy function fsync for mingw. * util/misc.c: Likewise. 2009-04-04 Yoshinori K. Okuji * loader/i386/efi/linux.c (fake_bios_data): Use grub_dprintf instead of grub_printf. 2009-04-03 Robert Millan * loader/i386/linux.c (grub_linux_setup_video): Fill `params->{red,green,blue,reserved}_{mask_size,field_pos}' with values from `mode info' structure instead of hardcoded values. 2009-04-01 Pavel Roskin * Makefile.in: Remove all references to MODULE_LDFLAGS, it's unused now. * genmk.rb: Likewise. * configure.ac: Likewise. 2009-04-01 Manoel Abranches * aclocal.m4: Move --build-id=none from MODULE_LDFLAGS to TARGET_LDFLAGS. This corrects a problem with grub-mkelfimage. 2009-04-01 David S. Miller * normal/sparc64/setjmp.S: Fix setjmp implementation. * include/grub/sparc64/setjmp.h (grub_jmp_buf): Update. (grub_setjmp): Mark with 'returns_twice' attribute. * include/grub/i386/setjmp.h (grub_setjmp): Likewise * include/grub/powerpc/setjmp.h (grub_setjmp): Likewise. * include/grub/x86_64/setjmp.h (grub_setjmp): Likewise. 2009-04-01 Robert Millan Reapply fix from 2008-07-28 which was accidentally reverted; also perform the same fix to a similar check in same function. * disk/raid.c (grub_raid_scan_device): Do not abort when two disks with the same number are found, just use issue a warning with grub_dprintf(), as this error has been reported to be non-fatal. 2009-03-31 Pavel Roskin * aclocal.m4 (grub_I386_CHECK_REGPARM_BUG): Provide safe default for cross-compilation. 2009-03-30 Robert Millan Fix i386-ieee1275 build. * include/grub/i386/ieee1275/loader.h (grub_multiboot2_real_boot): Remove declaration. 2009-03-30 Pavel Roskin * fs/hfs.c (grub_hfs_strncasecmp): Integrate into ... (grub_hfs_cmp_catkeys): ... this. Don't assume strings to be zero-terminated, rely only on the strlen value. Fix comparison of strings differing in length. 2009-03-30 Robert Millan * loader/i386/linux.c (grub_cmd_linux): Check for zImage before checking for abi version. Improve error messages on BIOS to notify user about `linux16' command. 2009-03-29 Vladimir Serbinenko Leak fixes * kern/disk.c (grub_disk_cache_store): Invalidate previous cache in case of collision * disk/scsi.c (grub_scsi_open): free scsi in case of error 2009-03-29 Robert Millan * loader/i386/linux.c (grub_cmd_linux): Parse "vga=" parameter and set `vid_mode' accordingly. (grub_linux_boot): Process `vid_mode' and set video mode. 2009-03-29 Robert Millan * util/grub.d/10_linux.in (linux_entry): New function. Factorize generation of Linux boot entries. 2009-03-29 Yoshinori K. Okuji Make the format of Environment Block plain text. The boot loader part is not tested well yet. * util/grub-editenv.c (DEFAULT_ENVBLK_SIZE): New macro. (buffer): Removed. (envblk): Likewise. (usage): Remove "info" and "clear". Add "unset". Update the description of "set", as this does not delete variables any longer. (create_envblk_file): Complete rewrite. (open_envblk_file): Likewise. (cmd_info): Removed. (cmd_list): Likewise. (cmd_set): Likewise. (cmd_clear): Likewise. (list_variables): New function. (write_envblk): Likewise. (set_variables): Likewise. (unset_variables): Likewise. (main): Complete rewrite. * commands/loadenv.c (buffer): Removed. (envblk): Likewise. (open_envblk_file): New function. (read_envblk_file): Complete rewrite. (grub_cmd_load_env): Likewise. (grub_cmd_list_env): Likewise. (struct blocklist): New struct. (free_blocklists): New function. (check_blocklists): Likewise. (write_blocklists): Likewise. (grub_cmd_save_env): Complete rewrite. * include/grub/lib/envblk.h (GRUB_ENVBLK_SIGNATURE): Replaced with a plain text signature. (GRUB_ENVBLK_MAXLEN): Removed. (struct grub_envblk): Complete rewrite. (grub_envblk_find): Removed. (grub_envblk_insert): Likewise. (grub_envblk_open): New prototype. (grub_envblk_set): Likewise. (grub_envblk_delete): Put const to VALUE. (grub_envblk_iterate): Put const to NAME and VALUE. (grub_envblk_close): New prototype. (grub_envblk_buffer): New inline function. (grub_envblk_size): Likewise. * lib/envblk.c: Include grub/mm.h. (grub_env_find): Removed. (grub_envblk_open): New function. (grub_envblk_close): Likewise. (escaped_value_len): Likewise. (find_next_line): Likewise. (grub_envblk_insert): Removed. (grub_envblk_set): New function. (grub_envblk_delete): Complete rewrite. (grub_envblk_iterate): Likewise. 2009-03-28 Robert Millan * conf/i386-pc.rmk (pkglib_MODULES): Add `linux16.mod'. (linux16_mod_SOURCES, linux16_mod_CFLAGS, linux16_mod_LDFLAGS): New variables. Use 16-bit loader. (linux_mod_SOURCES, linux_mod_CFLAGS, linux_mod_LDFLAGS): Use 32-bit loader. * kern/i386/loader.S (grub_linux_boot): Rename to ... (grub_linux16_boot): ... this. Update all users. * loader/i386/linux.c (grub_linux32_boot): Rename to ... (grub_linux_boot): ... this. Update all users. * loader/i386/pc/linux.c (GRUB_MOD_INIT(linux)): Rename to ... (GRUB_MOD_INIT(linux16)): ... this. Rename `linux' and `initrd' commands to `linux16' and `initrd16'. (GRUB_MOD_FINI(linux)): Rename to ... (GRUB_MOD_FINI(linux16)): ... this. 2009-03-24 Pavel Roskin * genmk.rb: Define ASM_FILE for *.S files for *.lst generation, not just for compilation. 2009-03-22 Vladimir Serbinenko Move multiboot helper out of kernel * conf/i386-pc.rmk (multiboot_mod_SOURCES): Add `loader/i386/multiboot_helper.S'. * conf/i386-coreboot.rmk: Likewise * conf/i386-ieee1275.rmk: Likewise * kern/i386/loader.S: Move multiboot helpers from here... * loader/i386/multiboot_helper.S: ...moved here * include/grub/i386/loader.h: Move declarations of multiboot helpers from here... * include/grub/i386/multiboot.h: ...moved here * loader/i386/multiboot.c: Added include of grub/cpu/multiboot.h 2009-03-22 Yoshinori K. Okuji * kern/env.c (grub_env_context_open): Added an argument to specify whether a new context inherits exported variables from current one. This is useful when making a sandbox to interpret a config file. All callers updated. * include/grub/env.h (grub_env_context_open): Updated the prototype. 2009-03-22 Yoshinori K. Okuji * kern/env.c (grub_env_context_close): Fix memory leaks. 2009-03-22 Yoshinori K. Okuji * normal/main.c (grub_normal_execute): Added an argument BATCH to specify if an interactive interface should be provided after reading a config file. All callers updated. (read_command_list): Prevent being executed twice. (read_fs_list): Likewise. * include/grub/normal.h (grub_normal_execute): Updated the prototype. 2009-03-22 Pavel Roskin * kern/powerpc/ieee1275/startup.S: Replace EXT_C(start) with _start. * kern/i386/pc/startup.S: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/ieee1275/startup.S: Likewise. * kern/i386/coreboot/startup.S: Likewise. * kern/x86_64/efi/startup.S: Likewise. * aclocal.m4 (grub_CHECK_START_SYMBOL): Remove. * configure.ac: Don't call grub_CHECK_START_SYMBOL. * kern/i386/pc/startup.S: Use _start instead of START_SYMBOL. 2009-03-21 Vladimir Serbinenko Bugfixes in multiboot for bugs uncovered by solaris kernel. * loader/i386/multiboot_elfxx.c (grub_multiboot_load_elf): Corrected limit detection. Use vaddr of correct segment for entry_point. 2009-03-21 Bean * commands/blocklist.c: Add include file , remove and . (grub_cmd_blocklist): Use the new command interface. (GRUB_MOD_INIT): Likewise. (GRUB_MOD_FINI): Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/crc.c: Likewise. * commands/echo.c: Likewise. * commands/halt.c: Likewise. * commands/handler.c: Likewise. * commands/hdparm.c: Likewise. * commands/help.c: Likewise. * commands/hexdump.c: Likewise. * commands/loadenv.c: Likewise. * commands/ls.c: Likewise. * commands/lsmmap.c: Likewise. * commands/lspci.c: Likewise. * commands/loadenv.c: Likewise. * commands/read.c: Likewise. * commands/reboot.c: Likewise. * commands/search.c: Likewise. * commands/sleep.c: Likewise. * commands/test.c: Likewise. * commands/usbtest.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/pxecmd.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * font/font_cmd.c: Likewise. * hello/hello.c: Likewise. * loader/efi/appleloader.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/i386/bsd.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/ieee1275/linux.c: Likewise. * loader/i386/linux.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/multiboot_loader.c: Likewise. * term/gfxterm.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/terminfo.c: Likewise. * term/i386/pc/vesafb.c: Removed . * term/i386/pc/vga.c: Likewise. * video/readers/jpeg.c: Likewise. * video/readers/png.c: Likewise. * video/readers/tga.c: Likewise. * util/grub-fstest (cmd_loopback): Removed. (cmd_blocklist): Likewise. (cmd_ls): Likewise. (grub_register_command): Likewise. (grub_unregister_command): Likewise. (execute_command): Use grub_command_find to locate command and execute it. * include/grub/efi/chainloader.h: Removed. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/bsd_normal.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/linux_normal.c: Likewise. * loader/multiboot_loader_normal.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * gencmdlist.sh: Scan new registration command grub_register_extcmd and grub_register_command_p1. * conf/common.rmk (grub_fstest_SOURCES): Add kern/list.c, kern/command.c, lib/arg.c and commands/extcmd.c. (pkglib_MODULES): Remove boot.mod, and minicmd.mod and extcmd.mod. (minicmd_mod_SOURCES): New variable. (minicmd_mod_CFLAGS): Likewise. (minicmd_mod_LDFLAGS): Likewise. (extcmd_mod_SOURCES): Likewise. (extcmd_mod_CFLAGS): Likewise. (extcmd_mod_LDFLAGS): Likewise. (boot_mod_SOURCES): Removed. (boot_mod_CFLAGS): Likewise. (boot_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (kernel_img_SOURCES): Add kern/command.c and kern/corecmd.c. (kernel_img_HEADERS): Add command.h. (grub_emu_SOURCES): Remove commands/boot.c and normal/arg.c, add commands/minicmd.c, kern/command.c, kern/corecmd.c, commands/extcmd.c and lib/arg.c. (pkglib_MODULES): Change _linux.mod, _chain.mod, _bsd.mod and _multiboot.mod as linux.mod, chain.mod, bsd.mod and multiboot.mod, remove the corresponding normal mode command. (normal_mod_SOURCES): Remove normal/arg.c. * conf/i386-coreboot.rmk: Likewise. * conf/i386-efi.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * include/grub/arg.h: Move from here ... * include/grub/lib/arg.h: ... to here. * normal/arg.c: Move from here ... * lib/arg.c: ... to here. * commands/extcmd.c: New file. * commands/minicmd.c: Likewise. * include/grub/command.h: Likewise. * include/grub/extcmd.h: Likewise. * kern/command.c: Likewise. * kern/corecmd.c: Likewise. * kern/list.c (grub_list_iterate): Return int instead of void. (grub_list_insert): New function. (grub_prio_list_insert): Likewise. * kern/rescue.c (grub_rescue_command): Removed. (grub_rescue_command_list): Likewise. (grub_rescue_register_command): Likewise. (grub_rescue_unregister_command): Likewise. (grub_rescue_cmd_boot): Move to minicmd.c (grub_rescue_cmd_help): Likewise. (grub_rescue_cmd_info): Likewise. (grub_rescue_cmd_boot): Likewise. (grub_rescue_cmd_testload): Likewise. (grub_rescue_cmd_dump): Likewise. (grub_rescue_cmd_rmmod): Likewise. (grub_rescue_cmd_lsmod): Likewise. (grub_rescue_cmd_exit): Likewise. (grub_rescue_print_devices): Moved to corecmd.c. (grub_rescue_print_files): Likewise. (grub_rescue_cmd_ls): Likewise. (grub_rescue_cmd_insmod): Likewise. (grub_rescue_cmd_set): Likewise. (grub_rescue_cmd_unset): Likewise. (attempt_normal_mode): Use grub_command_find to get normal module. (grub_enter_rescue_mode): Use grub_register_core_commands to register commands, remove grub_rescue_register_command calls. * normal/command.c (grub_register_command): Removed. (grub_unregister_command): Likewise. (grub_command_find): Likewise. (grub_iterate_commands): Likewise. (rescue_command): Likewise. (export_command): Moved to corecmd.c. (set_command): Removed. (unset_command): Likewise. (insmod_command): Likewise. (rmmod_command): Likewise. (lsmod_command): Likewise. (grub_command_init): Likewise. * normal/completion.c (iterate_command): Use cmd->prio to check for active command. (complete_arguments): Use grub_extcmd_t structure to find options. (grub_normal_do_completion): Change function grub_iterate_commands to grub_command_iterate. * normal/execute.c (grub_script_execute_cmd): No need to parse argument here. * normal/main.c (grub_dyncmd_dispatcher): New function. (read_command_list): Register unload commands as dyncmd. (grub_cmd_normal): Use new command interface, register rescue, unregister normal at entry, register normal, unregister rescue at exit. * include/grub/list.h (grub_list_test_t): New type. (grub_list_iterate): Return int instead of void. (grub_list_insert): New function. (GRUB_AS_NAMED_LIST_P): New macro. (GRUB_AS_PRIO_LIST): Likewise. (GRUB_AS_PRIO_LIST_P): Likewise. (GRUB_PRIO_LIST_PRIO_MASK): New constant. (GRUB_PRIO_LIST_FLAG_ACTIVE): Likewise. (grub_prio_list): New structure. (grub_prio_list_insert): New function. (grub_prio_list_remove): New inline function. * include/grub/normal.h: Remove , add . (GRUB_COMMAND_FLAG_CMDLINE): Moved to command.h. (GRUB_COMMAND_FLAG_MENU): Likewise. (GRUB_COMMAND_FLAG_BOTH): Likewise. (GRUB_COMMAND_FLAG_TITLE): Likewise. (GRUB_COMMAND_FLAG_NO_ECHO): Likewise. (GRUB_COMMAND_FLAG_NO_ARG_PARSE): Removed. (GRUB_COMMAND_FLAG_NOT_LOADED): Likewise. (grub_command): Likewise. (grub_register_command): Likewise. (grub_command_find): Likewise. (grub_iterate_commands): Likewise. (grub_command_init): Likewise. (grub_arg_parse): Likewise. (grub_arg_show_help): Likewise. * include/grub/rescue.h (grub_rescue_register_command): Removed. (grub_rescue_unregister_command): Likewise. * include/grub/i386/bsd.h: Remove grub_rescue_cmd_freebsd, grub_rescue_cmd_openbsd, grub_rescue_cmd_netbsd, grub_rescue_cmd_freebsd_loadenv and grub_rescue_cmd_freebsd_module. * include/grub/i386/efi/loader.h: Remove grub_rescue_cmd_linux and grub_rescue_cmd_initrd. * include/grub/i386/loader.h: Likewise. * include/grub/x86_64/loader.h: Likewise. * include/grub/i386/pc/chainloader.h: Remove grub_chainloader_cmd. 2009-03-21 Bean * util/hostdisk.c (read_device_map): Use grub_util_get_disk_size instead of stat in mingw environment. * util/misc.c (grub_millisleep): Use Sleep in mingw environment. * aclocal.m4 (grub_CHECK_LINK_DIR): New function. * configure.ac: Use grub_CHECK_LINK_DIR to determine whether to use AC_CONFIG_LINKS. 2009-03-21 Bean * fs/ext2.c (grub_ext2_mount): Change errno to GRUB_ERR_BAD_FS for out of range error. 2009-03-18 Michel Dänzer * fs/ext2.c (grub_ext2_read_block): Take endianness into account when checking inode flags for EXT4_EXTENTS_FLAG. 2009-03-18 Robert Millan * loader/i386/linux.c: Include `' and `'.. (grub_linux_setup_video): New function. Loosely based on the EFI one. (grub_linux32_boot): Attempt to configure video settings with grub_linux_setup_video(). (grub_rescue_cmd_linux): Set noreturn=0 in grub_loader_set, in order to avoid grub_console_fini() which would step out of graphical mode unconditionally. 2009-03-14 Robert Millan Fix build on powerpc. * conf/powerpc-ieee1275.rmk (kernel_elf_HEADERS): Add `handler.h'. 2009-03-12 Vladimir Serbinenko * term/gfxterm.c (GRUB_MOD_FINI(term_gfxterm)): Correct name of background image command. 2009-03-12 Colin D Bennett * term/gfxterm.c (draw_cursor): Ensure character is redrawn. (grub_gfxterm_putchar): Extract pairs of identical calls to draw_cursor out of conditional blocks. 2009-03-11 Pavel Roskin * fs/hfs.c (grub_hfs_strncasecmp): New function. (grub_hfs_cmp_catkeys): Use HFS specific string comparison. 2009-03-11 Robert Millan * loader/i386/multiboot_elfxx.c (CONCAT(grub_multiboot_load_elf, XX)): Do not reject ET_DYN files. 2009-03-11 Felix Zielcke * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Add `kern/list.c' and `kern/handler.c'. 2009-03-11 Robert Millan * loader/i386/multiboot.c (code_size): New variable. (grub_multiboot): Define offsets by adding to `code_size' rather than subtracting from `grub_multiboot_payload_size'. Provide 4-byte alignment to MBI and others by increasing `boot_loader_name_length' appropriately. * loader/i386/multiboot_elfxx.c (CONCAT(grub_multiboot_load_elf, XX)): Initialize `code_size'. 2009-03-09 Felix Zielcke * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Remove duplicated `fs/ext2.c'. 2009-03-08 Robert Millan Make loader/i386/linux.c usable on i386-pc again. * kern/i386/pc/init.c (grub_machine_init): Disable addition of low memory to heap. * loader/i386/linux.c [GRUB_MACHINE_PCBIOS] (allocate_pages): Remove `#error' stanza. 2009-03-07 Bean * loader/i386/efi/linux.c (grub_rescue_cmd_initrd): Fix a bug in initrd allocation. 2009-03-06 Robert Millan Fix display issue on terminals with screen size other than 80x25 (e.g. gfxterm with resolution higher than 640x480). * normal/main.c (grub_normal_init_page): Display title text in a position relative to the center of the terminal instead of relying on a hardcoded offset. 2009-03-04 Robert Millan Filter /etc/grub.d/10_* so that only add-ons for native kernels are installed. * Makefile.in (host_kernel): New variable. * conf/common.rmk (grub-mkconfig_SCRIPTS): Conditionalize all 10_*.in scripts instead of just the windows one. * configure.ac: Initialize and AC_SUBST `host_kernel'. 2009-03-04 Felix Zielcke * conf/i386-pc.rmk (grub_emu_SOURCES): Add `kern/list.c' and `kern/handler.c'. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. 2009-03-04 Felix Zielcke * partmap/pc.c (pc_partition_map_iterate): Skip over invalid BSD partitions or if there's no space for the disk label and print the partition number on a invalid magic. 2009-03-04 Felix Zielcke * util/misc.c: Include . (grub_millisleep): New function. 2009-03-04 Bean * configure.ac: Only test -mcmodel=large option in x86_64-efi, also add another option -mno-red-zone. * commands/handler.c: Change module description. * kern/handler.c: Add missing space at the end of description line. * kern/list.c: Likewise. 2009-03-03 Robert Millan Move more components to the relocation area, and fix mbi pointer handling to use the destination rather than the origin (thanks to Vladimir Serbinenko for spotting). * loader/i386/multiboot.c (mbi_dest): New variable. (grub_multiboot_boot): Use `mbi_dest' instead of `mbi'. (grub_multiboot): Put cmdline, boot_loader_name and mbi in the relocation area. 2009-03-01 Bean * include/grub/efi/api.h (GRUB_EFI_MPS_TABLE_GUID): New constant. (GRUB_EFI_ACPI_TABLE_GUID): Likewise. (GRUB_EFI_ACPI_20_TABLE_GUID): Likewise. (GRUB_EFI_SMBIOS_TABLE_GUID): Likewise. * loader/i386/efi/linux.c (acpi_guid): New variable. (acpi_guid): Likewise. (EBDA_SEG_ADDR): New constant. (LOW_MEM_ADDR): Likewise. (FAKE_EBDA_SEG): Likewise. (fake_bios_data): New function. (grub_linux_boot): Call fake_bios_data. 2009-03-01 Bean * commands/terminal.c: Removed. * commands/handler.c: New file. * include/grub/list.h: Likewise. * include/grub/handler.h: Likewise. * kern/list.c: Likewise. * kern/handler.c: Likewise. * kern/term.h: Include header file . (grub_term_input): Move next field to the beginning. (grub_term_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. (grub_term_register_input): Changed to inline function. (grub_term_register_output): Likewise. (grub_term_unregister_input): Likewise. (grub_term_unregister_output): Likewise. (grub_term_set_current_input): Likewise. (grub_term_set_current_output): Likewise. (grub_term_get_current_input): Likewise. (grub_term_get_current_output): Likewise. (grub_term_iterate_input): Removed. (grub_term_iterate_output): Likewise. * kern/term.c (grub_term_list_input): Removed. (grub_term_list_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. (grub_cur_term_input): Change variable as macro. (grub_cur_term_output): Likewise. (grub_term_register_input): Removed. (grub_term_register_output): Likewise. (grub_term_unregister_input): Likewise. (grub_term_unregister_output): Likewise. (grub_term_set_current_input): Likewise. (grub_term_set_current_output): Likewise. (grub_term_iterate_input): Likewise. (grub_term_iterate_output): Likewise. (grub_term_get_current_input): Likewise. (grub_term_get_current_output): Likewise. * util/grub-editenv.c: Include header file . (grub_term_get_current_input): Removed. (grub_term_get_current_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. * util/grub-fstest.c (grub_term_get_current_input): Removed. (grub_term_get_current_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. * util/grub-probe.c (grub_term_get_current_input): Removed. (grub_term_get_current_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. * util/i386/pc/grub-setup.c (grub_term_get_current_input): Removed. (grub_term_get_current_output): Likewise. (grub_term_input_class): New variable. (grub_term_output_class): Likewise. * conf/common.rmk (pkglib_MODULES): Replace terminal with handler. (terminal_mod_SOURCES): Likewise. (terminal_mod_CFLAGS): Likewise. (terminal_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_img_SOURCES): Add list.c and handler.c. (kernel_img_HEADERS): Add list.h and handler.h. * conf/i386-efi.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_mod_SOURCES): Add list.c and handler.c. (kernel_mod_HEADERS): Add list.h and handler.h. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_elf_SOURCES): Add list.c and handler.c. (kernel_elf_HEADERS): Add list.h and handler.h. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_elf_SOURCES): Add list.c and handler.c. (kernel_elf_HEADERS): Add list.h and handler.h. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_mod_SOURCES): Add list.c and handler.c. (kernel_mod_HEADERS): Add list.h and handler.h. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Replace terminal.c with handler.c. (kernel_elf_SOURCES): Add list.c and handler.c. (kernel_elf_HEADERS): Add list.h and handler.h. 2009-02-27 Robert Millan Factorize elf32 / elf64 code in Multiboot loader. This will prevent it from getting out of sync again. * loader/i386/multiboot.c (grub_multiboot_is_elf32, grub_multiboot_load_elf32, grub_multiboot_is_elf64, grub_multiboot_load_elf64): Move from here ... * loader/i386/multiboot_elfxx.c (grub_multiboot_is_elf, grub_multiboot_load_elf): ... to here (new file). 2009-02-27 Robert Millan * util/grub.d/10_linux.in: Rename "single-user mode" to "recovery mode". 2009-02-27 Vladimir Serbinenko Don't leak in SCSI code. * disk/scsi.c (grub_scsi_close): free `scsi'. 2009-02-27 Robert Millan * loader/i386/pc/multiboot.c: Move from here ... * loader/i386/multiboot.c: ... to here. Update all users. 2009-02-27 Robert Millan Patch from Alexandre Bique * util/i386/pc/grub-setup.c (setup): Fix directory path. 2009-02-27 Krzysztof Smiechowicz * fs/sfs.c (grub_sfs_read_extent): Correction to traversing extent b-tree. 2009-02-27 Robert Millan * kern/misc.c (grub_strtoull): Fix bug (it mistakenly parsed the `0x' qualifier as 0 when base is specified as parameter). 2009-02-24 Bean * configure.ac: Check for -mcmodel=large in x86_64 target. * include/grub/efi/api.h (efi_call_10): New macro. (efi_wrap_10): New function. * include/grub/efi/pe32.h (GRUB_PE32_REL_BASE_HIGH): New macro. (GRUB_PE32_REL_BASED_HIGH): Likewise. (GRUB_PE32_REL_BASED_LOW): Likewise. (GRUB_PE32_REL_BASED_HIGHLOW): Likewise. (GRUB_PE32_REL_BASED_HIGHADJ): Likewise. (GRUB_PE32_REL_BASED_MIPS_JMPADDR): Likewise. (GRUB_PE32_REL_BASED_SECTION): Likewise. (GRUB_PE32_REL_BASED_REL): Likewise. (GRUB_PE32_REL_BASED_IA64_IMM64): Likewise. (GRUB_PE32_REL_BASED_DIR64): Likewise. (GRUB_PE32_REL_BASED_HIGH3ADJ): Likewise. * kern/x86_64/dl.c (grub_arch_dl_relocate_symbols): Fixed relocation issue. * kern/x86_64/efi/callwrap.S (efi_wrap_6): Bug fix. (efi_wrap_10): New function. * kern/x86_64/efi/startup.S (codestart): Use relative addressing. * loader/efi/appleloader.c (devpath_5): Add support for late 2008 MB/MBP model (NV chipset). (devdata_devs): Add devpath_5 to the list. * load/i386/efi/linux.c (video_base): Remove variable. (RGB_MASK): New macro. (RGB_MAGIC): Likewise. (LINE_MIN): Likewise. (LINE_MAX): Likewise. (FBTEST_STEP): Likewise. (FBTEST_COUNT): Likewise. (fb_list): New variable. (grub_find_video_card): Remove function. (find_framebuf): New function. (grub_linux_setup_video): Use find_framebuf to get frame buffer and line length. * util/i386/efi/grub-mkimage.c (grub_reloc_section): Fix relocation problem for x86_64. 2009-02-22 Vesa Jääskeläinen Patch #25624 by Kevin Lacquement . * util/grub-mkconfig.in: Use ${grub_mkdevicemap} instead of hard coding tool name. 2009-02-22 Robert Millan * include/multiboot.h (MULTIBOOT_INFO_ALIGN): New macro. * loader/i386/pc/multiboot.c (grub_multiboot): Include the MBI in our relocation, instead of using it directly from heap. Also use `MULTIBOOT_INFO_ALIGN' to ensure it is aligned. 2009-02-21 Robert Millan Implement USB keyboard support (based on patch by Marco Gerards) * conf/i386-pc.rmk (pkglib_MODULES): Add `usb_keyboard.mod'. (usb_keyboard_mod_SOURCES, usb_keyboard_mod_CFLAGS) (usb_keyboard_mod_LDFLAGS): New variables. * term/usb_keyboard.c: New file. 2009-02-14 Vladimir Serbinenko Corrected wrong declaration * kern/disk.c: corrected declaration of grub_disk_ata_pass_through. 2009-02-14 Christian Franke * commands/lspci.c (grub_pci_classes): Add `SATA Controller'. (grub_lspci_iter): Print class code and programming interface byte. 2009-02-14 Christian Franke * gendistlist.sh: Ignore `.svn' directories. 2009-02-14 Felix Zielcke * fs/fat.c: Add 2009 to Copyright line. 2009-02-14 Christian Franke * commands/hdparm.c: New file. Provides `hdparm' command which sends ATA commands via grub_disk_ata_pass_through (). * conf/i386-pc.rmk: Add ata_pthru.mod and hdparm.mod. * disk/ata.c: Include . Move and to include/grub/ata.h. (enum grub_ata_addressing_t): Move to include/grub/ata.h. (GRUB_CDROM_SECTOR_SIZE): Remove. (GRUB_ATA_*): Move to include/grub/ata.h. (GRUB_ATAPI_*): Likewise. (enum grub_ata_commands): Likewise. (enum grub_ata_timeout_milliseconds): Likewise. (struct grub_ata_device): Likewise. (grub_ata_regset): Likewise. (grub_ata_regget): Likewise. (grub_ata_regset2): Likewise. (grub_ata_regget2): Likewise. (grub_ata_check_ready): Likewise. (grub_ata_wait_not_busy): Remove static, exported in include/grub/ata.h. (grub_ata_wait_drq): Likewise. (grub_ata_pio_read): Likewise. * disk/ata_pthru.c: New file. Provides grub_ata_pass_through () function for hdparm.mod. * include/grub/ata.h: New file, contains declarations from disk/ata.c. (enum grub_ata_commands): Add new commands for commands/hdparm.c. * include/grub/disk.h (grub_disk_ata_pass_through_parms): New struct. (grub_disk_ata_pass_through): New exported variable. * kern/disk.c (grub_disk_ata_pass_through): New variable. 2009-02-13 Colin D Bennett Support multiple fallback entries, and provide an API to support executing default+fallback menu entries. Renamed the `terminal' menu viewer to `text'. * include/grub/normal.h (grub_normal_text_menu_viewer): New global variable declaration. (grub_menu_execute_callback): New structure declaration. (grub_menu_execute_callback_t): New typedef. (grub_menu_execute_with_fallback): New function declaration. (grub_menu_get_entry): Likewise. (grub_menu_get_timeout): Likewise. (grub_menu_set_timeout): Likewise. * normal/main.c (GRUB_MOD_INIT(normal)): Refer to new variable name. * normal/menu.c (grub_wait_after_message): Moved to `normal/menu_text.c'. (draw_border): Likewise. (print_message): Likewise. (print_entry): Likewise. (print_entries): Likewise. (grub_menu_init_page): Likewise. (get_entry_number): Likewise. (print_timeout): Likewise. (run_menu): Likewise. (grub_menu_execute_entry): Likewise. (show_text_menu): Likewise. (get_and_remove_first_entry_number): New function. (grub_menu_execute_with_fallback): Likewise. (get_entry): Renamed to ... (grub_menu_get_entry): .. this and made it global. (get_timeout): Renamed to ... (grub_menu_get_timeout): ... this and made it global. (set_timeout): Renamed to ... (grub_menu_set_timeout): ... this and made it global. (grub_normal_terminal_menu_viewer): Renamed to ... (grub_normal_text_menu_viewer): ... this. * normal/menu_text.c: New file. Extracted text-menu-specific code from normal/menu.c. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add `normal/menu_text.c'. (normal_mod_SOURCES): Likewise. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * conf/i386-pc.rmk, (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. 2009-02-11 Robert Millan * util/grub.d/00_header.in: Update old reference to `font' command. 2009-02-10 Felix Zielcke * fs/fat.c (grub_fat_mount): Fix wrong comparison. Based on patch from Javier Martín. 2009-02-09 Felix Zielcke * conf/common.rmk (grub_probe_SOURCES): Move fs/ext2.c before fs/fat.c to avoid false positives with FAT. (grub_fstest_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. 2009-02-09 Felix Zielcke * fs/fat.c (grub_fat_mount): Try to avoid false positives by checking bpb.version_specific.fat12_or_fat16.fstype and bpb.version_specific.fat32.fstype. 2009-02-08 Robert Millan * fs/tar.c: Replace "fs/cpio.c" with "cpio.c". 2009-02-08 Robert Millan * Makefile.in (host_os, host_cpu): New variables. (target_os): Remove. Update all users. 2009-02-08 Marco Gerards * Makefile.in (enable_grub_emu_usb): New variable. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `disk/scsi.c'. (grub_emu_SOURCES) [grub_emu_SOURCES]: Add `disk/usbms.c', `util/usb.c', `bus/usb/usb.c' and `commands/usbtest.c'. (grub_emu_LDFLAGS): Add `$(LIBUSB)'. (pkglib_MODULES): Add `usb.mod', `uhci.mod', `ohci.mod', `usbtest.mod' and `usbms.mod'. (usb_mod_SOURCES, usb_mod_CFLAGS, usb_mod_LDFLAGS) (usbtest_mod_SOURCES, usbtest_mod_CFLAGS, usbtest_mod_LDFLAGS) (uhci_mod_SOURCES, uhci_mod_CFLAGS, uhci_mod_LDFLAGS, (ohci_mod_SOURCES, ohci_mod_CFLAGS, ohci_mod_LDFLAGS) (usbms_mod_SOURCES, usbms_mod_CFLAGS, usbms_mod_LDFLAGS): New variables. * disk/usbms.c: New file. * include/grub/usb.h: Likewise. * include/grub/usbtrans.h: Likewise. * include/grub/usbdesc.h: Likewise. * bus/usb/usbtrans.c: Likewise. * bus/usb/ohci.c: Likewise. * bus/usb/uhci.c: Likewise. * bus/usb/usbhub.c: Likewise. * bus/usb/usb.c: Likewise. * commands/usbtest.c: Likewise. * util/usb.c: Likewise. * include/grub/err.h (grub_err_t): Add `GRUB_ERR_IO'. * configure.ac: Test for libusb presence. * util/grub-emu.c (main) [HAVE_LIBUSB_H]: Call `grub_libusb_init'. 2009-02-08 Vesa Jääskeläinen * kern/mm.c: Add more comments. 2009-02-08 Robert Millan Patch from Javier Martín. * fs/ext2.c (EXT2_DRIVER_SUPPORTED_INCOMPAT): Add `EXT4_FEATURE_INCOMPAT_FLEX_BG'. 2009-02-08 Robert Millan * fs/cpio.c: Split tar functionality to ... * fs/tar.c: ... here (new file). Update all users. 2009-02-07 Robert Millan * fs/ext2.c (grub_ext2_mount): Avoid mounting filesystems with backward-incompatible features. Based on patch from Javier Martín, with some adjustments. 2009-02-07 Michael Scherer * fs/hfs.c (grub_hfsplus_iterate_dir): Treat hfs+ as case insensitive. 2009-02-07 Robert Millan * conf/common.rmk (grub_probe_SOURCES, grub_fstest_SOURCES): Move position of `disk/lvm.c' to ensure grub_init_all() always picks it after the RAID stuff. 2009-02-05 Vesa Jääskeläinen Fixes problem when running vbetest command as reported by Vladimir Serbinenko . * (grub_vbe_set_video_mode): Fixed problem with text modes. 2009-02-04 Felix Zielcke util/getroot.c (grub_util_get_grub_dev): Add support for /dev/mdNpN and /dev/md/NpN style mdraid devices. 2009-02-03 Felix Zielcke * util/unifont2pff.rb: Remove. 2009-02-03 Felix Zielcke * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Add a missing trailing `#'. 2009-02-03 Felix Zielcke * conf/i386-pc.rmk (grub_emu_SOURCES): Add `normal/menu_viewer.c'. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. 2009-02-02 Christian Franke * lib/hexdump.c (hexdump): Print at most 3 lines if data is identical. 2009-02-01 Felix Zielcke * INSTALL: Note that we now require at least autoconf 2.59 and that LZO is optional. 2009-02-01 Vesa Jääskeläinen Base on patch on bug #24154 created by Tomas Tintera . * video/i386/pc/vbe.c (grub_video_vbe_scroll): Fix downward scrolling. 2009-02-01 Vesa Jääskeläinen Based on patch on bug #25318 created by Bernhard Rosenkraenzer . * normal/parser.y (script_init): Add missing semicolon. 2009-01-31 Colin D Bennett * normal/main.c: Add include to grub/menu_viewer.h. (free_menu_entry_classes): Added. (grub_normal_menu_addentry): Added class property handling. (grub_normal_execute): Changed to use new menu viewer for menu viewing. (GRUB_MOD_INIT(normal)): Added register for text based menu viewer. * normal/menu_viewer.c: New file. * normal/menu.c (run_menu_entry): Renamed to ... (grub_menu_execute_entry): ... this and made it as global. (grub_menu_run): Renamed to ... (show_text_menu): ... this and made it local. (show_text_menu): Adapt to new function names. (grub_normal_terminal_menu_viewer): New global variable. * include/grub/menu.h: New file. * include/grub/menu_viewer.h: New file. * include/grub/normal.h: Added include to grub/menu.h. (grub_menu_entry): Moved to include/grub/menu.h. (grub_menu_entry_t): Likewise. (grub_menu): Likewise. (grub_menu_t): Likewise. (grub_normal_terminal_menu_viewer): Added. (grub_menu_execute_entry): Likewise. (grub_menu_run): Removed. * DISTLIST: Added include/grub/menu.h. Added include/grub/menu_viewer.h. Added normal/menu_viewer.c. 2009-01-31 Vesa Jääskeläinen * normal/execute.c (grub_script_execute_menuentry): Changed to use arglist for menutitle arguments. * normal/main.c (grub_normal_menu_addentry): Likewise. * normal/parser.y (menuentry): Likewise. * normal/script.c (grub_script_create_cmdmenu): Likewise. * include/grub/script.h (grub_script_cmd_menuentry): Likewise. (grub_script_create_cmdmenu): Likewise. * include/grub/normal.h (grub_normal_menu_addentry): Likewise. * conf/i386-pc.rmk (normal_mod_SOURCES): Adapt Colin D Bennett's changes. * conf/x86_64-efi.rmk (normal_mod_SOURCES): Likewise. * conf/i386-coreboot.rmk (normal_mod_SOURCES): Likewise. * conf/i386-efi.rmk (normal_mod_SOURCES): Likewise. * conf/i386-ieee1275.rmk (normal_mod_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (normal_mod_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (normal_mod_SOURCES): Likewise. 2009-01-30 Christian Franke * normal/arg.c (grub_arg_show_help): Add indentation if '\n' appears in option help text. 2009-01-27 Pavel Roskin * disk/fs_uuid.c (search_fs_uuid): Ignore case of the UUID. 2009-01-27 Vesa Jääskeläinen * commands/lsmmap.c: Add include to grub/machine/memory.h. * fs/i386/pc/pxe.c (grub_pxefs_open): Fix sign problem. * term/i386/pc/at_keyboard.c (GRUB_MOD_FINI(at_keyboard)): Use proper unregister function. 2009-01-27 Vesa Jääskeläinen * disk/scsi.c (grub_scsi_read): Fix sign problem. * term/i386/pc/vga_text.c (grub_vga_text_init_fini). Fix declaration. * util/grub-mkfont.c (usage): Fix typo. * util/elf/grub-mkimage.c (load_modules): Fix warning. 2009-01-26 Daniel Mierswa * fs/fat.c (grub_fat_uuid): Fix shift of the first two bytes. * commands/search.c (search_fs_uuid): Ignore case of the UUID. * kern/misc.c (grub_strcasecmp): New function. (grub_strcasecmp): Use grub_size_t instead of int for length. Fix return value. * include/grub/misc.h: Update function prototypes. 2009-01-26 Robert Millan * configure.ac: Fix cross-compilation check. 2009-01-22 Christian Franke * kern/misc.c (grub_vsprintf): Fix size and termination of `format2' (precision) digit string. Allow `.format2' without `format1' (width). Limit input chars for `%s' output to `format2' if specified. This is compatible with standard printf (). 2009-01-22 Christian Franke * disk/ata.c (grub_ata_wait_status): Replace by ... (grub_ata_wait_not_busy): ... this function. Checks only BSY bit, other status bits may be invalid while BSY is asserted. (grub_ata_check_ready): New function. (grub_ata_cmd): Removed. (grub_ata_wait_drq): New function. (grub_ata_strncpy): Remove inline. (grub_ata_pio_read): Reduce to actual block transfer. BSY wait and error check now done by grub_ata_wait_drq (). (grub_ata_pio_write): Likewise. (grub_atapi_identify): Set DEV before check for !BSY. Use grub_ata_wait_drq () to wait for data. (grub_ata_device_initialize): Add status register check to detect missing SATA slave devices. Add debug messages. (grub_atapi_wait_drq): Use grub_ata_wait_not_busy (). (grub_atapi_packet): Set DEV before check for !BSY. Replace transfer loop by grub_ata_pio_write (). (grub_ata_identify): Set DEV before check for !BSY. Use grub_ata_wait_drq () to wait for data. (grub_ata_setaddress): Set DEV before check for !BSY. (grub_ata_readwrite): Remove duplicate code, handle batch/rest and read/write in one loop. Fix invalid command on write. Fix incomplete command on (size % batch) == 0. Add missing error check after write of last block. Add debug messages. (grub_atapi_read): Replace transfer loop by grub_ata_pio_read (). 2009-01-19 Christian Franke * disk/ata.c (GRUB_ATAPI_REG_*): New defines. (GRUB_ATAPI_IREASON_*): Likewise. (grub_ata_pio_write): Fix timeout error return. (grub_atapi_identify): Add grub_ata_wait () after cmd. (grub_atapi_wait_drq): New function. (grub_atapi_packet): New parameter `size'. Use grub_atapi_wait_drq () and direct write instead of grub_ata_pio_write (). (grub_atapi_read): Replace grub_ata_pio_read () by a loop which reads the number of bytes requested by the device for each DRQ assertion. (grub_atapi_write): Remove old implementation, return not implemented instead. 2009-01-19 Christian Franke * disk/scsi.c (grub_scsi_read10): Use scsi->blocksize instead of 512 to calculate data size. (grub_scsi_read12): Likewise. (grub_scsi_write10): Likewise. (grub_scsi_write12): Likewise. (grub_scsi_read): Adjust size according to blocksize. Add checks for invalid blocksize and unaligned transfer. 2009-01-19 Vesa Jääskeläinen * font/font.c (grub_font_loader_init): Re-position unknown glyph. * term/gfxterm.c (write_char): Fix background rendering for wide width glyphs. 2009-01-19 Robert Millan * config.guess: Update to latest version from config git. * config.sub: Likewise. 2009-01-17 Felix Zielcke * Makefile.in: Change font compilation to use new grub-mkfont instead of java version. * util/fonttool/src/org/gnu/grub/fonttool/BDFLoader.java: Remove. * util/fonttool/src/org/gnu/grub/fonttool/CharDefs.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/CharacterRange.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/CharacterRange.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Converter.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Font.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Glyph.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/PFF2Sections.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/PFF2Writer.java: Likewise. 2009-01-16 Christian Franke * disk/ata.c (enum grub_ata_commands): Remove EXEC_DEV_DIAGNOSTICS. (enum grub_ata_timeout_milliseconds): New enum. (grub_ata_wait_status): Add parameter milliseconds. (grub_ata_cmd): Remove variable `err'. Remove wait for !DRQ to allow recovery from timed-out commands. (grub_ata_pio_read): Add parameter milliseconds. Fix error return, return grub_errno instead of REG_ERROR. (grub_ata_pio_write): Add parameter milliseconds. (grub_atapi_identify): Fix size of ATAPI IDENTIFY sector. Pass milliseconds to grub_ata_wait_status () and grub_ata_pio_read (). (grub_atapi_packet): Pass milliseconds to grub_ata_pio_write (). (grub_ata_identify): Remove variable `ataerr'. Pass milliseconds to grub_ata_wait_status (). Fix IDENTIFY timeout check. (grub_ata_device_initialize): Remove EXECUTE DEVICE DIAGNOSTICS. It is not suitable for device detection, because DEV bit is ignored, the command may run too long, and not all devices set the signature properly. (grub_ata_pciinit): Clear grub_errno before grub_ata_device_initialize (). (grub_ata_setaddress): Pass milliseconds to grub_ata_wait_status (). Fix device selection, DEV bit must be set first to address the registers of the correct device. (grub_ata_readwrite): Pass milliseconds to grub_ata_wait_status () and grub_ata_pio_read/write (). (grub_atapi_read): Pass milliseconds to grub_ata_pio_read (). (grub_atapi_write): Pass milliseconds to grub_ata_pio_write (). 2009-01-13 Carles Pina i Estany * util/grub-editenv.c (main): Use fseeko(), not fseek(). 2009-01-13 Bean * util/grub-mkfont.c (write_font): forget to remove some debug code. 2009-01-13 Bean * Makefile.in: (enable_grub_mkfont): New variable. (freetype_cflags): Likewise. (freetype_libs): Likewise. * common.rmk (bin_UTILITIES): Add `grub-mkfont' if requested. (grub_mkfont_SOURCES): New variable. (grub_mkfont_CFLAGS): Likewise. (grub_mkfont_LDFLAGS): Likewise. * configure.ac (--enable-grub-mkfont): New option. Check for freetype2 library if `--enable-grub-mkfont' is requested. (enable_grub_mkfont): New variable. (freetype_cflags): Likewise. (freetype_libs): Likewise. * util/grub-mkfont.c: New file. 2009-01-12 Christian Franke * disk/ata.c (grub_ata_pciinit): Fix bit numbers of compatibility mode check. Fix setting of compat_use[]. 2009-01-10 Robert Millan Update a few copyright years which we forgot to do in 2008 (only for files whose changes made in 2008 were copyright-significant) * Makefile.in: Add 2008 to Copyright line. * disk/ieee1275/ofdisk.c: Likewise. * disk/efi/efidisk.c: Likewise. * kern/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/mm.c: Likewise. * kern/efi/mm.c: Likewise. * boot/i386/pc/boot.S: Likewise. * genfslist.sh: Likewise. * fs/iso9660.c: Likewise. * fs/hfs.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/ufs.c: Likewise. * gensymlist.sh.in: Likewise. * genkernsyms.sh.in: Likewise. * include/grub/misc.h: Likewise. * include/grub/types.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/elf.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/util/misc.h: Likewise. * normal/execute.c: Likewise. * normal/arg.c: Likewise. * normal/completion.c: Likewise. * normal/lexer.c: Likewise. * normal/parser.y: Likewise. * normal/misc.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/hexdump.c: Likewise. * commands/terminal.c: Likewise. * commands/ls.c: Likewise. * commands/help.c: Likewise. * partmap/pc.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/multiboot_loader.c: Likewise. * loader/i386/pc/multiboot2.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * util/lvm.c: Likewise. * util/console.c: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/raid.c: Likewise. 2009-01-06 Vesa Jääskeläinen * commands/videotest.c: Removed include to grub/machine/memory.h. * conf/i386-pc.rmk (pkglib_MODULES): Removed video.mod, gfxterm.mod, videotest.mod, bitmap.mod, tga.mod, jpeg.mod, png.mod. (video_mod_SOURCES): Removed. (video_mod_CFLAGS): Likewise. (video_mod_LDFLAGS): Likewise. (gfxterm_mod_SOURCES): Likewise. (gfxterm_mod_CFLAGS): Likewise. (gfxterm_mod_LDFLAGS): Likewise. (videotest_mod_SOURCES): Likewise. (videotest_mod_CFLAGS): Likewise. (videotest_mod_LDFLAGS): Likewise. (bitmap_mod_SOURCES): Likewise. (bitmap_mod_CFLAGS): Likewise. (bitmap_mod_LDFLAGS): Likewise. (tga_mod_SOURCES): Likewise. (tga_mod_CFLAGS): Likewise. (tga_mod_LDFLAGS): Likewise. (jpeg_mod_SOURCES): Likewise. (jpeg_mod_CFLAGS): Likewise. (jpeg_mod_LDFLAGS): Likewise. (png_mod_SOURCES): Likewise. (png_mod_CFLAGS): Likewise. (png_mod_LDFLAGS): Likewise. * conf/common.rmk (pkglib_MODULES): Added video.mod, videotest.mod, bitmap.mod, tga.mod, jpeg.mod, png.mod, font.mod, gfxterm.mod (video_mod_SOURCES): Added. (video_mod_CFLAGS): Likewise. (video_mod_LDFLAGS): Likewise. (videotest_mod_SOURCES): Likewise. (videotest_mod_CFLAGS): Likewise. (videotest_mod_LDFLAGS): Likewise. (bitmap_mod_SOURCES): Likewise. (bitmap_mod_CFLAGS): Likewise. (bitmap_mod_LDFLAGS): Likewise. (tga_mod_SOURCES): Likewise. (tga_mod_CFLAGS): Likewise. (tga_mod_LDFLAGS): Likewise. (jpeg_mod_SOURCES): Likewise. (jpeg_mod_CFLAGS): Likewise. (jpeg_mod_LDFLAGS): Likewise. (png_mod_SOURCES): Likewise. (png_mod_CFLAGS): Likewise. (png_mod_LDFLAGS): Likewise. (gfxterm_mod_SOURCES): Likewise. (gfxterm_mod_CFLAGS): Likewise. (gfxterm_mod_LDFLAGS): Likewise. * term/gfxterm.c: Removed include to grub/machine/memory.h, grub/machine/console.h. 2009-01-04 Jerone Young Make on screen instructions clearer Based on patch created by Jidanni * normal/menu.c: print clearer instructions on the screen 2009-01-02 Colin D Bennett New font engine. Additional changes by Vesa Jääskeläinen to adapt to build system and fixed gfxterm.c to work with different sized fonts. * configure.ac: Changed UNIFONT_HEX to UNIFONT_BDF. * configure: Re-generated. * DISTLIST: Removed font/manager.c. Added font/font.c. Added font/font_cmd.c. * Makefile.in: Changed UNIFONT_HEX to UNIFONT_BDF. Added Font tool compilation. * include/grub/misc.h (grub_utf8_to_ucs4): Changed prototype. Changed users. * kern/misc.c (grub_utf8_to_ucs4): Changed prototype. * kern/term.c: Changed users of grub_utf8_to_ucs4. * normal/menu.c: Likewise. * conf/common.rmk (font_mod_SOURCES): Removed font/manager.c. (font_mod_SOURCES): Added font/font_cmd.c, font/font.c. * include/grub/font.h: Replaced with new file. * include/grub/video.h (GRUB_VIDEO_MODE_TYPE_ALPHA): Changed value. (GRUB_VIDEO_MODE_TYPE_DOUBLE_BUFFERED): Likewise. (GRUB_VIDEO_MODE_TYPE_COLOR_MASK): Likewise. (GRUB_VIDEO_MODE_TYPE_1BIT_BITMAP): Added. (grub_video_blit_format): Added GRUB_VIDEO_BLIT_FORMAT_1BIT_PACKED. (grub_video_mode_info): Added bg_red, bg_green, bg_blue, bg_alpha, fg_red, fg_green, fg_blue, fg_alpha. (grub_video_adapter): Removed blit_glyph. (grub_video_blit_glyph): Removed. * font/manager.c: Removed file. * font/font.c: New file. * font/font_cmd.c: Likewise. * video/video.c (grub_video_blit_glyph): Removed. * video/i386/pc/vbe.c (grub_video_vbe_map_rgb): Added 1-bit support. (grub_video_vbe_map_rgba): Likewise. (grub_video_vbe_unmap_color_int): Likewise. (grub_video_vbe_blit_glyph): Removed. (grub_video_vbe_adapter): Removed blit_glyph. * video/i386/pc/vbeutil.c (get_data_ptr): Added 1-bit support. (get_pixel): Likewise. (set_pixel): Likewise. * commands/videotest.c (grub_cmd_videotest): Added more tests for fonts. * term/gfxterm.c: Adapted to new font engine. * term/i386/pc/vesafb.c: Marked as deprecated. Made it compile. * term/i386/pc/vga.c: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/BDFLoader.java: New file. * util/fonttool/src/org/gnu/grub/fonttool/CharDefs.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/CharacterRange.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/CharacterRange.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Converter.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Font.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/Glyph.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/PFF2Sections.java: Likewise. * util/fonttool/src/org/gnu/grub/fonttool/PFF2Writer.java: Likewise. * util/grub.d/00_header.in: Changed to use new loadfont command. * util/grub-mkconfig_lib.in: Changed font extension. 2008-12-28 Felix Zielcke * util/getroot.c (grub_util_get_grub_dev): Add support for /dev/md/dNNpNN style partitionable mdraid devices. 2008-12-12 Alex Smith * fs/i386/pc/pxe.c (grub_pxefs_open): Handle the one open connection at a time limit of the PXE TFTP API correctly. (grub_pxefs_close): Likewise. 2008-11-29 Robert Millan * disk/ata.c (grub_ata_pciinit): Handle errors raised by grub_ata_device_initialize() calls. 2008-11-28 Krzysztof Smiechowicz * fs/affs.c (grub_affs_iterate_dir): Return failure when directory iteration failed. * fs/sfs.c (grub_sfs_iterate_dir): Likewise. 2008-11-28 Robert Millan Fix build on powerpc-ieee1275. Based on patch created by Manoel Abranches . * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Add `kern/ieee1275/mmap.c'. * include/grub/powerpc/ieee1275/memory.h: New file. Provide grub-install on coreboot. * conf/i386-coreboot.rmk (sbin_SCRIPTS): Add `grub-install'. (grub_install_SOURCES): New variable. * util/i386/pc/grub-install.in: Add a few condition checks to make it usable on coreboot. 2008-11-25 Felix Zielcke * util/grub-fstest.c (grub_term_get_current_input): Change return type to `grub_term_input_t'. (grub_term_get_current_output): Change return type to `grub_term_output_t'. 2008-11-22 Robert Millan Fix breakage on coreboot due to declaration mismatch. * term/i386/pc/vga_text.c (grub_vga_text_init_fini): New function. (grub_vga_text_term): Use grub_vga_text_init_fini() instead of grub_vga_text_cls(). * kern/i386/loader.S (grub_multiboot_backward_relocator): Improve comments. Avoid copying one more byte than necessary (just in case). * conf/powerpc-ieee1275.rmk (kernel_elf_LDFLAGS): Change link address to 0x200000 (avoids trouble with some OFW implementations, and matches with the one in Yaboot). Reported by Manoel Abranches 2008-11-20 Robert Millan * kern/i386/coreboot/init.c (grub_time_tics): Remove variable. (grub_get_rtc, grub_exit): Abort with grub_fatal() if called. * util/grub-mkconfig_lib.in (grub_warn): New function. (convert_system_path_to_grub_path): Use grub_warn() when issuing warnings, to obtain consistent formatting. * util/grub.d/00_header.in: Likewise. * util/update-grub_lib.in: Likewise. * loader/i386/linux.c (allocate_pages): Fix a warning. Move comment text to `#error' stanza. Harmonize ieee1275's grub_available_iterate() with the generic grub_machine_mmap_iterate() interface (fixes a recently-introduced build problem on i386-ieee1275): * kern/ieee1275/openfw.c (grub_available_iterate): Moved from here ... * kern/ieee1275/mmap.c (grub_machine_mmap_iterate): ... here. Add third parameter `type'. Update all users of this function. * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add `kern/ieee1275/mmap.c'. * kern/ieee1275/init.c * include/grub/ieee1275/ieee1275.h (grub_available_iterate): Replace with ... (grub_machine_mmap_iterate): ... this. * include/grub/i386/pc/memory.h (grub_machine_mmap_iterate): Change return type to `grub_err_t'. Update all implementations of this function prototype. * include/grub/i386/coreboot/memory.h (grub_machine_mmap_iterate): Likewise. Add `lsmmap' command (lists firmware-provided memory map): * commands/lsmmap.c: New file. * conf/i386-pc.rmk (pkglib_MODULES): Add `lsmmap.mod'. (lsmmap_mod_SOURCES, lsmmap_mod_CFLAGS, lsmmap_mod_LDFLAGS): New variables. * conf/powerpc-ieee1275.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. 2008-11-19 Robert Millan * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Fix a typo. * loader/i386/linux.c (grub_rescue_cmd_initrd): Implement a few needed constraints to initrd allocation (based on code from loader/i386/pc/linux.c). Without them, initrd was allocated too high for Linux to find it. 2008-11-14 Robert Millan * fs/cpio.c (grub_cpio_open): Compare `name' and `fn' by hand in order to cope with duplicate slashes. 2008-11-14 Robert Millan * include/grub/i386/coreboot/memory.h (GRUB_MEMORY_MACHINE_LOWER_SIZE): Redefine to match with GRUB_MEMORY_MACHINE_UPPER_START (0x100000). We don't want to mess with lower memory, because it is used in the Linux loader. * loader/i386/linux.c (allocate_pages): Allocate `real_mode_mem' in an appropriate place in lower memory, between 0x10000 and 0x90000, like loader/i386/efi/linux.c does. Linux often panics if real_mode_mem is in our heap (probably as a result of it being corrupted during decompression). Add #error instance with comment to explain why this loader isn't currently usable on PC/BIOS. 2008-11-14 Robert Millan * term/i386/pc/serial.c [! GRUB_MACHINE_PCBIOS] (GRUB_SERIAL_PORT_NUM): Fix miscalculation. 2008-11-12 Robert Millan Make loader/i386/linux.c buildable on i386-pc (although disabled). * include/grub/i386/pc/init.h: Include `'. (struct grub_machine_mmap_entry, grub_machine_mmap_iterate): Move from here ... * include/grub/i386/pc/memory.h: ... to here. 2008-11-12 Robert Millan Fix build problems on i386-ieee1275 and *-efi (introduced by vga_text split). * include/grub/i386/pc/console.h: Include `'. (grub_console_cur_color, grub_console_real_putchar) (grub_console_putchar, grub_console_getcharwidth, grub_console_getwh) (grub_console_setcolorstate, grub_console_setcolor) (grub_console_getcolor): Move from here ... * include/grub/i386/vga_common.h: ... to here (new file). * term/i386/pc/vga_text.c: Replace `' with `' and `' with `'. * term/i386/vga_common.c: Replace `' with `'. 2008-11-12 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Add `term/i386/vga_common.c'. * conf/i386.rmk (pkglib_MODULES): Add `vga_text.mod'. (vga_text_mod_SOURCES, vga_text_mod_CFLAGS, vga_text_mod_LDFLAGS): New variables. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Replace `term/i386/pc/console.c' with `term/i386/vga_common.c'. * kern/i386/coreboot/init.c (grub_machine_init): Replace call to grub_console_init() with call to grub_vga_text_init(). (grub_machine_fini): Replace call to grub_console_fini() with call to grub_vga_text_fini() and grub_at_keyboard_fini(). * include/grub/i386/pc/console.h: Include `'. (grub_console_putchar, grub_console_getcharwidth, grub_console_getwh) (grub_console_setcolorstate, grub_console_setcolor) (grub_console_getcolor): New function prototypes. * term/i386/pc/vga_text.c: Include `'. (grub_vga_text_getxy, grub_vga_text_gotoxy, grub_vga_text_cls) (grub_vga_text_setcursor): Static-ize. (grub_vga_text_term): New structure. (GRUB_MOD_INIT(vga_text), GRUB_MOD_FINI(vga_text)): New functions. * term/i386/pc/console.c: Remove `'. (grub_console_cur_color, grub_console_standard_color) (grub_console_normal_color, grub_console_highlight_color) (map_char, grub_console_putchar, grub_console_getcharwidth) (grub_console_getwh, grub_console_setcolorstate, grub_console_setcolor) (grub_console_getcolor): Move from here ... * term/i386/vga_common.c: ... to here (same function names). 2008-11-12 Robert Millan Use newly-added Multiboot support in coreboot. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Replace `kern/i386/coreboot/mmap.c' with `kern/i386/multiboot_mmap.c'. * kern/i386/coreboot/startup.S: Enable Multiboot header, fix its alignment, set `MULTIBOOT_MEMORY_INFO' flag. (codestart): Store the MBI in `startup_multiboot_info' when we're being loaded using Multiboot. * kern/i386/coreboot/init.c (grub_machine_init): Move grub_at_keyboard_init() call to beginning of function (useful for debugging). Call grub_machine_mmap_init() before attempting to use grub_machine_mmap_iterate(). (grub_lower_mem, grub_upper_mem): Move from here ... * kern/i386/multiboot_mmap.c (grub_lower_mem, grub_upper_mem): ... to here (new file). * include/grub/i386/coreboot/memory.h (grub_machine_mmap_init): New function prototype. 2008-11-12 Robert Millan Fix a regression introduced by the at_keyboard.mod split. Because some terminals are default on some platforms and non-default on others, the first terminal being registered determines which is going to be default. * kern/term.c (grub_term_register_input): If this is the first terminal being registered, set it as the current one. (grub_term_register_output): Likewise. * term/efi/console.c (grub_console_init): Do not call grub_term_set_current_output() or grub_term_set_current_input(). * term/ieee1275/ofconsole.c (grub_console_init): Likewise. * term/i386/pc/console.c (grub_console_init): Likewise. (grub_console_fini): Do not call grub_term_set_current_input() (but leave grub_term_set_current_output() to restore text mode). 2008-11-10 Robert Millan * util/grub.d/00_header.in: Add backward compatibility check for versions of terminal.mod that don't understand `terminal_input' or `terminal_output'. 2008-11-09 Robert Millan * commands/terminal.c (GRUB_MOD_FINI(terminal)): Unregister `terminal_input' / `terminal_output', not `terminal'. 2008-11-08 Robert Millan * Makefile.in (include_DATA): Fix srcdir=. assumption. (DISTCLEANFILES): Add `build_env.mk'. 2008-11-08 Robert Millan * term/i386/pc/vesafb.c (grub_vesafb_term): Change type to `struct grub_term_output'. Remove `.checkkey' and `.getkey' members. Update all users. * util/console.c (grub_ncurses_term): Split in ... (grub_ncurses_term_input): ... this, and ... (grub_ncurses_term_output): ... this. Update all users. * term/ieee1275/ofconsole.c: Remove stale `#endif'. 2008-11-08 Robert Millan * Makefile.in (PKGLIB): Add $(pkglib_BUILDDIR). (PKGDATA): Add $(pkgdata_SRCDIR). (pkglib_BUILDDIR): New variable. (pkgdata_SRCDIR): New variable. (build_env.mk): New target. (include_DATA): New variable. (install-local): Install $(include_DATA) files in $(includedir). 2008-11-07 Pavel Roskin * gendistlist.sh: Use C locale for sorting to ensure consistent output on all systems. * util/grub.d/00_header.in: Remove incorrect space before "serial". 2008-11-07 Robert Millan * include/multiboot2.h (struct multiboot_header): Add `flags' member as per specification. * loader/multiboot2.c (grub_multiboot2): Fix Multiboot2 header check. * loader/multiboot_loader.c (find_multi_boot2_header): New function (based on find_multi_boot1_header). (grub_rescue_cmd_multiboot_loader): Check for Multiboot2 header, using find_multi_boot2_header(), and abort if neither Multiboot or Multiboot headers were found. 2008-11-07 Robert Millan Modularize at_keyboard.mod: * conf/i386.rmk (pkglib_MODULES): Add `at_keyboard.mod'. (at_keyboard_mod_SOURCES, at_keyboard_mod_CFLAGS) (at_keyboard_mod_LDFLAGS): New variables. Actual terminal split: * include/grub/term.h (struct grub_term): Split in ... (struct grub_term_input): ... this, and ... (struct grub_term_output): ... this. Update all users. (grub_term_set_current): Split in ... (grub_term_set_current_input): ... this, and ... (grub_term_set_current_output): ... this. (grub_term_get_current): Split in ... (grub_term_get_current_input): ... this, and ... (grub_term_get_current_output): ... this. (grub_term_register): Split in ... (grub_term_register_input): ... this, and ... (grub_term_register_output): ... this. (grub_term_unregister): Split in ... (grub_term_unregister_input): ... this, and ... (grub_term_unregister_output): ... this. (grub_term_iterate): Split in ... (grub_term_iterate_input): ... this, and ... (grub_term_iterate_output): ... this. * kern/term.c (grub_term_list): Split in ... (grub_term_list_input): ... this, and ... (grub_term_list_output): ... this. Update all users. (grub_cur_term): Split in ... (grub_cur_term_input): ... this, and ... (grub_cur_term_output): ... this. Update all users. (grub_term_set_current): Split in ... (grub_term_set_current_input): ... this, and ... (grub_term_set_current_output): ... this. (grub_term_get_current): Split in ... (grub_term_get_current_input): ... this, and ... (grub_term_get_current_output): ... this. (grub_term_register): Split in ... (grub_term_register_input): ... this, and ... (grub_term_register_output): ... this. (grub_term_unregister): Split in ... (grub_term_unregister_input): ... this, and ... (grub_term_unregister_output): ... this. (grub_term_iterate): Split in ... (grub_term_iterate_input): ... this, and ... (grub_term_iterate_output): ... this. * kern/misc.c (grub_abort): Split use of grub_term_get_current() into a check for input and one for output (and only attempt to get keys from user when input works). * util/grub-probe.c (grub_term_get_current): Split in ... (grub_term_get_current_input): ... this, and ... (grub_term_get_current_output): ... this. * util/grub-fstest.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/grub-editenv.c: Likewise. Portability adjustments: * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Remove `term/i386/pc/at_keyboard.c'. * kern/ieee1275/init.c [__i386__] (grub_machine_init): Remove call to grub_keyboard_controller_init() (now handled by terminal .init). * kern/i386/coreboot/init.c (grub_machine_init): Add call to grub_at_keyboard_init(). * include/grub/i386/ieee1275/console.h (grub_keyboard_controller_init) (grub_console_checkkey, grub_console_getkey): Remove (now provided by at_keyboard.mod via input terminal interface). * include/grub/i386/coreboot/console.h: Convert into a stub for `'. Migrate full terminals to new API: * term/efi/console.c (grub_console_term): Split into ... (grub_console_term_input): ... this, and ... (grub_console_term_output): ... this. Update all users. * term/ieee1275/ofconsole.c: Remove __i386__ hack. (grub_ofconsole_init): Split into ... (grub_ofconsole_init_input): ... this, and ... (grub_ofconsole_init_output): ... this. (grub_ofconsole_term): Split into ... (grub_ofconsole_term_input): ... this, and ... (grub_ofconsole_term_output): ... this. Update all users. * term/i386/pc/serial.c (grub_serial_term): Split into ... (grub_serial_term_input): ... this, and ... (grub_serial_term_output): ... this. Update all users. * term/i386/pc/console.c (grub_console_term): Split into ... (grub_console_term_input): ... this, and ... (grub_console_term_output): ... this. Update all users. (grub_console_term_input): Only enable it on PC/BIOS platform. (grub_console_init): Remove grub_keyboard_controller_init() call. Migrate input terminals to new API: * term/i386/pc/at_keyboard.c: Replace `cpu' and `machine' with `i386' and `i386/pc' to enable build on x86_64 (this driver is i386-specific anyway). (grub_console_checkkey): Rename to ... (grub_at_keyboard_checkkey): ... this. Static-ize. Update all users. (grub_keyboard_controller_orig): New variable. (grub_console_getkey): Rename to ... (grub_at_keyboard_getkey): ... this. Static-ize. Update all users. (grub_keyboard_controller_init): Static-ize. Save original controller value so that it can be restored ... (grub_keyboard_controller_fini): ... here (new function). (grub_at_keyboard_term): New structure. (GRUB_MOD_INIT(at_keyboard), GRUB_MOD_FINI(at_keyboard)): New functions. Migrate output terminals to new API: * term/i386/pc/vga.c (grub_vga_term): Change type to `struct grub_term_output'. Remove `.checkkey' and `.getkey' members. Update all users. * term/gfxterm.c (grub_video_term): Change type to `struct grub_term_output'. Remove `.checkkey' and `.getkey' members. Update all users. * include/grub/i386/pc/console.h (grub_console_checkkey) (grub_console_getkey): Do not export (no longer needed by gfxterm, etc). Migrate `terminal' command and userland tools to new API: * commands/terminal.c (grub_cmd_terminal): Split into ... (grub_cmd_terminal_input): ... this, and ... (grub_cmd_terminal_output): ... this. (GRUB_MOD_INIT(terminal)): Split `terminal' command in two commands: `terminal_input' and `terminal_output'. * util/grub.d/00_header.in: Adjust `terminal' calls to new `terminal_input' / `terminal_output' API. * util/grub-mkconfig.in: Export ${GRUB_TERMINAL_INPUT} and ${GRUB_TERMINAL_OUTPUT} instead of ${GRUB_TERMINAL} (and if user provided ${GRUB_TERMINAL}, convert it). 2008-11-04 Robert Millan * util/grub.d/10_freebsd.in: New file. Generate grub configuration for FreeBSD. * conf/common.rmk (grub-mkconfig_SCRIPTS): Add 10_freebsd. 2008-11-03 Bean * kern/elf.c (grub_elf32_load): Revert to previous code. (grub_elf64_load): Likewise. * loader/i386/bsd.c (grub_bsd_elf32_hook): Change return address. 2008-11-01 Robert Millan * Makefile.in (CPPFLAGS): Fix builddir=. assumption. (TARGET_CPPFLAGS): Likewise. * genmk.rb (mod_src): Fix builddir=. and srcdir=. assumptions. 2008-11-01 Carles Pina i Estany * normal/menu.c (run_menu): Add Previous and Next Page keys in menu. 2008-10-29 Guillem Jover * disk/lvm.c (grub_lvm_scan_device): Fix error recovery by delaying the addition of objects until the code is not going to be able to fail. 2008-10-29 Guillem Jover * disk/lvm.c (grub_lvm_scan_device): Fix possible NULL value handling (add a missing NULL check, and correct them by moving the pointer operations after the actual check). 2008-10-29 Robert Millan * util/i386/pc/grub-install.in: Handle empty string as output from make_system_path_relative_to_its_root(). 2008-10-05 Hans Lambermont * disk/lvm.c (grub_lvm_scan_device): Allocate buffer space for the circular metadata worst case scenario. If the metadata is circular then copy the wrap in place. * include/grub/lvm.h: Add GRUB_LVM_MDA_HEADER_SIZE, from the LVM2 project lib/format_text/layout.h Circular metadata bug found and patch debugged by Jan Derk Gerlings. 2008-10-03 Felix Zielcke * util/i386/pc/grub-install.in: Source grub-mkconfig_lib instead of update-grub_lib. 2008-10-03 Felix Zielcke * util/update-grub_lib.in: Mention filename in warning message. 2008-09-29 Felix Zielcke * NEWS: Update for rename of update-grub to grub-mkconfig. 2008-09-29 Felix Zielcke * util/update-grub_lib.in: Copy to ... * util/grub-mkconfig_lib.in: ... this. Update all users. * util/update-grub_lib.in: Make it a stub to `grub-mkconfig_lib.in'. * util/update-grub.in: Rename to ... * util/grub-mkconfig.in: ... this. Update all users. Remove `-y' option. Add `--output' option to allow users to specify the generated configuration file. Default to stdout. (update_grub_dir): Rename to ... (grub_mkconfig_dir): ... this. (grub_cfg): Default to an empty string. * conf/common.rmk (update-grub): Rename to ... (grub-mkconfig): ... this. (update-grub_lib): Copy to ... (grub-mkconfig_lib): ... this. (update-grub_SCRIPTS): Copy to ... (grub-mkconfig_SCRIPTS): ... this. Update all users. (update-grub_DATA): Rename to ... (grub-mkconfig_DATA): ... this. 2008-09-28 Robert Millan * fs/iso9660.c (struct grub_iso9660_primary_voldesc): Rename `created' to `modified'. Add the real `created' field. (grub_iso9660_uuid): Use `modified' rather than `created' for constructing the UUID. 2008-09-28 Felix Zielcke fs/jfs.c (grub_jfs_find_file): Treat multiple slashes like one. Based on code from Tomas Ebenlendr . 2008-09-28 Bean * fs/ntfs.c (grub_ntfs_iterate_dir): Fix a bug in the previous patch. Thanks to Christian Franke for finding this bug. 2008-09-25 Robert Millan * util/grub-mkdevicemap.c (make_device_map): Actually replace all instances of grub_util_get_disk_name() (see previous commit). 2008-09-25 Robert Millan * conf/i386-pc.rmk (grub_mkdevicemap_SOURCES): Remove `util/i386/get_disk_name.c'. * conf/i386-efi.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/powerpc-ieee1275.rmk (grub_mkdevicemap_SOURCES): Remove `util/ieee1275/get_disk_name.c'. * include/grub/util/misc.h (grub_util_get_disk_name): Remove. * util/ieee1275/get_disk_name.c: Remove file. * util/i386/get_disk_name.c: Remove file. * util/grub-mkdevicemap.c (make_device_map): Back to hardcoding "hd%d" for device.map entries, rather than using grub_util_get_disk_name(). 2008-09-24 Carles Pina i Estany * disk/dmraid_nvidia.c (grub_dmraid_nv_detect): Fix `unused parameter' warning. * commands/i386/pc/pxecmd.c (dmraid_nvidia): Likewise. 2008-09-24 Carles Pina i Estany * include/grub/i386/pc/console.h (GRUB_TERM_NPAGE): Changed to 0x5100. (GRUB_TERM_PPAGE): Changed to 0x4900. 2008-09-24 Robert Millan * include/grub/powerpc/ieee1275/console.h (GRUB_CONSOLE_KEY_*): Remove macros (they were i386-pc specific). * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/efi/console.h: Likewise. 2008-09-22 Bean * fs/ntfs.c (grub_ntfs_iterate_dir): Fix a rare case where $BITMAP is resident and in attribute list. * include/grub/ntfs.h (BMP_LEN): Removed. 2008-09-22 Bean * disk/ata.c (grub_atapi_open): Initialize devfnd, no need to set scsi->name and scsi->luns, as they will be set in grub_scsi_open. * disk/scsi.c (grub_scsi_open): Don't call p->close (scsi) here when error occurs, as grub_disk_open will call grub_disk_close, which will call p->close (scsi). 2008-09-21 Felix Zielcke * configure.ac (AC_INIT): Quote `GRUB' string and version number. (AC_PREREQ): Bumped to 2.59. (AC_TRY_COMPILE): Replace obsolete macro with ... (AC_COMPILE_IFELSE): ... this. * aclocal.m4 (AC_TRY_LINK): Replace obsolete macro with ... (AC_LINK_IFELSE): ... this. 2008-09-21 Felix Zielcke * autogen.sh: Add a call to `gendistlist.sh'. 2008-09-19 Christian Franke * aclocal.m4 (grub_CHECK_ENABLE_EXECUTE_STACK): New function. * configure.ac: Call grub_CHECK_ENABLE_EXECUTE_STACK. * include/grub/misc.h [NEED_ENABLE_EXECUTE_STACK]: Export __enable_execute_stack() to modules. * kern/misc.c [NEED_ENABLE_EXECUTE_STACK] (__enable_execute_stack): New function. 2008-09-09 Felix Zielcke * Makefile.in (RMKFILES): Add `i386.rmk' and `x86_64-efi.rmk'. Sort the list. 2008-09-09 Felix Zielcke * util/hostdisk.c: Replace #include with #include . 2008-09-08 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Skip segments when their filesz is zero (grub_file_read() interprets zero-size as "read until EOF", which results in memory corruption). Use `lowest_segment' rather than 0 for calculating the current segment load address. 2008-09-08 Robert Millan * util/hostdisk.c (open_device): Replace a grub_util_info() call with grub_dprintf("hostdisk", ...), as it was so verbose that it clobbered useful information. 2008-09-08 Robert Millan * include/grub/util/biosdisk.h: Move to ... * include/grub/util/hostdisk.h: ... here. Update all users. * util/biosdisk.c: Move to ... * util/hostdisk.c: ... here. Update all users. 2008-09-07 Robert Millan * loader/i386/pc/multiboot.c (mmap_addr, mmap_length): Remove variables. (grub_multiboot): Move `mbi' allocation upwards, so that mmap address and length can be stored directly in the `mbi->mmap_addr' and `mbi->mmap_length' struct fields. 2008-09-07 Robert Millan * conf/i386.rmk: New file. Provides declaration for building `cpuid.mod'. * conf/i386-pc.rmk (pkglib_MODULES): Remove `cpuid.mod'. (cpuid_mod_SOURCES, cpuid_mod_CFLAGS, cpuid_mod_LDFLAGS): Remove variables. Include `conf/i386.mk'. * conf/i386-efi.rmk: Likewise. * conf/x86_64-efi.rmk: Likewise. * conf/i386-coreboot.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. 2008-09-07 Vesa Jääskeläinen Based on patch created by Colin D Bennett . Adds optimization support for BGR based modes. * include/grub/i386/pc/vbeblit.h (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8A8) Removed. (grub_video_i386_vbeblit_R8G8B8X8_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_index): Likewise. (grub_video_i386_vbeblit_replace_directN): Added. (grub_video_i386_vbeblit_replace_BGRX8888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_BGRX8888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_BGR888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_BGR888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_RGBX8888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_RGB888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_index_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_index_RGB888): Likewise. (grub_video_i386_vbeblit_blend_BGRA8888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_BGR888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_RGBA8888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_RGB888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_index_RGBA8888): Likewise. * include/grub/i386/pc/vbefill.h (grub_video_i386_vbefill_R8G8B8A8) Removed. (grub_video_i386_vbefill_R8G8B8): Likewise. (grub_video_i386_vbefill_index): Likewise. (grub_video_i386_vbefill_direct32): Added. (grub_video_i386_vbefill_direct24): Likewise. (grub_video_i386_vbefill_direct16): Likewise. (grub_video_i386_vbefill_direct8): Likewise. * include/grub/video.h (grub_video_blit_format): Removed GRUB_VIDEO_BLIT_FORMAT_R8G8B8A8, GRUB_VIDEO_BLIT_FORMAT_R8G8B8. (grub_video_blit_format): Added GRUB_VIDEO_BLIT_FORMAT_RGBA_8888, GRUB_VIDEO_BLIT_FORMAT_BGRA_8888, GRUB_VIDEO_BLIT_FORMAT_RGB_888, GRUB_VIDEO_BLIT_FORMAT_BGR_888, GRUB_VIDEO_BLIT_FORMAT_RGB_565, GRUB_VIDEO_BLIT_FORMAT_BGR_565. * video/video.c (grub_video_get_blit_format): Updated to use new blit formats. Added handling for 16 bit color modes. * video/i386/pc/vbe.c (grub_video_vbe_fill_rect): Updated to use new fillers. (common_blitter): Updated to use new blitters. * video/i386/pc/vbeblit.c (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8A8): Removed. (grub_video_i386_vbeblit_R8G8B8X8_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_index): Likewise. (grub_video_i386_vbeblit_replace_directN): Added. (grub_video_i386_vbeblit_replace_BGRX8888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_BGRX8888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_BGR888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_BGR888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_RGBX8888_RGB888): Likewise. (grub_video_i386_vbeblit_replace_RGB888_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_index_RGBX8888): Likewise. (grub_video_i386_vbeblit_replace_index_RGB888): Likewise. (grub_video_i386_vbeblit_blend_BGRA8888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_BGR888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_RGBA8888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_RGB888_RGBA8888): Likewise. (grub_video_i386_vbeblit_blend_index_RGBA8888): Likewise. * video/i386/pc/vbefill.c (grub_video_i386_vbefill_R8G8B8A8): Removed. (grub_video_i386_vbefill_R8G8B8): Likewise. (grub_video_i386_vbefill_index): Likewise. (grub_video_i386_vbefill_direct32): Added. (grub_video_i386_vbefill_direct24): Likewise. (grub_video_i386_vbefill_direct16): Likewise. (grub_video_i386_vbefill_direct8): Likewise. * video/readers/jpeg.c (grub_jpeg_decode_sos): Adapt to new blitter types. * video/readers/tga.c (grub_video_reader_tga): Adapt to new blitter types. * video/readers/png.c (grub_png_decode_image_header): Adapt to new blitter types. * video/bitmap.c (grub_video_bitmap_create): Adapt to new blitter types. 2008-09-06 Felix Zielcke * disk/raid.c (insert_array): Set `array->chunk_size' to 64 for RAID level 1. 2008-09-06 Felix Zielcke * fs/iso9660.c (grub_iso9660_date): New structure. (grub_iso9660_primary_voldesc): Add `grub_iso9660_date' member. (grub_iso9660_uuid): New function. 2008-09-05 Bean * fs/fshelp.c (grub_fshelp_find_file): Handle case insensitive names. * fs/ntfs.c (list_file): Ignore names in DOS namespace, set the case insensitive bit for names in Win32 and Win32 & DOS namespace. * include/grub/fshelp.h (GRUB_FSHELP_CASE_INSENSITIVE): New macro. * include/grub/types.h (LONG_MAX): Likewise. 2008-09-04 Felix Zielcke * util/getroot.c: Include . (grub_util_get_grub_dev): Rewrite to use asprintf for mdraid devices, add support for /dev/md/N devices and handle LVM double dash escaping. 2008-09-04 Felix Zielcke * config.guess: Update to latest version from config git. * config.sub: Likewise. 2008-09-03 Robert Millan * disk/scsi.c (grub_scsi_open): Remove size limit when printing `disk->total_sectors'. 2008-09-01 Colin D Bennett * include/grub/normal.h: Fixed incorrect comment for GRUB_COMMAND_FLAG_NO_ARG_PARSE. 2008-09-01 Colin D Bennett * commands/i386/pc/vbeinfo.c (grub_cmd_vbeinfo): Replaced constant values with defines. * include/grub/i386/pc/vbe.h (GRUB_VBE_MODEATTR_SUPPORTED): Added. (GRUB_VBE_MODEATTR_RESERVED_1): Likewise. (GRUB_VBE_MODEATTR_BIOS_TTY_OUTPUT_SUPPORT): Likewise. (GRUB_VBE_MODEATTR_COLOR): Likewise. (GRUB_VBE_MODEATTR_GRAPHICS): Likewise. (GRUB_VBE_MODEATTR_VGA_COMPATIBLE): Likewise. (GRUB_VBE_MODEATTR_VGA_WINDOWED_AVAIL): Likewise. (GRUB_VBE_MODEATTR_LFB_AVAIL): Likewise. (GRUB_VBE_MODEATTR_DOUBLE_SCAN_AVAIL): Likewise. (GRUB_VBE_MODEATTR_INTERLACED_AVAIL): Likewise. (GRUB_VBE_MODEATTR_TRIPLE_BUF_AVAIL): Likewise. (GRUB_VBE_MODEATTR_STEREO_AVAIL): Likewise. (GRUB_VBE_MODEATTR_DUAL_DISPLAY_START): Likewise. (GRUB_VBE_MEMORY_MODEL_TEXT): Likewise. (GRUB_VBE_MEMORY_MODEL_CGA): Likewise. (GRUB_VBE_MEMORY_MODEL_HERCULES): Likewise. (GRUB_VBE_MEMORY_MODEL_PLANAR): Likewise. (GRUB_VBE_MEMORY_MODEL_NONCHAIN4_256): Likewise. (GRUB_VBE_MEMORY_MODEL_YUV): Likewise. 2008-08-31 Robert Millan * loader/i386/pc/multiboot.c (grub_get_multiboot_mmap_len): Fix declaration. (grub_multiboot): Fix a few warnings. 2008-08-31 Robert Millan * loader/i386/pc/multiboot.c: Update comment not to say that boot_device support is unimplemented. 2008-08-31 Robert Millan * loader/i386/pc/multiboot.c: Update comment not to say that a.out or memory map support are unimplemented. 2008-08-31 Colin D Bennett * util/i386/pc/grub-mkrescue.in: Support multiple overlay directories. 2008-08-31 Colin D Bennett * commands/i386/pc/vbeinfo.c (grub_cmd_vbeinfo): Show VBE version and total video memory in 'vbeinfo' output; show color format details for each video mode. 2008-08-30 Pavel Roskin * util/genmoddep.c: Remove for real this time. * DISTLIST: Remove util/genmoddep.c. 2008-08-30 Robert Millan * kern/i386/pc/startup.S (multiboot_header): Force 4-byte alignment as required by Multiboot spec (it was already 4-byte aligned, but only by chance). 2008-08-29 Pavel Roskin * kern/powerpc/ieee1275/crt0.S: Rename to ... * kern/powerpc/ieee1275/startup.S: ... this. * conf/powerpc-ieee1275.rmk: Adjust for the above. * DISTLIST: Likewise. * kern/powerpc/ieee1275/crt0.S: Include grub/symbol.h and grub/cpu/kernel.h. Add start label for consistency with other platforms. Add grub_prefix immediately after start. Add jump to the code after grub_prefix. * include/grub/powerpc/kernel.h: Provide valid values for GRUB_KERNEL_CPU_PREFIX and GRUB_KERNEL_CPU_DATA_END. 2008-08-29 Bean * configure.ac: Change host_os to cygwin for mingw. (asprintf): New check for function. * include/grub/symbol.h: Replace #ifndef __CYGWIN__ with #if ! defined (__CYGWIN__) && ! defined (__MINGW32__). * include/grub/util/misc.h: #include and , declare asprintf if HAVE_ASPRINTF is not set, declare fseeko, ftello, sync, sleep and grub_util_get_disk_size for mingw. * util/biosdisk.c (grub_util_biosdisk_open): Use grub_util_get_disk_size to get size in mingw. (open_device): Use flag O_BINARY if it's defined. (find_root_device): Add dummy code for mingw. * util/grub-mkdevicemap.c (get_floppy_disk_name): Return 0 for mingw. (get_ide_disk_name): Return //./PHYSICALDRIVE%d for mingw. (get_scsi_disk_name): Return 0 for mingw. * util/hostfs.c: #include . (grub_hostfs_open): Use "rb" flag to open file, use grub_util_get_disk_size to get disk size for mingw. * util/misc.c: #include and in mingw. (asprintf): New function if HAVE_ASPRINTF is not set. (sync): New function for mingw. (sleep): Likewise. (grub_util_get_disk_size): Likewise. 2008-08-28 Pavel Roskin * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Add kern/time.c. 2008-08-28 Robert Millan * util/biosdisk.c (find_grub_drive): Declare missing `i' variable. 2008-08-28 Robert Millan Change find_grub_drive() syntax so it doesn't prevent it from detecting NULL names as errors. * util/biosdisk.c (find_grub_drive): Move free slot search code from here ... (find_free_slot): ... to here. (read_device_map): Use find_free_slot() to search for free slots. 2008-08-27 Marco Gerards * conf/common.rmk (pkglib_MODULES): Add scsi.mod. (scsi_mod_SOURCES): New variable. (scsi_mod_CFLAGS): Likewise (scsi_mod_LDFLAGS): Likewise. * disk/scsi.c: New file. * include/grub/scsi.h: Likewise. * include/grub/scsicmd.h: Likewise. * disk/ata.c: Include . (grub_atapi_packet): Do not use grub_ata_cmd, use registers instead. (grub_ata_iterate): Skip ATAPI devices. (grub_ata_open): Only handle ATAPI devices. (struct grub_atapi_read): Removed. (grub_atapi_readsector): Likewise. (grub_ata_read): No longer handle ATAPI devices. (grub_ata_write): Likewise. (grub_atapi_iterate): New function. (grub_atapi_read): Likewise. (grub_atapi_write): Likewise. (grub_atapi_open): Likewise. (grub_atapi_close): Likewise. (grub_atapi_dev): New variable. (GRUB_MOD_INIT(ata)): Register ATAPI as SCSI device. (GRUB_MOD_FINI(ata)): Unregister ATAPI. * include/grub/disk.h (enum grub_disk_dev_id): Add `GRUB_DISK_DEVICE_SCSI_ID'. 2008-08-26 Robert Millan * util/biosdisk.c (grub_util_biosdisk_open, open_device) (grub_util_biosdisk_get_grub_dev): Make error messages a bit more descriptive. 2008-08-23 Bean * conf/common.rmk (grub_probe_SOURCES): Add disk/mdraid_linux.c. (grub_fstest_SOURCES): Add disk/raid5_recover.c, disk/raid6_recover.c, disk/mdraid_linux.c and disk/dmraid_nvidia.c and lib/crc.c. (pkglib_MODULES): Add raid5rec.mod, raid6rec.mod, mdraid.mod and dm_nv.mod. (raid5rec_mod_SOURCES): New macro. (raid5rec_mod_CFLAGS): Likewise. (raid5rec_mod_LDFLAGS): Likewise. (raid6rec_mod_SOURCES): Likewise. (raid6rec_mod_CFLAGS): Likewise. (raid6rec_mod_LDFLAGS): Likewise. (mdraid_mod_SOURCES): Likewise. (mdraid_mod_CFLAGS): Likewise. (mdraid_mod_LDFLAGS): Likewise. (dm_nv_mod_SOURCES): Likewise. (dm_nv_mod_CFLAGS): Likewise. (dm_nv_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add disk/mdraid_linux.c. (grub_emu_SOURCES): Add disk/raid5_recover.c, disk/raid6_recover.c, disk/mdraid_linux.c and disk/dmraid_nvidia.c. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add disk/raid5_recover.c, disk/raid6_recover.c, disk/mdraid_linux.c and disk/dmraid_nvidia.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * disk/raid5_recover.c: New file. * disk/raid6_recover.c: Likewise. * disk/mdraid_linux.c: Likewise. * disk/dmraid_nvidia.c: Likewise. * disk/i386/pc/biosdisk.c: Set total_sectors of cdrom device to ULONG_MAX. * disk/raid.c (grub_raid_open): Use the size of the smallest disk to calculate the size of raid device. (grub_raid_read): Simplify raid0 code. Support raid4, raid6 and four different layout of raid5. (grub_raid_scan_device): Remove code specific to mdraid. (grub_raid_list): New variable. (free_array): New function. (grub_raid_register): Likewise. (grub_raid_unregister): Likewise. (grub_raid_rescan): Likewise. (GRUB_MOD_INIT): Don't iterate device here. (GRUB_MOD_FINI): Use free_array to release resource. * include/grub/raid.h: Remove macro and structure specific to mdraid. (grub_raid5_recover_func_t): New function variable type. (grub_raid6_recover_func_t): Likewise. (grub_raid5_recover_func): New variable. (grub_raid6_recover_func): Likewise. (grub_raid_register): New function. (grub_raid_unregister): Likewise. (grub_raid_rescan): Likewise. (grub_raid_block_xor): Likewise. * util/grub-fstest.c: Add #include and . (CMD_CRC): New macro. (part): Removed. (read_file): Handle device as well as file. (cmd_crc): New function. (fstest): Handle multiple disks. (options): Remove part, raw and long, add root and diskcount. (usage): Add crc, remove -p, -r, -l, add -r and -c. (main): Find the first non option entry and ignore subsequent options, add handling for the new options, support multiple disks. * util/grub-probe.c (probe): Add mdraid to abstraction_name. 2008-08-23 Bean * normal/x86_64/setjmp.S (grub_longjmp): Return 1 when val = 0. * genfslist.sh: Ignore kernel.mod. * genpartmaplist.sh: Likewise. 2008-08-23 Robert Millan * util/getroot.c (find_root_device): Skip anything that starts with a dot, not just directories. This avoids things like /dev/.tmp.md0. 2008-08-22 Felix Zielcke * util/update-grub.in (GRUB_GFXMODE): Export variable. * util/grub.d/00_header.in: Allow the administrator to change default gfxmode via ${GRUB_GFXMODE}. 2008-08-21 Felix Zielcke * fs/ntfs.c (grub_ntfs_mount): Fix a memory leak. 2008-08-21 Robert Millan * loader/i386/linux.c: New file. Implements generic 32-bit Linux loader. * conf/i386-coreboot.rmk (_linux_mod_SOURCES): Replace `loader/i386/pc/linux.c' with `loader/i386/linux.c'. 2008-08-20 Carles Pina i Estany * menu/normal.c (run_menu): Replace hardcoded numbers with macros (16 for GRUB_TERM_UP and 14 for GRUB_TERM_DOWN) 2008-08-19 Robert Millan * term/gfxterm.c (DEFAULT_CURSOR_COLOR): Remove. (struct grub_virtual_screen): Remove `cursor_color'. (grub_virtual_screen_setup): Remove `virtual_screen.cursor_color' initialization. (write_cursor): Use `virtual_screen.fg_color' to draw cursor. 2008-08-18 Robert Millan Unify (identical) linux_normal.c files. * loader/i386/efi/linux_normal.c: Move from here ... * loader/linux_normal.c: ... to here. Update all users. * loader/i386/pc/linux_normal.c: Delete. Update all users. * loader/i386/ieee1275/linux_normal.c: Likewise. 2008-08-18 Robert Millan * include/grub/i386/linux.h (LINUX_LOADER_ID_LILO) (LINUX_LOADER_ID_LOADLIN, LINUX_LOADER_ID_BOOTSECT) (LINUX_LOADER_ID_SYSLINUX, LINUX_LOADER_ID_ETHERBOOT) (LINUX_LOADER_ID_ELILO, LINUX_LOADER_ID_GRUB, LINUX_LOADER_ID_UBOOT) (LINUX_LOADER_ID_XEN, LINUX_LOADER_ID_GUJIN, LINUX_LOADER_ID_QEMU): New macros. (GRUB_LINUX_CL_OFFSET, GRUB_LINUX_CL_END_OFFSET): Move from here ... * loader/i386/pc/linux.c (GRUB_LINUX_CL_OFFSET) (GRUB_LINUX_CL_END_OFFSET): ... to here. * loader/i386/efi/linux.c (GRUB_EFI_CL_OFFSET): Rename to ... (GRUB_LINUX_CL_OFFSET): ... this. Update all users. (GRUB_EFI_CL_END_OFFSET): Rename to ... (GRUB_LINUX_CL_END_OFFSET): ... this. Update all users. (grub_rescue_cmd_linux): Macroify `type_of_loader' initialization. Initialize `params->video_cursor_x' and `params->video_cursor_y' portably using grub_getxy(). Replace `-EFI' with `-bzImage' in boot message. 2008-08-17 Robert Millan * include/grub/x86_64/kernel.h: New file ( stub). 2008-08-17 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/i386/pc/mmap.c'. * include/grub/i386/pc/init.h (GRUB_MACHINE_MEMORY_AVAILABLE) (GRUB_MACHINE_MEMORY_RESERVED): New macros. (grub_machine_mmap_iterate): New function declaration. * include/grub/multiboot.h (struct grub_multiboot_mmap_entry): New structure. (GRUB_MMAP_MEMORY_AVAILABLE, GRUB_MMAP_MEMORY_RESERVED): New macros. * kern/i386/pc/init.c (grub_machine_init): Replace hardcoded region type check value with `GRUB_MACHINE_MEMORY_AVAILABLE'. Move e820 parsing from here ... * kern/i386/pc/mmap.c: New file. (grub_machine_mmap_iterate): ... to here. * include/grub/i386/coreboot/memory.h: Remove `'. (GRUB_LINUXBIOS_MEMORY_AVAILABLE): Rename (for consistency) to ... (GRUB_MACHINE_MEMORY_AVAILABLE): ... this. Update all users. (grub_available_iterate): Redeclare to return `void', and redeclare its hook to use grub_uint64_t as addr and size parameters, and rename to ... (grub_machine_mmap_iterate): ... this. Update all users. * kern/i386/coreboot/mmap.c (grub_mmap_iterate): Simplify parser loop to make it more readable. Rename to ... (grub_machine_mmap_iterate): ... this. * loader/i386/pc/multiboot.c (mmap_addr, mmap_length): New variables. (grub_get_multiboot_mmap_len, grub_fill_multiboot_mmap): New functions. (grub_multiboot): Allocate an extra region after the payload, and fill it with a Multiboot memory map. Adjust a.out loader to calculate size with the extra space. (grub_multiboot_load_elf32): Adjust elf32 loader to calculate size with the extra space. 2008-08-17 Carles Pina i Estany * menu/normal.c (run_menu): Add Home and End keys in grub-menu. 2008-08-17 Felix Zielcke * gendistlist.sh: Add *.y, *.tex, *.texi, grub.cfg, README, *.sc, mdate-sh to the list `find' searches for. * DISTLIST: Regenerated. 2008-08-16 Felix Zielcke * gendistlist.sh (EXTRA_DISTFILES): Remove gensymlist.sh, genkernsyms.sh. Add geninit.sh, geninitheader.sh, genkernsyms.sh.in, genmoddep.awk, gensymlist.sh.in. (DISTDIRS): Add bus, docs, hook, lib. * DISTLIST: Regenerated. * NEWS: Add cygwin support and change the `os-prober' entry a bit. 2008-08-16 Robert Millan * disk/raid.c (grub_raid_init): Handle/report errors set by grub_device_iterate(). * disk/lvm.c (grub_lvm_init): Likewise. 2008-08-15 Bean * conf/i386-pc.rmk (pkglib_MODULES): Add datetime.mod, date.mod and datehook.mod. (datetime_mod_SOURCES): New macro. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (pkglib_MODULES): Add datetime.mod, date.mod and datehook.mod. (datetime_mod_SOURCES): New macro. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * conf/i386-ieee1275.rmk (pkglib_MODULES): Add datetime.mod, date.mod and datehook.mod. (datetime_mod_SOURCES): New macro. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * conf/i386-efi.rmk (pkglib_MODULES): Add datetime.mod, date.mod and datehook.mod. (datetime_mod_SOURCES): New macro. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * conf/x86_64-efi.rmk (pkglib_MODULES): Add datetime.mod, date.mod and datehook.mod. (datetime_mod_SOURCES): New macro. (datetime_mod_CFLAGS): Likewise. (datetime_mod_LDFLAGS): Likewise. (date_mod_SOURCES): Likewise. (date_mod_CFLAGS): Likewise. (date_mod_LDFLAGS): Likewise. (datehook_mod_SOURCES): Likewise. (datehook_mod_CFLAGS): Likewise. (datehook_mod_LDFLAGS): Likewise. * kern/env.c (grub_env_insert): Fix a bug in prevp pointer. * commands/date.c: New file. * hook/datehook.c: Likewise. * include/grub/lib/datetime.h: Likewise. * include/grub/i386/cmos.h: Likewise. * lib/datetime.c: Likewise. * lib/i386/datetime.c: Likewise. * lib/efi/datetime.c: Likewise. 2008-08-14 Robert Millan * conf/common.rmk (bin_UTILITIES): Add `grub-mkelfimage'. (grub_mkelfimage_SOURCES): New variable. (util/elf/grub-mkimage.c_DEPENDENCIES): Likewise. * conf/i386-coreboot.rmk (bin_UTILITIES, grub_mkimage_SOURCES) (grub_mkimage_LDFLAGS, util/elf/grub-mkimage.c_DEPENDENCIES): Remove. * conf/powerpc-ieee1275.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * kern/ieee1275/init.c: Include `'. * kern/i386/coreboot/init.c: Likewise. * kern/i386/ieee1275/startup.S: Replace `' with `'. (GRUB_KERNEL_MACHINE_PREFIX, GRUB_KERNEL_MACHINE_DATA_END): Renamed to ... (GRUB_KERNEL_CPU_PREFIX, GRUB_KERNEL_CPU_DATA_END): ... this. * kern/i386/coreboot/startup.S: Likewise. * include/grub/powerpc/ieee1275/kernel.h (GRUB_MOD_ALIGN) (GRUB_MOD_GAP): Remove. * include/grub/powerpc/kernel.h: New file. * include/grub/i386/ieee1275/kernel.h (GRUB_KERNEL_MACHINE_PREFIX) (GRUB_KERNEL_MACHINE_DATA_END): Remove. * include/grub/i386/kernel.h: New file. * include/grub/i386/coreboot/kernel.h (GRUB_MOD_ALIGN) (GRUB_MOD_GAP, GRUB_KERNEL_MACHINE_PREFIX) (GRUB_KERNEL_MACHINE_DATA_END): Remove. * util/ieee1275/grub-install.in (grub_mkimage): Initialize to use `grub-mkelfimage'. Use --directory when invoking grub_mkimage. * util/elf/grub-mkimage.c: Include `'. (add_segments): Replace GRUB_KERNEL_MACHINE_DATA_END and GRUB_KERNEL_MACHINE_PREFIX with GRUB_KERNEL_CPU_DATA_END and GRUB_KERNEL_CPU_PREFIX. 2008-08-14 Felix Zielcke * include/grub/err.h (grub_err_printf): New function prototype. * util/misc.c (grub_err_printf): New function. * kern/misc.c [! GRUB_UTIL] (grub_err_printf): New alias for grub_printf. * kern/err.c (grub_print_error): Use grub_err_printf. 2008-08-13 Robert Millan * docs/grub.cfg: Remove `/dev/' prefix in GNU/Hurd boot entry. 2008-08-13 Robert Millan * docs/grub.cfg: Use the native device name for the example GNU/Hurd boot entry. 2008-08-12 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Move part of the relocation code from here ... (grub_multiboot): ... to here. (forward_relocator, backward_relocator): Move from here ... * kern/i386/loader.S (grub_multiboot_forward_relocator) (grub_multiboot_backward_relocator): ... to here. (grub_multiboot_real_boot): Use %edx for entry offset. Put Multiboot magic in %eax. Use %ebp for jumping (so %edx is not trashed). * include/grub/i386/loader.h (grub_multiboot_forward_relocator) (grub_multiboot_forward_relocator_end) (grub_multiboot_backward_relocator) (grub_multiboot_backward_relocator_end): New variables. 2008-08-12 Bean * disk/raid.c (grub_raid_read): Fix a bug in raid0 code. 2008-08-11 Robert Millan * kern/i386/linuxbios/startup.S: Move from here ... * kern/i386/coreboot/startup.S: ... to here. * kern/i386/linuxbios/init.c: Move from here ... * kern/i386/coreboot/init.c: ... to here. * kern/i386/linuxbios/table.c: Move from here ... * kern/i386/coreboot/mmap.c: ... to here. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Update moved files. 2008-08-11 Robert Millan * kern/device.c (grub_device_open): Do not handle grub_disk_open() errors. Leave it to the upper layer to handle them. 2008-08-09 Christian Franke * Makefile.in: Add `target_os' and `enable_grub_pe2elf'. * conf/common.rmk: Install `grub-pe2elf' only if requested. Install `grub.d/10_windows' only on Cygwin. * configure.ac: Add subst of `target_os'. Check `target_os' also before setting TARGET_OBJ2ELF. Add `--enable-grub-pe2elf'. 2008-08-08 Robert Millan * kern/disk.c: Replace `' with `'. (grub_last_time): Change type to grub_uint64_t. (grub_disk_open): Migrate code from to using grub_get_time_ms(). (grub_disk_close): Likewise. * normal/menu.c: Replace `' with `'. (run_menu): Migrate code from to using grub_get_time_ms(). * util/misc.c (grub_get_time_ms): New function. 2008-08-08 Marco Gerards * disk/ata.c (grub_ata_regget): Change return type to `grub_uint8_t'. (grub_ata_regget2): Likewise. (grub_ata_wait_status): New function. (grub_ata_wait_busy): Removed function, updated all users to use `grub_ata_wait_status'. (grub_ata_wait_drq): Likewise. (grub_ata_cmd): New function. (grub_ata_pio_read): Change return type to `grub_uint8_t'. Add error handling. (grub_ata_pio_write): Add error handling. (grub_atapi_identify): Likewise. (grub_atapi_packet): Use `grub_ata_cmd' and improve error handling. (grub_ata_identify): Use `grub_ata_cmd' and improve error handling. Actually use the detected registers. Reorder the detection logic such that it is easier to read. (grub_ata_pciinit): Do not assign the same ID to each controller. (grub_ata_setaddress): Use `grub_ata_cmd' and improve error handling. (grub_atapi_readsector): Check the result of `grub_ata_pio_read'. * include/grub/err.h (grub_err_t): Add `GRUB_ERR_TIMEOUT'. 2008-08-08 Marco Gerards * NEWS: Update. 2008-08-07 Bean * include/grub/x86_64/pci.h: New file. 2008-08-07 Christian Franke * kern/i386/pit.c (TIMER2_SPEAKER): New define. (TIMER2_GATE): Likewise. (grub_pit_wait): Add enable/disable of the timer2 gate bit of port 0x61. This fixes a possible infinite loop. 2008-08-07 Bean * conf/x86_64-efi.rmk (kernel_mod_SOURCES): Add kern/time.c, kern/i386/tsc.c and kern/i386/pit.c. * include/grub/i386/tsc.h (grub_cpu_is_cpuid_supported): Handle x86_64 platform. * kern/i386/efi/init.c: Replace with . * kern/i386/pit.c: Replace with . 2008-08-07 Bean * conf/i386-efi.rmk (kernel_mod_SOURCES): Add kern/time.c. * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add kern/time.c, * include/grub/i386/pit.h: Use macro KERNEL_CPU_PIT_HEADER to avoid multiple inclusion. Add #include . 2008-08-06 Christian Franke * conf/common.rmk: Build and install `10_windows'. * util/grub.d/10_windows.in: New script. 2008-08-06 Pavel Roskin * kern/i386/pit.c: Include `'. 2008-08-06 Robert Millan * conf/i386-coreboot.rmk (kernel_elf_ASFLAGS): New variable. * kern/i386/tsc.c: Include `'. 2008-08-06 Bean * fs/i386/pc/pxe.c (grub_pxe_data): New member block_size. (grub_pxefs_fs_int): Remove dummy definition. (grub_pxefs_open): Use data->block_size to store the current block size setting. (grub_pxefs_read): Use block size stored in data->block_size. As the value of grub_pxe_blksize can be changed after the file is opened. 2008-08-06 Bean * fs/i386/pc/pxe.c (curr_file): new variable. (grub_pxefs_open): Simply the handling of pxe file system. Don't require the dummy internal file system anymore. (grub_pxefs_read): Removed. (grub_pxefs_close): Likewise. (grub_pxefs_fs_int): Likewise. (grub_pxefs_read_int): Renamed to grub_pxefs_read. Reinitialize tftp connection when we switch file. (grub_pxefs_close_int): Renamed to grub_pxefs_close. 2008-08-06 Robert Millan * conf/i386-coreboot.rmk (pkglib_MODULES): Add `reboot.mod' and `halt.mod'. (reboot_mod_SOURCES, reboot_mod_CFLAGS, reboot_mod_LDFLAGS) (halt_mod_SOURCES, halt_mod_CFLAGS, halt_mod_LDFLAGS): New variables. * kern/i386/halt.c: New file. * kern/i386/reboot.c: Likewise. * include/grub/i386/reboot.h: Likewise. * include/grub/i386/halt.h: Likewise. * commands/halt.c [! GRUB_MACHINE_IEEE1275 ! GRUB_MACHINE_EFI]: Include `'. * commands/reboot.c [! GRUB_MACHINE_IEEE1275 ! GRUB_MACHINE_EFI] [! GRUB_MACHINE_PCBIOS]: Include `'. * term/i386/pc/at_keyboard.c: Include `'. (SHIFT_L, SHIFT_R, CTRL, ALT, CAPS_LOCK, KEYBOARD_REG_DATA) (KEYBOARD_REG_STATUS, KEYBOARD_COMMAND_ISREADY, KEYBOARD_COMMAND_READ) (KEYBOARD_COMMAND_WRITE, KEYBOARD_COMMAND_REBOOT) (KEYBOARD_SCANCODE_SET1, KEYBOARD_ISMAKE, KEYBOARD_ISREADY) (KEYBOARD_SCANCODE, OLPC_UP, OLPC_DOWN, OLPC_LEFT, OLPC_RIGHT): Move from here ... * include/grub/i386/at_keyboard.h: ... to here. 2008-08-05 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/i386/pit.c'. * conf/i386-efi.rmk (kernel_mod_SOURCES): Likewise. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Likewise. Also add `kern/i386/tsc.c', `kern/generic/rtc_get_time_ms.c' and `kern/generic/millisleep.c'. * kern/i386/tsc.c (calibrate_tsc): Rewrite using grub_pit_wait() instead of grub_get_rtc(). (grub_tsc_init): Initialize `tsc_boot_time'. * kern/i386/linuxbios/init.c (grub_millisleep): Remove stub. (grub_machine_init): Use grub_tsc_init() rather than installing an RTC-based handler via grub_install_get_time_ms(). * kern/i386/pit.c: New file. * include/grub/i386/pit.h: Likewise. 2008-08-05 Bean * boot/i386/pc/pxeboot.S (_start): Use drive number 0x7F for pxe. * conf/i386-pc.rmk (kernel_img_HEADERS): Add machine/pxe.h. (pkglib_MODULES): Add pxe.mod and pxecmd.mod. (pxe_mod_SOURCES): New macro. (pxe_mod_CFLAGS): Likewise. (pxe_mod_LDFLAGS): Likewise. (pxecmd_mod_SOURCES): Likewise. (pxecmd_mod_CFLAGS): Likewise. (pxecmd_mod_LDFLAGS): Likewise. * kern/i386/pc/startup.S (grub_pxe_scan): New function. (grub_pxe_call): Likewise. * include/grub/disk.h (grub_disk_dev_id): Add GRUB_DISK_DEVICE_PXE_ID. * commands/i386/pc/pxecmd.c: New file. * fs/i386/pc/pxe.c: Likewise. * include/grub/i386/pc/pxe.h: Likewise. 2008-08-05 Bean * util/console.c (grub_console_cur_color): New variable. (grub_console_standard_color): Likewise. (grub_console_normal_color): Likewise. (grub_console_highlight_color): Likewise. (color_map): Likewise. (use_color): Likewise. (NUM_COLORS): New macro. (grub_ncurses_setcolorstate): Handle color properly. (grub_ncurses_setcolor): Don't change color here, just remember the settings, color will be set in grub_ncurses_setcolorstate. (grub_ncurses_getcolor): New function. (grub_ncurses_init): Initialize color pairs. (grub_ncurses_term): New member grub_ncurses_getcolor. 2008-08-05 Colin D Bennett High resolution timer support. Implemented for x86 CPUs using TSC. Extracted generic grub_millisleep() so it's linked in only as needed. This requires a Pentium compatible CPU; if the RDTSC instruction is not supported, then it falls back on the generic grub_get_time_ms() implementation that uses the machine's RTC. * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/time.c', `kern/i386/tsc.c', `kern/generic/rtc_get_time_ms.c' and `kern/generic/millisleep.c'. * conf/i386-efi.rmk (kernel_mod_SOURCES): Add `kern/i386/tsc.c', `kern/generic/rtc_get_time_ms.c' and `kern/generic/millisleep.c'. * conf/x86_64-efi.rml (kernel_mod_SOURCES): Add `kern/generic/millisleep.c' and `kern/generic/rtc_get_time_ms.c'. * conf/sparc64-ieee1275.rmk (kernel_elf_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Add `kern/generic/millisleep.c'. * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Likewise. * conf/i386-coreboot.rmk (kernel_elf_SOURCES): Add `kern/time.c'. * kern/generic/rtc_get_time_ms.c: New file. * kern/generic/millisleep.c: New file. * kern/misc.c: Don't include anymore. (grub_millisleep_generic): Removed. * commands/sleep.c (grub_interruptible_millisleep): Uses grub_get_time_ms() instead of grub_get_rtc(). * include/grub/i386/tsc.h (grub_get_tsc): New file. New inline function. (grub_cpu_is_cpuid_supported): New inline function. (grub_cpu_is_tsc_supported): New inline function. (grub_tsc_init): New function prototype. (grub_tsc_get_time_ms): New function prototype. * kern/i386/tsc.c (grub_get_time_ms): New file. * include/grub/time.h: Include . Don't include anymore. (grub_millisleep): Removed. (grub_machine_init): Call grub_tsc_init. * kern/i386/linuxbios/init.c (grub_machine_init): Install the RTC get_time_ms() implementation. * kern/sparc64/ieee1275/init.c (grub_millisleep): Removed. (ieee1275_get_time_ms): New function. (grub_machine_init): Install get_time_ms() implementation. * kern/i386/pc/init.c: Include . (grub_machine_init): Call grub_tsc_init(). (grub_millisleep): Removed. * kern/ieee1275/init.c (grub_millisleep): Removed. (grub_machine_init): Install ieee1275_get_time_ms() implementation. (ieee1275_get_time_ms): New function. (grub_get_rtc): Now calls ieee1275_get_time_ms(), which does the real work. 2008-08-05 Marco Gerards * disk/ata.c: Include . (enum grub_ata_commands): Add `GRUB_ATA_CMD_EXEC_DEV_DIAGNOSTICS'. (grub_ata_initialize): Rewritten. (grub_ata_device_initialize): New function. 2008-08-04 Pavel Roskin * kern/main.c: Include grub/mm.h. 2008-08-04 Robert Millan * conf/i386-coreboot.rmk (COMMON_ASFLAGS, COMMON_CFLAGS) (COMMON_LDFLAGS): Harmonize with i386-pc version (fixes a code corruption problem). 2008-08-04 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Fix misc warnings introduced in my last commit. 2008-08-03 Robert Millan Make PCI available on all i386 architectures. * include/grub/i386/pc/pci.h: Move from here ... * include/grub/i386/pci.h: ... to here. * include/grub/i386/pc/pci.h: Remove. * include/grub/i386/efi/pci.h: Remove. * include/grub/x86_64/efi/pci.h: Remove. * include/grub/pci.h: Replace `' with `'. * conf/i386-coreboot.rmk (pkglib_MODULES): Add `pci' and `lspci'. (pci_mod_SOURCES, pci_mod_CFLAGS, pci_mod_LDFLAGS, lspci_mod_SOURCES) (lspci_mod_CFLAGS, lspci_mod_LDFLAGS): New variables. * conf/i386-ieee1275.rmk: Likewise. 2008-08-03 Robert Millan * term/i386/pc/vga_text.c (CRTC_CURSOR_DISABLE): New macro. (grub_console_setcursor): Make it possible to set cursor off. 2008-08-03 Robert Millan * util/grub.d/00_header.in: Be platform-agnostic. Probe for existence of modules instead of assuming which platform provides what. * util/update-grub.in: Likewise. 2008-08-03 Robert Millan * kern/i386/pc/init.c (make_install_device): Check for `grub_prefix' instead of `grub_install_dos_part' to determine whether a drive needs to be prepended to prefix (`grub_install_dos_part' is not reliable, because it can be overridden when loading GRUB via Multiboot). 2008-08-02 Robert Millan * util/i386/pc/grub-install.in: Remove trailing slash from prefix. 2008-08-02 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Add a pair of informational grub_dprintf() calls. 2008-08-02 Robert Millan * disk/memdisk.c (memdisk_size): Don't initialize. (GRUB_MOD_INIT(memdisk)): Find memdisk using grub_module_iterate(). * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_MEMDISK_IMAGE_SIZE): Remove macro. (GRUB_KERNEL_MACHINE_PREFIX, GRUB_KERNEL_MACHINE_DATA_END): Shift. (grub_memdisk_image_size, grub_arch_memdisk_addr) (grub_arch_memdisk_size): Remove. * include/grub/kernel.h (struct grub_module_header): Remove `offset' field (was only used to transfer a constant). Add `type' field to support multiple module types. (grub_module_iterate): New function. * kern/device.c (grub_device_open): Do not hide error messages when grub_disk_open() fails. Use grub_print_error() instead. * kern/i386/pc/init.c (grub_arch_modules_addr) (grub_arch_memdisk_size): Remove functions. (grub_arch_modules_addr): Return the module address in high memory (now that it isn't copied anymore). * kern/i386/pc/startup.S (grub_memdisk_image_size): Remove variable. (codestart): Don't add grub_memdisk_image_size to %ecx in LZMA decompression routine (grub_total_module_size already includes that now). Don't copy modules back to low memory. * kern/main.c: Include `'. (grub_load_modules): Split out (and use) ... (grub_module_iterate): ... this function, which iterates through module objects and runs a hook. Comment out grub_mm_init_region() call, as it would cause non-ELF modules to be overwritten. * util/i386/pc/grub-mkimage.c (generate_image): Instead of appending the memdisk image in its own region, make it part of the module list. * util/elf/grub-mkimage.c (options): Add "memdisk"|'m' option. (main): Parse --memdisk|-m option, and pass user-provided path as parameter to generate_image(). (add_segments): Pass `memdisk_path' down to load_modules(). (load_modules): Embed memdisk image in module section when requested. * util/i386/efi/grub-mkimage.c (make_mods_section): Initialize `header.type' instead of `header.offset'. * conf/powerpc-ieee1275.rmk (pkglib_MODULES): Add `memdisk.mod'. (memdisk_mod_SOURCES, memdisk_mod_CFLAGS) (memdisk_mod_LDFLAGS): New variables. * conf/i386-coreboot.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. 2008-08-02 Robert Millan * loader/i386/pc/multiboot.c (playground, forward_relocator) (backward_relocator): New variables. Used to allocate and relocate the payload, respectively. (grub_multiboot_load_elf32): Load into heap instead of requested address, install the appropriate relocator code in each bound of the payload, and set the entry point such that grub_multiboot_real_boot() will jump to one of them. * kern/i386/loader.S (grub_multiboot_payload_size) (grub_multiboot_payload_orig, grub_multiboot_payload_dest) (grub_multiboot_payload_entry_offset): New variables. (grub_multiboot_real_boot): Set cpu context to what the relocator expects, and jump to the relocator instead of the payload. * include/grub/i386/loader.h (grub_multiboot_payload_size) (grub_multiboot_payload_orig, grub_multiboot_payload_dest) (grub_multiboot_payload_entry_offset): Export. 2008-08-01 Bean * normal/menu_entry.c (editor_getline): Don't return the original string as result, as it will be released by lexer once it has done using it. 2008-08-01 Robert Millan * util/grub.d/10_linux.in: Use prepare_grub_to_access_device() from within menuentries, not before them. util/grub.d/10_hurd.in: Likewise. 2008-08-01 Bean * conf/common.rmk (pkglib_MODULES): Add bufio.mod. (bufio_mod_SOURCES): New macro. (bufio_mod_CFLAGS): Likewise. (bufio_mod_LDFLAGS): Likewise. * include/grub/bufio.h: New file. * io/bufio.c: Likewise. * video/png.c: Replace with . (grub_video_reader_png): Use grub_buffile_open to open file. * video/jpeg.c: Replace with . (grub_video_reader_jpeg): Use grub_buffile_open to open file. * video/tga.c: Replace with . (grub_video_reader_tga): Use grub_buffile_open to open file. * font/manager.c: Include . (add_font): Use grub_buffile_open to open file. 2008-07-31 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): When loading ELF segments, use a macro for arbitrarily accessing any of them instead of preparing a pointer that allows access to one at a time. (grub_multiboot_load_elf64): Likewise. 2008-07-31 Bean * boot/i386/pc/lnxboot.S (real_code_2): Replace 0x50 with GRUB_KERNEL_MACHINE_DATA_END. 2008-07-30 Robert Millan * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_DATA_END): Increase from 0x50 to 0x60. * util/i386/pc/grub-install.in: Detect cross-disk installs, and use UUIDs to identify the root drive for them. If that's not possible, abort. * util/i386/pc/grub-setup.c (setup): Do not special-case, or even check, for cross-disk installs. 2008-07-30 Robert Millan * kern/ieee1275/init.c (grub_machine_set_prefix): If `grub_prefix' is non-empty, use it to set the `prefix' environment variable instead of the usual approach. * kern/i386/linuxbios/init.c (make_install_device): Remove function. (grub_machine_set_prefix): Use `grub_prefix' to set the `prefix' environment variable instead of dummy make_install_device(). * kern/i386/ieee1275/startup.S: Include `'. (start): Insert a data section, with `grub_prefix' variable. * kern/i386/linuxbios/startup.S: Likewise. * include/grub/powerpc/ieee1275/kernel.h [!ASM_FILE] (grub_prefix): New variable reference. * include/grub/i386/ieee1275/kernel.h (GRUB_KERNEL_MACHINE_PREFIX): New macro. Defines offset of `grub_prefix' within startup.S (relative to `start'). (GRUB_KERNEL_MACHINE_DATA_END): New macro. Defines the end of data section within startup.S (relative to `start'). * include/grub/i386/coreboot/kernel.h: Likewise. * util/elf/grub-mkimage.c (add_segments): Receive `prefix' parameter. Overwrite grub_prefix with its contents, at the beginning of the first segment. (main): Understand -p|--prefix. 2008-07-30 Robert Millan * util/grub.d/10_hurd.in: Source ${libdir}/grub/update-grub_lib. 2008-07-30 Robert Millan * term/i386/pc/vga_text.c (grub_console_cls): Use grub_console_gotoxy() to go back to beginning of the screen. Found by Patrick Georgi 2008-07-29 Christian Franke * util/update-grub_lib.in (make_system_path_relative_to_its_root): Add conversion of emulated mount points on Cygwin. 2008-07-29 Christian Franke * util/update-grub.in: Add a check for admin group on Cygwin. Remove old `grub.cfg.new' before creation. Add `-f' to `mv' to handle the different filesystem semantics of Windows. 2008-07-29 Bean * normal/main.c (get_line): Fix buffer overflow bug. 2008-07-28 Robert Millan * partmap/apple.c (GRUB_APPLE_HEADER_MAGIC): New macro. (struct grub_apple_header): New struct. Describes the layout of the partmap header. (apple_partition_map_iterate): Check the header magic as well as the partition magic (which was already being checked). 2008-07-28 Pavel Roskin * genmk.rb: Add a warning to the beginning of the output that it's a generated file and should not be edited. 2008-07-28 Robert Millan * disk/raid.c (grub_raid_scan_device): Do not abort when two disks with the same number are found, just use issue a warning with grub_dprintf(), as this error has been reported to be non-fatal. 2008-07-27 Robert Millan * disk/ata.c (grub_ata_dumpinfo): Use grub_dprintf() for debugging information. 2008-07-27 Bean * fs/fat.c (GRUB_FAT_MAXFILE): New constant. (grub_fat_find_dir): Ignore case when comparing filename. 2008-07-27 Bean * fs/xfs.c (grub_xfs_dir_header): Change field i8count back to smallino, as it's more descriptive, and i8count can be confused with the other field count. (grub_xfs_iterate_dir): Adjust grub_xfs_dir_entry pointer for small inode type. 2008-07-27 Bean * commands/crc.c: New file. * lib/crc.c: Likewise. * include/grub/lib/crc.h: Likewise. * util/grub-fstest.c: grub/hexdump.h => grub/lib/hexdump.h. * commands/hexdump.c: grub/hexdump.h => grub/lib/hexdump.h. (hexdump): Move this function to ... * lib/hexdump.c: ... here. * include/grub/hexdump.h: Renamed to ... * include/grub/lib/hexdump.h: ... this. * commands/loadenv.c: grub/envblk.h => grub/lib/envblk.h * util/grub-editenv.c: Likewise. * include/envblk.h: Renamed to ... * include/lib/envblk.h: ... this. * util/envblk.c: Renamed to ... * lib/envblk.c: ... this. * conf/common.rmk (grub_fstest_SOURCES): commands/hexdump.c => lib/hexdump.c. (grub_editenv_SOURCES): util/envblk.c => lib/envblk.c (pkglib_MODULES): Add crc.mod. (hexdump_mod_SOURCES): Add lib/hexdump.c. (loadenv_mod_SOURCES): util/envblk.c => lib/envblk.c. (crc_mod_SOURCES): New macro. (crc_mod_CFLAGS): Likewise. (crc_mod_LDFLAGS): Likewise. * conf/i386-coreboot.rmk (grub_emu_SOURCES): Add lib/hexdump.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/x86_64-efi.rmk (grub_emu_SOURCES): Likewise. 2008-07-27 Felix Zielcke * commands/help.c: Include . (TERM_WIDTH): Removed. Updated all users. 2008-07-27 Pavel Roskin * util/getroot.c (find_root_device): Rephrase a comment to avoid spurious warnings about a comment within a comment. 2008-07-25 Robert Millan * util/getroot.c (find_root_device): Skip devices that match /dev/dm-[0-9]. This lets the real device be found for any type of abstraction (LVM, EVMS, RAID..). (grub_guess_root_device): Do not traverse /dev/mapper (for LVM) and /dev/evms (for EVMS) before traversing /dev. If a /dev/dm-[0-9] device is found first, find_root_device() will now skip it. 2008-07-24 Pavel Roskin * include/grub/types.h: Use __builtin_bswap32() and __builtin_bswap64() with gcc 4.3 and newer. 2008-07-24 Christian Franke * util/i386/pc/grub-install.in: If `--debug' is specified, pass `--verbose' to grub-setup. Abort script if make_system_path_relative_to_its_root() fails. 2008-07-24 Bean * configure.ac: Fixed a bug caused by the previous cygwin patch, variable `target_platform' should be `platform'. 2008-07-24 Bean * video/reader/png.c (DEFLATE_HLIT_MAX): Change value. (grub_png_init_fixed_block): New function. (grub_png_decode_image_data): Handle fixed huffman code compression. 2008-07-24 Bean * common.rmk (bin_UTILITIES): Add grub-pe2elf. (grub_pe2elf_SOURCES): New macro. (CLEANFILES): Add grub-pe2elf. * include/grub/efi/pe32.h (GRUB_PE32_SCN_ALIGN_1BYTES): New constant. (GRUB_PE32_SCN_ALIGN_2BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_4BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_8BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_16BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_32BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_64BYTES): Likewise. (GRUB_PE32_SCN_ALIGN_SHIFT): Likewise. (GRUB_PE32_SCN_ALIGN_MASK): Likewise. (GRUB_PE32_SYM_CLASS_EXTERNAL): Likewise. (GRUB_PE32_SYM_CLASS_STATIC): Likewise. (GRUB_PE32_SYM_CLASS_FILE): Likewise. (GRUB_PE32_DT_FUNCTION): Likewise. (GRUB_PE32_REL_I386_DIR32): Likewise. (GRUB_PE32_REL_I386_REL32): Likewise. (grub_pe32_symbol): New structure. (grub_pe32_reloc): Likewise. * util/grub-pe2elf.c: New file. * configure.ac: Set TARGET_OBJ2ELF if host os is cygwin. Don't test for start symbol in non pc platform. * genmk.rb: Use TARGET_OBJ2ELF to convert native object format to elf. The following patches are from Christian Franke. * include/grub/dl.h: Remove .previous, gas supports this only for ELF format. * include/grub/symbol.h [__CYGWIN__] (#define FUNCTION/VARIABLE): Remove .type, gas supports this only for ELF format. * kern/dl.c (grub_dl_resolve_dependencies): Add check for trailing nullbytes in symbol table. This fixes an infinite loop if table is zero filled. * Makefile.in: Add autoconf replacements TARGET_IMG_LDSCRIPT, TARGET_IMG_LDFLAGS and EXEEXT. * aclocal.m4 (grub_PROG_OBJCOPY_ABSOLUTE): Replace -Wl,-N by TARGET_IMG_LDFLAGS_AC. (grub_CHECK_STACK_ARG_PROBE): New function. * conf/i386-pc.rmk: Replace -Wl,-N by TARGET_IMG_LDFLAGS. * conf/i386-pc-cygwin-ld-img.sc: New linker script. * configure.ac: Add check for linker script "conf/${target}-img-ld.c" to set TARGET_IMG_LD* accordingly. Add check for Cygwin to set TARGET_MOD_OBJCOPY accordingly. Add call to grub_CHECK_STACK_ARG_PROBE. Use TARGET_IMG_LDFLAGS to check start, bss_start, end symbols. * genkernsyms.sh.in: Handle HAVE_ASM_USCORE case. * genmk.rb: Add EXEEXT to CLEANFILES. 2008-07-23 Robert Millan * Makefile.in (UNICODE_ARROWS, UNICODE_LINES): New variables (they define the codes for arrows and lines used for the menu). (ascii.pff): Generate fonts for $(UNICODE_ARROWS) and $(UNICODE_LINES) as well. * util/update-grub_lib.in (font_path): Prefer ascii.pff over complete fonts, because the latter are too slow. 2008-07-21 Bean * kern/i386/pc/startup.S (gate_a20_try_bios): Change test order for a20. Run keyboard test last, as it will cause macbook to halt. 2008-07-18 Pavel Roskin * kern/dl.c: Go back to using GRUB_CPU_SIZEOF_VOID_P. We cannot load foreign architecture modules correctly anyway. Keep support for loading host architecture modules, whether we compile them or not. 2008-07-17 Pavel Roskin * configure.ac: Use -m32 or -m64 regardless of whether we had to change target_cpu. The compiler default can mismatch target_cpu in any case. * disk/efi/efidisk.c: Fix format warnings on x86_64. * kern/efi/efi.c: Likewise. * aclocal.m4 (grub_PROG_TARGET_CC): New macro. Check if the target compiler is functional. * configure.ac: Call grub_PROG_TARGET_CC once all target flags are set up. * configure.ac: Default to efi platform for x86_64-apple. Allow powerpc64 CPU, default to ieee1275 platform for it. Split CPU adjustments from the rest, only do them if target is not explicitly given. Merge other adjustments with the final sanity check. Remove an extraneous check for supported CPU. Be specific which CPU and which platform is not supported. * configure.ac: Default to pc platform for x86_64. 2008-07-17 Robert Millan Partial LinuxBIOS -> Coreboot rename. * conf/i386-linuxbios.rmk: Renamed to ... * conf/i386-coreboot.rmk: ... this. * Makefile.in (RMKFILES): s/i386-linuxbios.rmk/i386-coreboot.rmk/g. * configure.ac: Accept "coreboot" as input platform (but maintain compatibility with "linuxbios"). * include/grub/i386/linuxbios: Renamed to ... * include/grub/i386/coreboot: ... this. 2008-07-17 Bean * conf/i386/efi.rmk (pkglib_MODULES): add pci.mod and lspci.mod. (appleldr_mod_SOURCE): New variable. (appleldr_mod_CFLAGS): Likewise. (appleldr_mod_LDFLAGS): Likewise. (pci_mod_SOURCES): Likewise. (pci_mod_CFLAGS): Likewise. (pci_mod_LDFLAGS): Likewise. (lspci_mod_SOURCES): Likewise. (lspci_mod_CFLAGS): Likewise. (lspci_mod_LDFLAGS): Likewise. * conf/x86_64-efi.rmk: New file. * disk/efi/efidisk.c (grub_efidisk_read): Wrap efi calls with efi_call_N macro. (grub_efidisk_write): Likewise. * include/efi/api.h (efi_call_0): New macro. (efi_call_1): Likewise. (efi_call_2): Likewise. (efi_call_3): Likewise. (efi_call_4): Likewise. (efi_call_5): Likewise. (efi_call_6): Likewise. * include/grub/efi/chainloader.h (grub_chainloader_cmd): Rename to grub_rescue_cmd_chainloader. * include/grub/efi/pe32.h (GRUB_PE32_MACHINE_X86_64): New macro. (grub_pe32_optional_header): Change some fields based on i386 or x86_64 platform. (GRUB_PE32_PE32_MAGIC): Likewise. * include/grub/efi/uga_draw.h: New file. * include/grub/elf.h (STN_ABS): New constant. (R_X86_64_NONE): Relocation constant for x86_64. (R_X86_64_64): Likewise. (R_X86_64_PC32): Likewise. (R_X86_64_GOT32): Likewise. (R_X86_64_PLT32): Likewise. (R_X86_64_COPY): Likewise. (R_X86_64_GLOB_DAT): Likewise. (R_X86_64_JUMP_SLOT): Likewise. (R_X86_64_RELATIVE): Likewise. (R_X86_64_GOTPCREL): Likewise. (R_X86_64_32): Likewise. (R_X86_64_32S): Likewise. (R_X86_64_16): Likewise. (R_X86_64_PC16): Likewise. (R_X86_64_8): Likewise. (R_X86_64_PC8): Likewise. * include/grub/i386/efi/pci.h: New file. * include/grub/i386/linux.h (GRUB_LINUX_EFI_SIGNATURE): Change it value based on platform. (GRUB_LINUX_EFI_SIGNATURE_0204): New constant. (GRUB_E820_RAM): Likewise. (GRUB_E820_RESERVED): Likewise. (GRUB_E820_ACPI): Likewise. (GRUB_E820_NVS): Likewise. (GRUB_E820_EXEC_CODE): Likewise. (GRUB_E820_MAX_ENTRY): Likewise. (grub_e820_mmap): New structure. (linux_kernel_header): Change the efi field according to different kernel version, also field from linux_kernel_header. * include/grub/kernel.h (grub_module_info): Add padding for x86_64. * include/grub/pci.h (GRUB_PCI_ADDR_SPACE_MASK): New constant. (GRUB_PCI_ADDR_SPACE_MEMORY): Likewise. (GRUB_PCI_ADDR_SPACE_IO): Likewise. (GRUB_PCI_ADDR_MEM_TYPE_MASK): Likewise. (GRUB_PCI_ADDR_MEM_TYPE_32): Likewise. (GRUB_PCI_ADDR_MEM_TYPE_1M): Likewise. (GRUB_PCI_ADDR_MEM_TYPE_64): Likewise. (GRUB_PCI_ADDR_MEM_PREFETCH): Likewise. (GRUB_PCI_ADDR_MEM_MASK): Likewise. (GRUB_PCI_ADDR_IO_MASK): Likewise. * include/grub/x86_64/efi/kernel.h: New file. * include/grub/x86_64/efi/loader.h: Likewise. * include/grub/x86_64/efi/machine.h: Likewise. * include/grub/x86_64/efi/pci.h: Likewise. * include/grub/x86_64/efi/time.h: Likewise. * include/grub/x86_64/linux.h: Likewise. * include/grub/x86_64/setjmp.h: Likewise. * include/grub/x86_64/time.h: Likewise. * include/grub/x86_64/types.h: Likewise. * kern/dl.c (GRUB_CPU_SIZEOF_VOID_P): Changed to GRUB_TARGET_SIZEOF_VOID_P. * kern/efi/efi.c (grub_efi_locate_protocol): Wrap efi calls. (grub_efi_locate_handle): Likewise. (grub_efi_open_protocol): Likewise. (grub_efi_set_text_mode): Likewise. (grub_efi_stall): Likewise. (grub_exit): Likewise. (grub_reboot): Likewise. (grub_halt): Likewise. (grub_efi_exit_boot_services): Likewise. (grub_get_rtc): Likewise. * kern/efi/mm.c (MEMORY_MAP_SIZE): Change to 0x3000 for new models. (GRUB_CPU_SIZEOF_VOID_P): Changed to GRUB_TARGET_SIZEOF_VOID_P. (grub_efi_allocate_pages): Wrap efi calls. (grub_efi_free_pages): Wrap efi calls. (grub_efi_get_memory_map): Wrap efi calls. * kern/x86_64/dl.c: New file. * kern/x86_64/efi/callwrap.S: Likewise. * kern/x86_64/efi/startup.S: Likewise. * loader/efi/appleloader.c: Likewise. * loader/efi/chainloader.c (cmdline): New variable. (grub_chainloader_unload): Wrap efi calls. (grub_chainloader_boot): Likewise. (grub_rescue_cmd_chainloader): Wrap efi calls, handle command line. * loader/efi/chainloader_normal.c (chainloader_command): Change grub_chainloader_cmd to grub_rescue_cmd_chainloader, pass command line. * loader/i386/efi/linux.c (allocate_pages): Change allocation method. (grub_e820_add_region): New function. (grub_linux_boot): Construct e820 map from efi map, handle x86_64 booting. (grub_find_video_card): New function. (grub_linux_setup_video): New function. (grub_rescue_cmd_linux): Probe for video information. * normal/x86_64/setjmp.S: New file. * term/efi/console.c (map_char): New function. (grub_console_putchar): Map unicode char. (grub_console_checkkey): Wrap efi calls. (grub_console_getkey): Likewise. (grub_console_getwh): Likewise. (grub_console_gotoxy): Likewise. (grub_console_cls): Likewise. (grub_console_setcolorstate): Likewise. (grub_console_setcursor): Likewise. * util/i386/efi/grub-mkimage.c: Add support for x86_64. 2008-07-16 Pavel Roskin * loader/i386/efi/linux.c (allocate_pages): Fix warnings in format strings. * util/i386/efi/grub-mkimage.c (get_target_address): Return a pointer, not an integer. This fixes a warning and prevents precision loss on 64-bit systems. (relocate_addresses): Remove unneeded cast. 2008-07-15 Pavel Roskin * kern/i386/ieee1275/init.c: Include grub/cache.h. * term/ieee1275/ofconsole.c: Disable code unused on i386. * kern/ieee1275/ieee1275.c (grub_ieee1275_get_integer_property): Fix comparison between signed and unsigned. * include/grub/i386/ieee1275/console.h: Declare grub_console_init() and grub_console_fini(). * loader/i386/ieee1275/linux.c (grub_set_bootpath): Remove. It's empty and unused. * fs/ext2.c (grub_ext2_read_block): Initialize blknr in the beginning to avoid warnings with some compilers. * loader/ieee1275/multiboot2.c: Include grub/machine/loader.h. [__i386__] (grub_mb2_arch_boot): Avoid unnecessary cast. 2008-07-14 Pavel Roskin * kern/env.c (grub_register_variable_hook): Don't copy empty string, it leaks memory. Pass "" to grub_env_set(), it should handle constant strings. * commands/blocklist.c (grub_cmd_blocklist): Fix format warning. * commands/cmp.c (grub_cmd_cmp): Likewise. * kern/dl.c (grub_dl_flush_cache): Likewise. (grub_dl_load_core): Likewise. * kern/elf.c (grub_elf32_load_phdrs): Likewise. (grub_elf64_load_phdrs): Likewise. 2008-07-13 Pavel Roskin * lib/LzmaEnc.c (LzmaEnc_SetProps): Fix warning about comparison between signed and unsigned. (LzmaEnc_Finish): Fix warning about an unused parameter. 2008-07-13 Bean * Makefile.in (enable_lzo): New rule. * conf/i386-pc.rmk (grub_mkimage_SOURCES): New test with enable_lzo. * configure.ac (ENABLE_LZO): New option --enable-lzo. * boot/i386/pc/lnxboot.S: #include . * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): Change its value according to the compression algorithm used, lzo or lzma. * util/i386/pc/grub-mkimage.c (compress_kernel): Use different compression algorithm according to configure macro. * kern/i386/pc/startup.S (codestart): Likewise. * kern/i386/pc/lzma_decode.S: New file. * include/grub/lib/LzFind.h: Likewise. * include/grub/lib/LzHash.h: Likewise. * include/grub/lib/LzmaDec.h: Likewise. * include/grub/lib/LzmaEnc.h: Likewise. * include/grub/lib/LzmaTypes.h: Likewise. * lib/LzFind.c: Likewise. * lib/LzmaDec.c: Likewise. * lib/LzmaEnc.c: Likewise. 2008-07-13 Bean * fs/ext2.c (EXT4_EXTENTS_FLAG): New macro. (grub_ext4_extent_header): New structure. (grub_ext4_extent): Likewise. (grub_ext4_extent_idx): Likewise. (grub_ext4_find_leaf): New function. (grub_ext2_read_block): Handle extents. 2008-07-12 Robert Millan * util/i386/pc/grub-mkrescue.in: s/grub-install/grub-mkrescue/g. 2008-07-11 Robert Millan * util/grub.d/40_custom.in: New file. Example on how to add custom entries to /etc/grub.d. * conf/common.rmk (%, update-grub_SCRIPTS, CLEANFILES): Install 40_custom (implicitly, by merging all the grub.d rules). 2008-07-11 Pavel Roskin * commands/read.c (grub_getline): Fix invalid memory access. Don't add newline to the variable value. * term/i386/pc/serial.c (GRUB_SERIAL_PORT_NUM): New constant. [!GRUB_MACHINE_PCBIOS] (serial_hw_io_addr): Add COM2 and COM3. (serial_hw_get_port): Check validity of the port number. (grub_cmd_serial): Check return value of serial_hw_get_port(). 2008-07-07 Pavel Roskin * boot/i386/pc/diskboot.S (notification_string): Replace "Loading kernel" with just "loading". This is shorter, less confusing and saves a few bytes for possible future changes. 2008-07-05 Pavel Roskin * disk/ata.c (grub_ata_dumpinfo): Don't output addressing and size for ATAPI devices, they are undefined. Output sector number in decimal form. * disk/ata.c: Use named constants for status bits. 2008-07-04 Pavel Roskin * kern/i386/linuxbios/init.c (grub_machine_init): Cast addr to grub_addr_t before casting it to the void pointer to fix a warning. Non-addressable regions are discarded earlier. (grub_arch_modules_addr): Cast _end to grub_addr_t. * kern/i386/linuxbios/table.c: Include grub/misc.h. (check_signature): Don't shadow table_header. (grub_linuxbios_table_iterate): Cast numeric constants to grub_linuxbios_table_header_t. * include/grub/i386/linuxbios/init.h: Add noreturn attribute to grub_stop(). * kern/ieee1275/init.c: Cast _start and _end to grub_addr_t to prevent warnings. * include/grub/misc.h (ALIGN_UP): Avoid unnecessary cast to a pointer, which can cause warnings. Support 64-bit addresses. * util/elf/grub-mkimage.c: Use GRUB_TARGET_SIZEOF_LONG instead of sizeof(long). This fixes PowerPC image generation on x86_64. 2008-07-04 Robert Millan This fixes a performance issue when pc & gpt partmap iterators didn't abort iteration even after our hook found what it was looking for (often causing expensive probes of non-existent drives). Some callers relied on previous buggy behaviour, since they would raise an error when their own hooks caused early abortion of its iteration. * kern/device.c (grub_device_open): Improve error message. * disk/lvm.c (grub_lvm_open): Likewise. * disk/raid.c (grub_raid_open): Likewise. * partmap/pc.c (pc_partition_map_iterate): Abort parent iteration when hook requests it, independently of grub_errno. (pc_partition_map_probe): Do not fail when find_func() caused early abortion of pc_partition_map_iterate(). * partmap/gpt.c (gpt_partition_map_iterate): Abort parent iteration when hook requests it, independently of grub_errno. (gpt_partition_map_probe): Do not fail when find_func() caused early abortion of gpt_partition_map_iterate(). * kern/partition.c (grub_partition_iterate): Abort parent iteration when hook requests it, independently of grub_errno. Do not fail when part_map_iterate_hook() caused early abortion of p->iterate(). * util/biosdisk.c (grub_util_biosdisk_get_grub_dev): Do not fail when grub_partition_iterate() returned with non-zero. 2008-07-03 Pavel Roskin * disk/ata.c (grub_ata_pio_write): Check status before writing, like we do in grub_ata_pio_read(). (grub_ata_readwrite): Always write individual sectors. Fix the sector count for the remainder. (grub_ata_write): Enable writing to ATA devices. Correctly report error for ATAPI devices. 2008-07-02 Pavel Roskin * boot/i386/pc/cdboot.S: Add _start entry to fix a linker warning. * disk/ata.c (grub_ata_readwrite): Don't increment sector number for every read sector, we already increment it for the whole batch. This fixes reading more than 256 sectors at once. * util/grub-editenv.c (cmd_info): Cast argument to long explicitly. ptrdiff_t reduces to int on i386. * util/grub-editenv.c (main): Be specific which parameter is missing. * disk/memdisk.c (memdisk_addr): Make a pointer to fix warnings. (memdisk): Make memdisk_orig_addr a pointer. * fs/reiserfs.c (grub_reiserfs_read): Fix misuse of grub_size_t for file offsets, use grub_off_t instead. Fix printf format warnings. * fs/reiserfs.c: Remove #warning, TODO list items don't belong there. Real unexpected warnings should not drown in the noise about known problems. * commands/hexdump.c (grub_cmd_hexdump): Fix misuse of grub_disk_addr_t for memory addresses. * loader/aout.c (grub_aout_load): Cast load_addr to pointer explicitly to fix a warning. * util/grub-editenv.c (cmd_info): Fix warning in printf format. * Makefile.in (MODULE_LDFLAGS): New variable. * aclocal.m4 (grub_PROG_LD_BUILD_ID_NONE): New macro. Check if the linker accepts --build-id=none. * configure.ac: Call grub_PROG_LD_BUILD_ID_NONE. Substitute MODULE_LDFLAGS. * genmk.rb: Use MODULE_LDFLAGS when linking modules. * fs/xfs.c (struct grub_xfs_dir_header): Use names similar to those in Linux XFS code. Provide a way to access 64-bit parent inode. (grub_xfs_iterate_dir): Use the new names. Avoid reading past the end of struct grub_xfs_dir_header. 2008-07-02 Bean * include/grub/ieee1275.h (grub_ieee1275_flag): New constant GRUB_IEEE1275_FLAG_CANNOT_INTERPRET, GRUB_IEEE1275_FLAG_FORCE_CLAIM and GRUB_IEEE1275_FLAG_NO_ANSI. * kern/ieee1275/cmain.c (grub_ieee1275_find_options): Set flag GRUB_IEEE1275_FLAG_CANNOT_INTERPRET, GRUB_IEEE1275_FLAG_FORCE_CLAIM and GRUB_IEEE1275_FLAG_NO_ANSI for Open Hackware. * kern/ieee1275/ieee1275.c (grub_ieee1275_interpret): Return immediately if GRUB_IEEE1275_FLAG_CANNOT_INTERPRET is set. * kern/ieee1275/init.c (grub_claim_heap): Claim memory directly if GRUB_IEEE1275_FLAG_FORCE_CLAIM is set. * term/ieee1275/ofconsole.c (grub_ofconsole_writeesc): Don't output esc sequence on non ANSI terminal. (grub_ofconsole_gotoxy): Emulate backspace key on non ANSI terminal. * util/elf/grub-mkimage.c (add_segments): Move ELF header to the beginning of file. 2008-07-02 Bean * conf/common.rmk (bin_UTILITIES): Add grub-editenv. (grub_editenv_SOURCES): New variable. (pkglib_MODULES): Add loadenv.mod. (loadenv_mod_SOURCES): New variable. (loadenv_mod_CFLAGS): Likewise. (loadenv_mod_LDFLAGS): Likewise. * include/grub/envblk.h: New file. * util/envblk.c: New file. * util/grub-editenv.c: New file. * commands/loadenv.c: New file. 2008-07-01 Pavel Roskin * include/multiboot2.h (struct multiboot_tag_module): Use char, not unsigned char. This fixes warnings and is consistent with other tags. * disk/fs_uuid.c (search_fs_uuid): Correctly increment count. * normal/parser.y: Define YYENABLE_NLS as 0 to fix warnings. * term/tparm.c (analyze): Always set *popcount. * loader/i386/pc/linux.c (grub_rescue_cmd_linux): Remove useless cast to fix a warning. * loader/i386/pc/multiboot2.c (grub_mb2_arch_module_alloc): Use cast to suppress a warning. * fs/afs.c (grub_afs_read_block): Return grub_disk_addr_t, as grub_fshelp_read_file() expects. * fs/fat.c: Fix UUID calculation on big-endian systems. We write uuid as a 32-bit value in CPU byte order, so declare and use it as such. * disk/raid.c: Cast grub_dprintf() arguments to unsigned long long if the format specifier expects it. * partmap/gpt.c (gpt_partition_map_iterate): Likewise. * partmap/pc.c (pc_partition_map_iterate): Likewise. * fs/ntfs.c (grub_ntfs_uuid): Cast data->uuid to unsigned long long to fix a warning. * fs/reiserfs.c (grub_reiserfs_read): Change casts in grub_dprintf() arguments to fix warnings. 2008-06-30 Pavel Roskin * util/i386/pc/grub-setup.c (setup): Write install_dos_part and install_bsd_part immediately before core.img is embedded or modified on disk. This fixes core.img verification if core.img cannot be embedded. * util/i386/pc/grub-setup.c (setup): Use core_path_dev, not core_path to calculate the blocklist. Patch from Javier Martín 2008-06-29 Robert Millan * fs/xfs.c (GRUB_XFS_FSB_TO_BLOCK): New macro. Maps filesystem block to disk block. (grub_xfs_read_block): Use GRUB_XFS_FSB_TO_BLOCK() on result. Patch from Niels Böhm 2008-06-29 Robert Millan * util/update-grub_lib.in (font_path): Search for fonts in /boot/grub first, which is more likely to be readable (we aren't deciding where fonts live, just looking for them). 2008-06-26 Pavel Roskin * util/biosdisk.c (read_device_map): Don't leave dead map entries for devices failing stat() check. * util/i386/pc/grub-setup.c (setup): Don't reuse core_path, use core_path_dev for the core.img path on the target device. 2008-06-26 Robert Millan * disk/fs_uuid.c: New file. * conf/common.rmk (pkglib_MODULES): Add `fs_uuid.mod'. (fs_uuid_mod_SOURCES, fs_uuid_mod_CFLAGS) (fs_uuid_mod_LDFLAGS): New variables. * include/grub/disk.h (grub_disk_dev_id): Add `GRUB_DISK_DEVICE_UUID_ID'. * kern/disk.c (grub_disk_dev_iterate): Allow disk devices not to implement iterate(). 2008-06-26 Robert Millan * util/grub.d/10_linux.in: Avoid passing UUIDs to Linux when either "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" does not exist, or when a Linux image includes no initrd. 2008-06-21 Javier Martín * util/i386/pc/grub-setup.c (setup): Remove literal "core.img" in a call to resolve the core image location that effectively appended the name twice. 2008-06-21 Robert Millan * util/grub.d/00_header.in: Move last prepare_grub_to_access_device() call from here ... * util/grub.d/10_hurd.in: ... to here ... * util/grub.d/10_linux.in: ... and here. 2008-06-19 Robert Millan * kern/main.c (grub_main): Export `prefix' variable immediately after it has been set by grub_machine_set_prefix(). 2008-06-19 Robert Millan * commands/search.c (search_label, search_fs_uuid, search_file): Print search result when not saving to variable, not the other way around. When saving to variable, abort iteration as soon as a match is found. 2008-06-19 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): Remove check for partition that provides /boot/grub. Its logic is flawed, as it prevents prepare_grub_to_access_device() from being called multiple times. 2008-06-19 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): Issue "insmod" command directly when abstraction modules are needed, instead of relying on GRUB_PRELOAD_MODULES (which had no effect since it had already been processed). 2008-06-19 Pavel Roskin * conf/i386-efi.rmk: Recompile grub-mkimage.c if Makefile has changed. This is needed in case GRUB_LIBDIR changes. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-linuxbios.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. 2008-06-18 Pavel Roskin * conf/powerpc-ieee1275.rmk (kernel_elf_SOURCES): Rename kernel_elf_symlist.c to symlist.c for consistency with other architectures. Update all users. * conf/sparc64-ieee1275.rmk (kernel_elf_SOURCES): Likewise. 2008-06-18 Robert Millan * util/i386/pc/grub-install.in: If the drive is LVM or RAID, prepend it in prefix. * util/i386/pc/grub-setup.c (main): Don't handle prefix at all. Set `must_embed' to 1 when root_dev is a RAID device. When dest_dev is a RAID device, run setup() for all members independently on whether LVM abstraction is being used. (setup): Don't handle prefix at all; let grub-mkimage take care of it. If grub-mkimage has set `*install_dos_part == -2', don't override this value. Perform *install_dos_part adjustments independently on whether we're embedding or not. Clarify error message when image is too big for embedding. Remove duplicate *install_dos_part stanza. 2008-06-17 Robert Millan * term/ieee1275/ofconsole.c (fgcolor, bgcolor): Remove variables. (grub_ofconsole_normal_color, grub_ofconsole_highlight_color): New variables. (grub_ofconsole_setcolor, grub_ofconsole_getcolor): Load/store values in grub_ofconsole_normal_color and grub_ofconsole_highlight_color (they're not directly related to background and foreground). (grub_ofconsole_setcolorstate): Extract background and foreground from grub_ofconsole_normal_color and grub_ofconsole_highlight_color. 2008-06-17 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): Use /boot/grub for the check in last commit, not /boot (they could be different partitions). 2008-06-16 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): If we were asked to setup access for the same partition that provides /boot, don't bother using UUIDs since our root already has the value we want. 2008-06-16 Robert Millan * util/biosdisk.c (convert_system_partition_to_system_disk): Detect I2O devices. Patch from Sven Mueller . 2008-06-16 Robert Millan * util/update-grub.in: Check for $EUID instead of $UID. Reported by Vincent Zweije. 2008-06-16 Bean * fs/ext2.c (grub_ext2_blockgroup): Revert to pre-journal state. (grub_ext2_read_block): Likewise. (grub_ext2_read_inode): Likewise. (grub_ext2_mount): Likewise. (grub_ext2_close): Likewise. (grub_ext3_get_journal): Removed. * fs/reiserfs.c (grub_reiserfs_get_item): Revert to pre-journal state. (grub_reiserfs_read_symlink): Likewise. (grub_reiserfs_mount): Likewise. (grub_reiserfs_open): Likewise. (grub_reiserfs_read): Likewise. (grub_reiserfs_close): Likewise. (grub_reiserfs_get_journal): Removed. * fs/fshelp.c (grub_fshelp_read): Removed. (grub_fshelp_map_block): Likewise. * include/grub/fshelp.h (grub_fshelp_journal_type): Removed. (grub_fshelp_journal): Likewise. (grub_fshelp_read): Likewise. (grub_fshelp_map_block): Likewise. 2008-06-16 Pavel Roskin * conf/powerpc-ieee1275.rmk: Remove -msoft-float, we don't use floating point anymore. * include/grub/powerpc/libgcc.h: Leave only necessary exports. 2008-06-15 Pavel Roskin * commands/ls.c (grub_ls_list_files): Use integer calculations for human readable format, avoid floating point use. * kern/misc.c (grub_ftoa): Remove. (grub_vsprintf): Remove floating point support. 2008-06-15 Robert Millan * util/grub.d/10_linux.in: Use the underlying device for loop-AES devices. Reported by Max Vozeler. 2008-06-15 Robert Millan * util/i386/pc/grub-mkimage.c (generate_image): If we included a drive in our prefix, set install_{dos,bsd}_part = -2 to indicate this can be skipped later. (main): If a memdisk was requested, add "(memdisk)" drive explicitly to the beginning of the prefix. * kern/i386/pc/init.c (make_install_device): Remove memdisk check. It is assumed that if we have a memdisk, grub-mkimage has set grub_prefix to include the "(memdisk)" drive in it. 2008-06-15 Robert Millan * term/i386/pc/console.c [GRUB_MACHINE_LINUXBIOS] (grub_console_init): Initialize keyboard controller after registering the terminal, so that grub_printf() can be called from grub_keyboard_controller_init(). 2008-06-15 Robert Millan * fs/sfs.c (grub_sfs_read_extent): Fix the count of nodes in extent-btree which is written as big endian on disk. Reported by Alain Greppin . 2008-06-14 Robert Millan * util/i386/efi/grub-install.in (modules): Remove `_chain'. * util/i386/pc/grub-install.in (modules): Likewise. 2008-06-13 Pavel Roskin * commands/ls.c (grub_ls_list_files): Fix format warnings. 2008-06-13 Bean * commands/hexdump.c (grub_cmd_hexdump): Adjust offset for partition. * fs/ext2.c (grub_ext3_get_journal): Fix revoke block handling. * fs/fshelp.c (grub_fshelp_map_block): Don't map block 0 as it's used to indicate sparse block. 2008-06-12 Pavel Roskin * fs/ext2.c (grub_ext2_read_inode): Don't normalize block number, grub_fshelp_read() does it for us. * fs/fshelp.c (grub_fshelp_read): New function. Implement linear disk read with journal translation. * fs/ext2.c: Use grub_fshelp_read() instead of grub_disk_read(). * include/grub/fshelp.h: Declare grub_fshelp_read(). 2008-06-09 Pavel Roskin * fs/minix.c (grub_minix_mount): Handle error reading superblock. 2008-06-08 Robert Millan * util/i386/pc/grub-setup.c (main): If install drive is an LVM, don't append the RAID prefix afterwards. Reported by Clint Adams. 2008-06-08 Robert Millan Based on description from Pavel: * kern/disk.c (grub_disk_check_range): Rename to ... (grub_disk_adjust_range): ... this. Add a comment explaining the tasks performed by this function. 2008-06-08 Robert Millan * include/grub/ntfs.h (struct grub_ntfs_bpb): Rename `serial_number' to `num_serial' (for consistency with other variables). (struct grub_ntfs_data): Add `uuid' member. * fs/ntfs.c (grub_ntfs_mount): Initialize `data->uuid'. (grub_ntfs_uuid): New function. (grub_ntfs_fs): Reference grub_ntfs_uuid() in `uuid' struct member. 2008-06-07 Pavel Roskin * util/biosdisk.c (open_device): Revert last change to the function, it broke installation. The sector needs to be different dependent on which device is opened. 2008-06-06 Robert Millan Ensure GRUB_KERNEL_MACHINE_DATA_END is always consistent with the rest of GRUB, and breakage doesn't happen if its value were modified. * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): Redefine as an offset from `GRUB_KERNEL_MACHINE_DATA_END' instead of a constant (same value). * kern/i386/pc/startup.S: Replace hardcoded `0x50' with `GRUB_KERNEL_MACHINE_DATA_END' (same value). 2008-06-06 Robert Millan * util/biosdisk.c (open_device): Do not modify sector offset when accessing a partition. kern/disk.c already handles this for us. 2008-06-06 Robert Millan * util/grub-emu.c (grub_machine_init): Move code in this function from here ... (main): ... to here (before grub_util_biosdisk_init() call, to prevent segfault in case grub_printf() is called). * util/i386/pc/grub-install.in: Append `--device-map=${device_map}' to grub_probe. Update all users not to explicitly add it again. (grub_device): New variable; contains corresponding device for grubdir. (fs_module, partmap_module, devabstraction_module): Pass `--device ${grub_device}' to grub_probe to avoid traversing /dev every time. 2008-06-05 Robert Millan * normal/misc.c (grub_normal_print_device_info): When a filesystem UUID is found, print it (same layout as with labels). 2008-06-04 Robert Millan * util/biosdisk.c (get_drive): Rename to ... (find_grub_drive): ... this. Update all users. (get_os_disk): Rename to ... (convert_system_partition_to_system_disk): ... this. Update all users. (find_drive): Rename to ... (find_system_device): ... this. Update all users. 2008-06-04 Robert Millan * util/biosdisk.c (get_os_disk): Handle IDA devices. * util/grub-mkdevicemap.c (get_mmc_disk_name) (make_device_map): Likewise. 2008-06-01 Robert Millan * util/biosdisk.c (get_drive): Verify that `map[i].drive' is non-NULL before dereferencing it. * fs/fat.c (struct grub_fat_bpb): Move fat32-specific fields into a union with fat12/fat16-specific ones. Add some new fields, including `num_serial' for both versions. (struct grub_fat_data): Add `uuid' member. (grub_fat_mount): Refer to fat32-specific fields in `bpb' by their new names. Initialize `data->uuid' using `num_serial'. (grub_fat_uuid): New function. (grub_fat_fs): Reference grub_fat_uuid() in `uuid' struct member. * fs/reiserfs.c (grub_reiserfs_superblock): Add `uuid' field. (grub_reiserfs_uuid): New function. (grub_reiserfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member. * fs/xfs.c (grub_xfs_sblock): Add `uuid' field. (grub_xfs_uuid): New function. (grub_xfs_fs): Reference grub_reiserfs_uuid() in `uuid' struct member. 2008-06-01 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): Generate code that is backward compatible with pre-uuid search command. 2008-05-31 Robert Millan * disk/i386/pc/biosdisk.c (grub_biosdisk_iterate): Iterate through floppies after everything else, to ensure floppy drive isn't accessed unnecessarily (patch from Bean). 2008-05-31 Robert Millan * commands/search.c (search_label, search_fs_uuid, search_file): Do not print device names when we were asked to set a variable. 2008-05-31 Robert Millan * term/ieee1275/ofconsole.c (grub_ofconsole_setcursor): Implement using "cursor-on" and "cursor-off" commands (understood at least by the Open Firmware flavour on OLPC). 2008-05-31 Michael Gorven * term/terminfo.c (grub_terminfo_set_current): Correct vt100 cursor on and off sequences. 2008-05-31 Robert Millan * util/update-grub_lib.in: Replace `grub-probe' with `${grub_probe}'. * util/update-grub.in: Likewise. 2008-05-30 Pavel Roskin * util/biosdisk.c (linux_find_partition): Simplify logic and make the code more universal. Keep special processing for devfs, but use a simple rule for all other devices. If the device ends with a number, append 'p' and the partition number. Otherwise, append only the partition number. 2008-05-30 Robert Millan * util/update-grub.in (GRUB_DISABLE_LINUX_UUID): Export variable. * util/grub.d/10_linux.in: If GRUB_DEVICE_UUID is set, and GRUB_DISABLE_LINUX_UUID isn't true, use the filesystem UUIDs as the `root' parameter to Linux. 2008-05-30 Robert Millan * commands/search.c (options): Rename --fs_uuid to --fs-uuid. * util/update-grub_lib.in (prepare_grub_to_access_device): Replace --fs_uuid with --fs-uuid. * util/update-grub.in: Allow filesystem UUID probes to fail (since not all filesystems support them). 2008-05-30 Robert Millan * fs/ext2.c (grub_ext2_uuid): Use `04x' instead of '02x' as grub_printf() flags, since we're printing in units of 2 bytes. 2008-05-30 Robert Millan * util/grub.d/00_header.in: Remove obsolete comment referencing convert_system_path_to_grub_path(). * util/update-grub.in: Likewise. * util/update-grub_lib.in (is_path_readable_by_grub): New function. (convert_system_path_to_grub_path): Add a warning message explaining that this function is deprecated. Rely on is_path_readable_by_grub() for the readability checks. (font_path): Use is_path_readable_by_grub() for the readability check rather than convert_system_path_to_grub_path(). 2008-05-30 Robert Millan * util/update-grub_lib.in (prepare_grub_to_access_device): New function. * util/update-grub.in: Set `GRUB_FONT_PATH' to the system path, without converting it first. * util/grub.d/00_header.in: Use prepare_grub_to_access_device() to setup grub.cfg for access to font file, and afterwards call it again to set the root device. 2008-05-30 Robert Millan * commands/search.c (options): Add --fs_uuid option. (search_fs_uuid): New function. (grub_cmd_search): Fix --set argument passing. Use search_fs_uuid() when requested via --fs_uuid. (grub_search_init): Update help message. * fs/ext2.c (struct grub_ext2_sblock): Rename `unique_id' to `uuid' and redeclare it as an array of 16-bit words. (grub_ext2_uuid): New function. (grub_ext2_fs): Reference grub_ext2_uuid() in `uuid' struct member. * include/grub/fs.h (struct grub_fs): Add `uuid' struct member. * util/update-grub.in (GRUB_DEVICE_UUID, GRUB_DEVICE_BOOT) (GRUB_DEVICE_BOOT_UUID): New variables. (GRUB_DRIVE. GRUB_DRIVE_BOOT. GRUB_DRIVE_BOOT_GRUB): Remove. * util/grub.d/00_header.in: Set root using `search --fs_uuid' command whenever possible. * util/grub.d/10_hurd.in: Avoid explicit use of root drive. Instead, just assume `root' variable has the right value. * util/grub.d/10_linux.in: Likewise. * util/grub-probe.c (probe): Probe for filesystem UUID when requested via PRINT_FS_UUID. (main): Recognise `-t fs_uuid' argument. 2008-05-30 Robert Millan * util/biosdisk.c (map): Redefine structure to hold information about GRUB drive name. (get_drive): Reimplement without assuming (and verifying) BIOS-like drive names. (call_hook): Remove. (grub_util_biosdisk_iterate): Access drive names via `.drive' struct member. Assume drive has partitions. (grub_util_biosdisk_open): Access device names via `.device' struct member. (open_device): Likewise. (find_drive): Likewise. (read_device_map): Adjust map[] usage to match the new struct definition. Don't check for duplicates (still possible, but not cheap anymore). (grub_util_biosdisk_fini): Free malloced buffers referenced by map[]. (make_device_name): Remove assumption of BIOS-like drive names. 2008-05-30 Pavel Roskin * conf/i386-efi.rmk (normal/execute.c_DEPENDENCIES): Remove, as compiling execute.c doesn't need grub_script.tab.h anymore. (normal/command.c_DEPENDENCIES): Likewise. (normal/function.c_DEPENDENCIES): Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-linuxbios.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. 2008-05-29 Pavel Roskin * disk/lvm.c (grub_lvm_scan_device): Check for the buffer end when scanning metadata for volume group name. * include/grub/script.h: Don't include grub_script.tab.h. It's a generated file, which may only be included from the files with DEPENDENCIES rules in the makefile. Don't use typedef YYSTYPE, use union YYSTYPE, as the later allows forward declaration. * normal/lexer.c: Don't use typedef YYSTYPE, use union YYSTYPE. 2008-05-29 Robert Millan * term/i386/pc/at_keyboard.c: Include `grub/machine/machine.h'. (OLPC_UP, OLPC_DOWN, OLPC_LEFT, OLPC_RIGHT): New macros. [GRUB_MACHINE_IEEE1275] (keyboard_map): Add OLPC scan codes (grub_console_checkkey): Add grub_dprintf() call to report unknown scan codes. 2008-05-29 Robert Millan * term/i386/pc/at_keyboard.c (grub_console_checkkey): Add support for control key combinations. 2008-05-29 Robert Millan * util/powerpc/ieee1275/grub-install.in: Move from here ... * util/ieee1275/grub-install.in: ... to here. * powerpc-ieee1275.rmk (grub_install_SOURCES): Update location. * i386-ieee1275.rmk (sbin_SCRIPTS): New variable. (grub_install_SOURCES): Likewise. 2008-05-29 Robert Millan * fs/affs.c: Update copyright year. * fs/ext2.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfsplus.c: Likewise. * fs/ntfs.c: Likewise. * fs/xfs.c: Likewise. * include/grub/fshelp.h: Likewise. * util/grub-mkdevicemap.c: Likewise. 2008-05-28 Robert Millan * util/update-grub.in: Allow chmod call to fail, since /boot/grub/ might need to be fatfs to support some firmware implementations (e.g. OFW or EFI). 2008-05-28 Robert Millan * util/biosdisk.c (linux_find_partition, get_os_disk): Handle MMC devices. * util/grub-mkdevicemap.c (get_mmc_disk_name) (make_device_map): Likewise. 2008-05-20 Bean * fs/fshelp.c (grub_fshelp_map_block): New function. (grub_fshelp_find_file): Use 64-bit type for pos and block address. Use `>>' and `&' operator to avoid 64-bit divide and modulo. * include/grub/fshelp.h (grub_fshelp_journal_type): New enum. (GRUB_FSHELP_JOURNAL_UNUSED_MAPPING): New macro. (grub_fshelp_journal): New structure. (grub_fshelp_map_block): New function prototype. (grub_fshelp_read_file): Use grub_disk_addr_t as block type. (grub_fshelp_map_block): Likewise. * fs/ext2.c (EXT3_FEATURE_COMPAT_HAS_JOURNAL): New macro. (EXT3_JOURNAL_MAGIC_NUMBER): Likewise. (EXT3_JOURNAL_DESCRIPTOR_BLOCK): Likewise. (EXT3_JOURNAL_COMMIT_BLOCK): Likewise. (EXT3_JOURNAL_SUPERBLOCK_V1): Likewise. (EXT3_JOURNAL_SUPERBLOCK_V2): Likewise. (EXT3_JOURNAL_REVOKE_BLOCK): Likewise. (EXT3_JOURNAL_FLAG_ESCAPE): Likewise. (EXT3_JOURNAL_FLAG_SAME_UUID): Likewise. (EXT3_JOURNAL_FLAG_DELETED): Likewise. (EXT3_JOURNAL_FLAG_LAST_TAG): Likewise. (grub_ext2_sblock): New members for journal support. (grub_ext3_journal_header): New structure. (grub_ext3_journal_revoke_header): Likewise. (grub_ext3_journal_block_tag): Likewise. (grub_ext3_journal_sblock): Likewise. (grub_fshelp_node): New members logfile and journal. (grub_ext2_read_block): Change block type to grub_disk_addr_t. Use grub_fshelp_map_block to get real block number. (grub_ext2_blockgroup): Use grub_fshelp_map_block to get real block number. (grub_ext2_read_inode): Likewise. (grub_ext3_get_journal): New function. (grub_read_inode): Initialize journal using grub_ext3_get_journal. (grub_ext2_close): Release memory used by journal. * fs/reiserfs.c (REISERFS_MAGIC_STRING): Changed to "ReIsEr". (REISERFS_MAGIC_DESC_BLOCK): New macro. (grub_reiserfs_transaction_header): Renamed to grub_reiserfs_description_block, replace field data with real_blocks. (grub_reiserfs_commit_block): New structure. (grub_reiserfs_data): New member journal. (grub_reiserfs_get_item): Use grub_fshelp_map_block to get real block number. (grub_reiserfs_read_symlink): Likewise. (grub_reiserfs_iterate_dir): Likewise. (grub_reiserfs_open): Likewise. (grub_reiserfs_read): Likewise. (grub_reiserfs_get_journal): New function. (grub_reiserfs_mount): Use "ReIsEr" as super block magic, as there are three varieties ReIsErFs, ReIsEr2Fs and ReIsEr3Fs. Initialize journal using grub_reiserfs_get_journal. (grub_reiserfs_close): Release memory used by journal. * fs/affs.c (grub_affs_read_block): Change block type to grub_disk_addr_t. Use grub_divmod64 to do 64-bit division. * fs/afs.c (grub_afs_read_block): Change block type to grub_disk_addr_t. * fs/hfsplus.c (grub_hfsplus_read_block): Likewise. * fs/ntfs.c (grub_ntfs_read_block): Likewise. * fs/udf.c (grub_udf_read_block): Change block type to grub_disk_addr_t. Use type cast to avoid warning. * fs/xfs.c (grub_xfs_read_block): Likewise. 2008-05-16 Christian Franke * commands/cat.c (grub_cmd_cat): Remove non-ESC keys from keyboard queue to ensure that break with ESC will always work. * commands/sleep.c (grub_interruptible_millisleep): Likewise. Remove ESC from keyboard queue. 2008-05-16 Christian Franke * util/biosdisk.c: [__CYGWIN__] Add includes. (grub_util_biosdisk_open): Use Linux code also for Cygwin. (get_os_disk): Move variable declarations to OS specific parts to avoid warning. [__GNU__] (get_os_disk): Fix /dev/sdXsN case. [__CYGWIN__] (get_os_disk): Add Cygwin /dev/sdXN device names. (grub_util_biosdisk_get_grub_dev): Use Linux code also for Cygwin. * util/getroot.c: [__CYGWIN__] Add includes. (strip_extra_slashes): Fix "/" case. [__CYGWIN__] (get_win32_path): New function. [__CYGWIN__] (grub_get_prefix): Add conversion to win32 path. [__CYGWIN__] (find_root_device): Disable. [__CYGWIN__] (get_bootsec_serial): New function. [__CYGWIN__] (find_cygwin_root_device): Likewise. [__linux__] (grub_guess_root_device): Add early returns to simplify structure. [__CYGWIN__] (grub_guess_root_device): Call find_cygwin_root_device. [__linux__] (grub_util_get_dev_abstraction): Enable LVM and RAID check for Linux only. 2008-05-15 Bean * kern/i386/pc/startup.S (grub_console_getkey): Workaround for the keyboard hang problem in apple's intel mac. 2008-05-09 Robert Millan * util/biosdisk.c (linux_find_partition, get_os_disk): Handle Virtio devices. * util/grub-mkdevicemap.c (get_virtio_disk_name) (make_device_map): Likewise. Reported by Aurelien Jarno 2008-05-07 Ian Campbell * util/biosdisk.c (get_os_disk): Recognise xvd type disks. * util/grub-mkdevicemap.c (get_xvd_disk_name): New function. (make_device_map): Output entries for xvd type disks. 2008-05-07 Robert Millan * util/biosdisk.c (linux_find_partition, get_os_disk): Handle CCISS devices. * util/grub-mkdevicemap.c (get_cciss_disk_name) (make_device_map): Likewise. Reported by Roland Dreier 2008-05-07 Robert Millan * disk/lvm.c (grub_lvm_scan_device): Detect errors in an additional grub_strstr() call. Correct a few mistakes in failure path handling. 2008-05-06 Robert Millan * util/update-grub_lib.in (make_system_path_relative_to_its_root): Do not print a trailing slash (therefore, the root directory is an empty string). (convert_system_path_to_grub_path): Do not remove trailing slash from make_system_path_relative_to_its_root() output. * util/i386/pc/grub-install.in: Add trailing slash to output from make_system_path_relative_to_its_root(). 2008-05-06 Robert Millan * util/grub-fstest.c (grub_refresh): Call `fflush (stdout)'. This ensures that output lines aren't intermangled with those sent to stderr (via grub_util_info()). * util/grub-probe.c (grub_refresh): Likewise. * util/i386/pc/grub-setup.c (grub_refresh): Likewise. 2008-05-05 Christian Franke * util/grub-mkdevicemap.c (get_floppy_disk_name) [__CYGWIN__]: Add Cygwin device names. (get_ide_disk_name) [__CYGWIN__]: Likewise. (get_scsi_disk_name) [__CYGWIN__]: Likewise. (check_device): Return error instead of success on empty name. (make_device_map): Move label inside linux specific code to prevent compiler warning. 2008-04-30 Robert Millan Based on patch from Fabian Greffrath * util/grub.d/10_linux.in: Add ${GRUB_CMDLINE_LINUX_DEFAULT} to the first boot option. * util/update-grub.in: Export GRUB_CMDLINE_LINUX_DEFAULT. 2008-04-29 Robert Millan * docs/grub.cfg: New file (example GRUB configuration). 2008-04-26 Robert Millan * DISTLIST: Sort (sort -u < DISTLIST | sponge DISTLIST). Add `loader/i386/ieee1275/linux.c', `loader/i386/ieee1275/linux_normal.c' and `disk/ieee1275/nand.c'. 2008-04-25 Bean * Makefile.in (RMKFILES): Add missing arch i386-ieee1275 and i386-linuxbios. * commands/hexdump.c (grub_cmd_hexdump): Support dumping of device, change the buffer size to 4096 for cdrom device. * conf/i386-ieee1275.rmk (pkglib_MODULES): Add _linux.mod, linux.mod and nand.mod. (_linux_mod_SOURCES): New variable. (_linux_mod_CFLAGS): Likewise. (_linux_mod_LDFLAGS): Likewise. (linux_mod_SOURCES): Likewise. (linux_mod_CFLAGS): Likewise. (linux_mod_LDFLAGS): Likewise. (nand_mod_SOURCES): Likewise. (nand_mod_CFLAGS): Likewise. (nand_mod_LDFLAGS): Likewise. * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Return GRUB_ERR_UNKNOWN_DEVICE instead of GRUB_ERR_BAD_DEVICE if no device type property. (nand device in olpc don't have this property) * include/grub/disk.h (grub_disk_dev_id): New macro GRUB_DISK_DEVICE_NAND_ID. * include/grub/i386/ieee1275/loader.h (grub_rescue_cmd_linux): New function prototype. (grub_rescue_cmd_initrd): Likewise. * include/grub/i386/linux.h (GRUB_LINUX_OFW_SIGNATURE): New macro. (linux_kernel_params): Add new member ofw_signature, ofw_num_items, ofw_cif_handler and ofw_idt, adjust padding number. * include/grub/i386/pc/memory.h (grub_upper_mem): Export it if GRUB_MACHINE_IEEE1275 is defined. * include/grub/ieee1275/ieee1275.h (grub_available_iterate): Use NESTED_FUNC_ATTR attribute on the hook parameter. * kern/powerpc/ieee1275/init.c (grub_claim_heap): Use NESTED_FUNC_ATTR on nested function heap_init. (grub_upper_mem): New variable for i386-ieee1275. (grub_get_extended_memory): New function for i386-ieee1275. (grub_machine_init): Call grub_get_extended_memory for i386-ieee1275. * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Use NESTED_FUNC_ATTR on the hook parameter. Don't quit if no device type property. * loader/i386/ieee1275/linux.c: New file. * loader/i386/ieee1275/linux_normal.c: New file. * disk/ieee1275/nand.c: New file. 2008-04-18 Thomas Schwinge * util/i386/pc/grub-mkrescue.in (grub_mkimage): Don't overwrite correct value. * util/powerpc/ieee1275/grub-mkrescue.in (grub_mkimage): Likewise. 2008-04-18 Robert Millan Restructures early code path on ieee1275 to unify grub_main() as the first C function that is executed in every platform. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_init): New prototype. * kern/i386/ieee1275/startup.S (_start): Jump to grub_main() instead of cmain(). * kern/powerpc/ieee1275/crt0.S (_start): Likewise. * kern/ieee1275/cmain.c (cmain): Rename to ... * kern/ieee1275/cmain.c (grub_ieee1275_init): ... this. * kern/ieee1275/init.c (grub_machine_init): Call grub_ieee1275_init() at the beginning. 2008-04-18 Robert Millan * util/update-grub.in: Fix syntax error when setting `GRUB_PRELOAD_MODULES'. Reported by Stephane Chazelas 2008-04-17 Lubomir Kundrak * aclocal.m4 (grub_PROG_OBJCOPY_ABSOLUTE): take only .text section into account, newer toolchains generate unique build ids * configure.ac: remove the test for --build-id=none acceptance, we want build ids to be preserved * genmk.rb: add -R .note.gnu.build-id to objcopy, so build id far from other sections don't cause the raw binary images grow size 2008-04-15 Robert Millan * disk/lvm.c: Update copyright year. * kern/misc.c: Likewise. 2008-04-14 Vesa Jaaskelainen * disk/lvm.c (grub_lvm_scan_device): Add forgotten failure path when there is no memory left for physical volume name. 2008-04-14 Vesa Jaaskelainen * disk/lvm.c (grub_lvm_scan_device): Fix logical volume's physical volume name mapping to support bigger than 9 character names properly. 2008-04-13 Robert Millan * disk/i386/pc/biosdisk.c (grub_biosdisk_rw): Fix CHS limit check, as per http://www.allensmith.net/Storage/HDDlimit/Int13h.htm 2008-04-13 Christian Franke * util/i386/pc/grub-mkrescue.in: Add --emulation=floppy to create a floppy emulation boot CD when non emulation mode does not work. Enable Joliet CD filesystem extension. 2008-04-13 Robert Millan * kern/misc.c (grub_strncat): Fix off-by-one error. Reported by Zhang Huan * kern/env.c (grub_env_context_close): Clear current context, not previous one. Patch from Zhang Huan * kern/misc.c (grub_strcat): Minor speed optimization (same code size). 2008-04-13 Robert Millan Improve robustness when handling LVM. * disk/lvm.c (grub_lvm_getvalue): Return 0 when `*p' is NULL (and leave `*p' unmodified). (grub_lvm_iterate): Don't assume `vg->lvs != NULL' when iterating through it. (grub_lvm_memberlist): Don't assume `lv->vg->pvs != NULL' when iterating through it. (grub_lvm_open): Don't assume `vg->lvs != NULL' when iterating through it. (grub_lvm_scan_device): Check the return value (and fail gracefully when due) on each grub_lvm_getvalue() or grub_strstr() call. Don't assume `vg->pvs != NULL' when iterating through it. 2008-04-13 Robert Millan * gendistlist.sh (EXTRA_DISTFILES): Add `genpartmaplist.sh'. * genmk.rb (partmap): New variable. (CLEANFILES, PARTMAPFILES): Add #{partmap}. (#{partmap}): New target rule. * genpartmaplist.sh: New file. * Makefile.in (pkglib_DATA): Add partmap.lst. (partmap.lst): New target rule. * util/i386/pc/grub-mkrescue.in: Generate grub.cfg that loads needed modules (including all partition maps), instead of preloading them. 2007-04-13 Fabian Greffrath * util/grub.d/30_os-prober.in: New script. Use `os-prober' and `linux-boot-prober' (if installed) to detect other operating systems which are installed on the computer and add them to the boot menu. * conf/common.rmk: Build and install 30_os-prober. 2008-04-12 Robert Millan * kern/powerpc/ieee1275/init.c: Move from here ... * kern/ieee1275/init.c: ... to here. Update all users. * kern/powerpc/ieee1275/cmain.c: Move from here ... * kern/ieee1275/cmain.c: ... to here. Update all users. * kern/powerpc/ieee1275/openfw.c: Move from here ... * kern/ieee1275/openfw.c: ... to here. Update all users. * loader/powerpc/ieee1275/multiboot2.c: Move from here ... * loader/ieee1275/multiboot2.c: ... to here. Update all users. 2008-04-10 Pavel Roskin * configure.ac: Always use "_cv_" in cache variables for compatibility with Autoconf 2.62. 2008-04-07 Robert Millan Revert grub/machine/init.h addition by Pavel (since it breaks on i386-ieee1275 and others): * util/i386/pc/misc.c: Remove grub/machine/init.h. * util/powerpc/ieee1275/misc.c: Likewise. 2008-04-07 Robert Millan * util/grub-probe.c (probe): Improve error message. 2008-04-07 Robert Millan * util/biosdisk.c (read_device_map): Skip devices that don't exist (this prevents the presence of a bogus entry from ruining the whole thing). 2008-04-06 Pavel Roskin * util/biosdisk.c: Include grub/util/biosdisk.h. * util/grub-fstest.c (execute_command): Make static. * util/grub-mkdevicemap.c (check_device): Likewise. * util/i386/pc/misc.c: Include grub/machine/init.h. * util/powerpc/ieee1275/misc.c: Likewise. * util/lvm.c: Include grub/util/lvm.h. * util/misc.c: Include grub/kernel.h, grub/misc.h and grub/cache.h. * util/raid.c: Include grub/util/raid.h. (grub_util_getdiskname): Make static. * util/grub-emu.c (main): Remove calls to grub_hostfs_init() and grub_hostfs_fini(), as they are called from grub_init_all() and grub_fini_all() respectively. This fixes an infinite loop in grub-fstest due to double registration of hostfs. Reported by Christian Franke 2008-04-05 Pavel Roskin * bus/pci.c (grub_pci_iterate): For multifunction devices, probe all 8 functions. Otherwise, probe function 0 only. 2008-04-04 Pavel Roskin * commands/lspci.c (grub_lspci_iter): Print the bus number correctly. * commands/lspci.c (grub_pci_classes): Fix typos. (grub_lspci_iter): Don't print func twice. Print vendor ID before device ID, as it's normally done. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Fix signedness warnings. * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Likewise. * util/ieee1275/get_disk_name.c: Include config.h so that _GNU_SOURCE is defined and getline() is declared. Mark an unused argument as such. Fix a signedness warning. 2008-04-02 Pavel Roskin * genkernsyms.sh.in: Use more robust assignments for CC and srcdir. Quote srcdir. * gensymlist.sh.in: Likewise. Assert at the compile time that the symbol table is not empty. * disk/raid.c (grub_raid_memberlist): Fix a signedness warning. * fs/cpio.c (grub_cpio_read): Likewise. 2008-04-01 Pavel Roskin * disk/ata.c (grub_ata_open): Don't lose precision in disk->id. * disk/host.c (grub_host_open): Likewise. * disk/loopback.c (grub_loopback_open): Likewise. * disk/memdisk.c (grub_memdisk_open): Use a string pointer for disk->id as in disk/host.c, not a multi-character constant. * util/grub-fstest.c (cmd_cmp): Use fseeko(), not fseek(). The later is obsolete, potentially dangerous and sets a bad example. * util/i386/efi/grub-mkimage.c (make_header): Likewise. * util/misc.c (grub_util_get_image_size): Likewise. * disk/loopback.c (options): Improve help for "--partitions". * normal/arg.c (grub_arg_show_help): Fix spacing of the long options to align them with the short options, e.g. "echo -e". 2008-03-31 Bean * video/reader/png.c (grub_png_data): New member is_16bit and image_data. (grub_png_decode_image_header): Detect 16 bit png image. (grub_png_convert_image): New function to convert 16 bit image to 8 bit. (grub_png_decode_png): Call grub_png_convert_image for 16 bit image. (grub_video_reader_png): Release memory occupied by image_data. * fs/ntfs.c (find_attr): Handle non-resident attribute list larger than 4096 bytes. (grub_nfs_mount): Skip the test for sector per cluster. * include/grub/ntfs.h (MAX_SPC): Removed. 2008-03-31 Bean * conf/common.rmk (pkgdata_MODULES): Add afs.mod. (grub_probe_SOURCES): Add fs/afs.c. (grub_fstest_SOURCES): Likewise. (afs_mod_SOURCES): New variable. (afs_mod_CFLAGS): Likewise. (afs_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/afs.c. (grub_emu_SOURCES): Likewise. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * fs/afs.c: New file. 2008-03-30 Pavel Roskin * disk/host.c: Include grub/misc.h to fix a warning. * util/hostfs.c: Use GRUB_MOD_INIT and GRUB_MOD_FINI to fix warnings about implicit declarations. * fs/udf.c (grub_udf_mount): Fix warning about a shadowing a variable. * include/grub/i386/loader.h: Change declaration of grub_linux_boot() to match what grub_loader_set() expects. * util/getroot.c (grub_guess_root_device): Return const char* to fix a warning. * util/grub-probe.c (probe): Fix a warning about uninitialized abstraction_name variable. * util/i386/get_disk_name.c (grub_util_get_disk_name): Mark second argument as unused to fix a warning. * loader/i386/pc/multiboot2.c (grub_mb2_arch_elf64_hook): Add missing grub_error() call. * util/update-grub_lib.in: Define datarootdir, since Autoconf 2.60 and newer uses it to define datadir. * commands/sleep.c: Fix warning about implicit declaration. * disk/memdisk.c: Likewise. * loader/aout.c: Likewise. * loader/i386/bsd_normal.c: Likewise. * util/grub-probe.c: Likewise. * commands/i386/cpuid.c (has_longmode): Make static. * disk/i386/pc/biosdisk.c (cd_drive): Likewise. * include/grub/i386/bsd.h (bios_memmap_t): Remove, it's unused. * kern/i386/pc/startup.S (real_to_prot): Use %cs prefix to load GDT. This is more robust, as %ds can change. (grub_biosdisk_rw_int13_extensions): Don't clear %ds before calling real_to_prot(). (grub_biosdisk_get_diskinfo_int13_extensions): Likewise. 2008-03-28 Pavel Roskin * kern/i386/pc/startup.S: Assert that uncompressed functions don't spill beyond GRUB_KERNEL_MACHINE_RAW_SIZE. * kern/i386/pc/lzo1x.S: Remove all .align directives in the code, as they push parts of the code (error handlers) beyond GRUB_KERNEL_MACHINE_RAW_SIZE. Speed is not as important in this code as correctness and size. 2008-03-28 Pavel Roskin * kern/i386/pc/startup.S (grub_biosdisk_get_diskinfo_int13_extensions): When converting data block address to the real mode, keep offset minimal. This works around a bug in AWARD BIOS on old Athlon systems, which makes CD detection hang. 2008-03-26 Pavel Roskin * normal/color.c (grub_parse_color_name_pair): Make `name' a const. * include/grub/normal.h: Add grub_parse_color_name_pair() declaration. 2008-03-24 Bean * disk/i386/pc/biosdisk.c (cd_start): Removed. (cd_count): Removed. (cd_drive): New variable. (grub_biosdisk_get_drive): Don't check for (cdN) device. (grub_biosdisk_call_hook): Likewise. (grub_biosdisk_iterate): Change cdrom detection method. (grub_biosdisk_open): Replace cd_start with cd_drive. (GRUB_MOD_INIT): Use grub_biosdisk_get_cdinfo_int13_extension to detect cdrom device. * include/grub/i386/pc/biosdisk.h (GRUB_BIOSDISK_MACHINE_CDROM_START): Removed. (GRUB_BIOSDISK_MACHINE_CDROM_END): Removed. (GRUB_BIOSDISK_CDTYPE_NO_EMUL): New macro. (GRUB_BIOSDISK_CDTYPE_1_2_M): Likewise. (GRUB_BIOSDISK_CDTYPE_1_44_M): Likewise. (GRUB_BIOSDISK_CDTYPE_2_88_M): Likewise. (GRUB_BIOSDISK_CDTYPE_HARDDISK): Likewise. (GRUB_BIOSDISK_CDTYPE_MASK): Likewise. (grub_biosdisk_cdrp): New structure. (grub_biosdisk_get_cdinfo_int13_extensions): New function. * include/grub/i386/pc/kernel.h (grub_boot_drive): Export this variable. * kern/i386/pc/init.c (make_install_device): Don't use (cdN) as root device. * kern/i386/pc/startup.S (grub_biosdisk_get_cdinfo_int13_extensions): New function. 2008-03-20 Robert Millan Remove 2 TiB limit in ata.mod. * disk/ata.c (grub_ata_device): Promote `size' to grub_uint64_t. (grub_ata_dumpinfo): Print sector count with 0x%llx. (grub_ata_identify): Interpret `&info16[100]' as a pointer to grub_uint64_t instead of grub_uint32_t. 2008-03-05 Bean * loader/i386/pc/multiboot.c (grub_multiboot_get_bootdev): New function. (grub_multiboot): Set boot device. * boot/i386/pc/lnxboot.S (real_code_2): Set %dh to 0xFF. 2008-03-02 Bean * fs/reiserfs.c (grub_reiserfs_read_symlink): Add 0 at the end of symlink_buffer. 2008-03-01 Yoshinori K. Okuji * DISTLIST: Added docs/fdl.texi, docs/grub.texi, docs/mdate-sh and texinfo.tex. * docs/grub.texi: New file. Copied from GRUB Legacy, and slightly modified. * docs/fdl.texi: New file. * docs/mdate-sh: New file. Copied from gnulib. * docs/texinfo.tex: Likewise. * config.guess: Updated from gnulib. * install-sh: Likewise. 2008-02-28 Robert Millan * conf/i386-linuxbios.rmk (pkglib_MODULES): Add aout.mod. (aout_mod_SOURCES): New variable. (aout_mod_CFLAGS): Likewise. (aout_mod_LDFLAGS): Likewise. * conf/i386-ieee1275.rmk: Likewise. 2008-02-28 Robert Millan * util/update-grub.in: Reorganise terminal validity check. Accept `ieee1275:console' (OLPC) and `*:gfxterm' as valid too. Based on suggestion by Franklin PIAT. 2008-02-28 Fabian Greffrath * include/grub/util/getroot.h (grub_util_check_block_device): Export new function. * util/getroot.c (grub_util_check_block_device): New function that returns the given argument if it is a block device and returns NULL else. * util/grub-probe.c (argument_is_device): New variable. (probe): Promote device_name from a variable to an argument. Receive device_name from grub_util_check_block_device() if path is NULL and from grub_guess_root_device() else. Do not free() device_name anymore. (options): Introduce new parameter '-d, --device'. (main): Add description of the new parameter to the help screen. Rename path variable to argument. Set argument_is_device if the '-d' option is given. Pass argument to probe() depending on argument_is_device. 2008-02-24 Bean * fs/iso9660.c (GRUB_ISO9660_VOLDESC_BOOT): New macro. (GRUB_ISO9660_VOLDESC_PRIMARY): Likewise. (GRUB_ISO9660_VOLDESC_SUPP): Likewise. (GRUB_ISO9660_VOLDESC_PART): Likewise. (GRUB_ISO9660_VOLDESC_END): Likewise. (grub_iso9660_primary_voldesc): New member escape. (grub_iso9660_data): New member joliet. (grub_iso9660_convert_string): New function. (grub_iso9660_mount): Detect joliet extension. (grub_iso9660_iterate_dir): Convert filename when joliet is detected. (grub_iso9660_iso9660_label): Likewise. * conf/common.rmk (pkgdata_MODULES): Add udf.mod. (grub_setup_SOURCES): Add fs/udf.c. (grub_fstest_SOURCES): Likewise. (udf_mod_SOURCES): New variable. (udf_mod_CFLAGS): Likewise. (udf_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/udf.c. (grub_emu_SOURCES): Likewise. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * fs/udf.c: New file. 2008-02-24 Robert Millan * conf/i386-efi.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): New variables. * conf/i386-ieee1275.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): Likewise. * conf/i386-linuxbios.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): Likewise. * conf/i386-pc.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): Likewise. * conf/powerpc-ieee1275.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): Likewise. * conf/sparc64-ieee1275.rmk (normal/function.c_DEPENDENCIES) (normal/lexer.c_DEPENDENCIES): Likewise. 2008-02-23 Robert Millan * partmap/gpt.c (grub_gpt_magic): Add `0x' qualifier to each member, since they were intended to be in hex. This didn't break previously because of a bug in gpt_partition_map_iterate() (see below). (gpt_partition_map_iterate): Replace `grub_memcmp' with `! grub_memcmp' when checking the validity of GPT header. Remove `partno', since it always provides the same information as `i'. 2008-02-21 Yoshinori K. Okuji * include/grub/efi/time.h: Fix a wrong comment. 2008-02-19 Pavel Roskin * kern/rescue.c (grub_enter_rescue_mode): Improve initial message. 2008-02-19 Bean * conf/i386-pc.rmk (pkglib_MODULES): Add aout.mod _bsd.mod and bsd.mod. (aout_mod_SOURCES): New variable. (aout_mod_CFLAGS): Likewise. (aout_mod_LDFLAGS): Likewise. (_bsd_mod_SOURCES): New variable. (_bsd_mod_CFLAGS): Likewise. (_bsd_mod_LDFLAGS): Likewise. (bsd_mod_SOURCES): New variable. (bsd_mod_CFLAGS): Likewise. (bsd_mod_LDFLAGS): Likewise. * include/grub/aout.h: New file. * include/grub/i386/loader.h (grub_unix_real_boot): New function. * include/grub/i386/bsd.h: New file. * include/grub/i386/pc/init.h (grub_get_mmap_entry): Use EXPORT_FUNC to make it public. * kern/elf.c (grub_elf32_load): Get the physical address after the hook function is called, so that it's possible to change it inside the hook. (grub_elf64_load): Likewise. (grub_elf_file): Don't close the file if elf header is not found. (grub_elf_close): Close the file if grub_elf_file fails (The new grub_elf_file won't close it). (grub_elf32_size): Use NESTED_FUNC_ATTR for nested function calcsize. (grub_elf64_size): Likewise. * kern/i386/loader.S (grub_unix_real_boot): New function. * loader/aout.c: New file. * loader/i386/bsd.c: New file. * loader/i386/bsd_normal.c: New file. * loader/i386/pc/multiboot.c (grub_multiboot): Handle a.out format. * loader/multiboot2.c (grub_multiboot2): Reset grub_errno so that it can test other formats. 2008-02-19 Robert Millan * partmap/gpt.c: Include `'. (grub_gpt_partition_type_empty): Redefine with macro from `'. (gpt_partition_map_iterate): Adjust partition type comparison. Export `entry' as partmap-specific `part.data' struct. (grub_gpt_header, grub_gpt_partentry): Move from here ... * include/grub/gpt_partition.h (grub_gpt_header) (grub_gpt_partentry): ... to here (new file). * util/i386/pc/grub-setup.c: Include `'. (grub_gpt_partition_type_bios_boot): New const variable, defined with macro from `'. (setup): Replace `first_start' with `embed_region', which keeps track of the embed region (and is partmap-agnostic). Replace find_first_partition_start() with find_usable_region(), which finds a usable region for embedding using partmap-specific knowledge (supports PC/MSDOS and GPT). Fix all assumptions that the embed region start at sector 1, using `embed_region.start' from now on. Similarly, use `embed_region.end' rather than `first_start' to calculate available size. In grub_util_info() message, replace "into after the MBR" with an indication of the specific sector our embed region starts at. 2008-02-19 Robert Millan * DISTLIST: Replace `commands/ieee1275/halt.c' and `commands/ieee1275/reboot.c' with `commands/halt.c' and `commands/reboot.c'. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES, reboot_mod_SOURCES) (halt_mod_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES, reboot_mod_SOURCES) (halt_mod_SOURCES): Likewise. 2008-02-17 Christian Franke * commands/cat.c (grub_cmd_cat): Add break on GRUB_TERM_ESC key. 2008-02-17 Robert Millan * util/i386/pc/grub-setup.c (setup): In find_first_partition_start(), set `first_start' to 0 for non-PC/MSDOS partition maps. 2008-02-16 Robert Millan * util/i386/pc/grub-setup.c (setup): In find_first_partition_start(), do not assume partition map is PC/MSDOS before performing checks that are specific to that layout. 2008-02-13 Robert Millan * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Remove `commands/i386/pc/halt.c' and `commands/i386/pc/reboot.c'. * kern/i386/linuxbios/init.c (grub_halt, grub_reboot): Remove stubs. 2008-02-13 Yoshinori K. Okuji * configure.ac: Only a cosmetic change on the handling of -fno-stack-protector. 2008-02-12 Alexandre Boeglin * conf/i386-efi.rmk (grub_emu_SOURCES): Replace commands/i386/pc/halt.c and reboot.c by commands/halt.c and reboot.c. (grub_install_SOURCES): Add halt.mod and reboot.mod. (halt_mod_SOURCES): New variable. (halt_mod_CFLAGS): Likewise. (halt_mod_LDFLAGS): Likewise. (reboot_mod_SOURCES): Likewise. (reboot_mod_CFLAGS): Likewise. (reboot_mod_LDFLAGS): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Replace commands/ieee1275/halt.c and reboot.c by commands/halt.c and reboot.c. (halt_mod_SOURCES): Likewise. (reboot_mod_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Replace commands/i386/pc/reboot.c by commands/reboot.c. (reboot_mod_SOURCES): Likewise. * commands/i386/pc/reboot.c: merge this file ... * commands/ieee1275/reboot.c: ... and this file ... * commands/reboot.c: ... to this file. Add some precompiler directive to include the correct header for each machine. * commands/ieee1275/halt.c: move this file ... * commands/halt.c: ... to here. Add some precompiler directive to include the correct header for each machine. * include/grub/efi/efi.h (grub_reboot): New function declaration. (grub_halt): Likewise. * kern/efi/efi.c (grub_reboot): New function. (grub_halt): Likewise. 2008-02-12 Robert Millan * util/getroot.c (grub_guess_root_device): Inspect /dev/evms before /dev (like it is done for /dev/mapper). This doesn't provide support for EVMS, but at least it is now easy to identify the problem when it arises. 2008-02-11 Robert Millan * util/biosdisk.c (grub_util_biosdisk_open, linux_find_partition) (grub_util_biosdisk_get_grub_dev): Check open() exit status by comparing it with -1, not 0. 2008-02-10 Robert Millan * conf/i386-efi.rmk (grub_emu_SOURCES): Add `disk/raid.c' and `disk/lvm.c'. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Move `disk/raid.c' and `disk/lvm.c' to the end of the list. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. 2008-02-10 Robert Millan * kern/main.c (grub_load_normal_mode): Do not reset `grub_errno'. Call grub_print_error() instead. This will let user know why we're entering rescue mode. Based on suggestions from Sam Morris. 2008-02-10 Alexandre Boeglin * normal/arg.c (grub_arg_parse): If one of the args is "--", call add_arg() on remaining N args, instead of "--" arg N times. 2008-02-09 Vesa Jaaskelainen * font/manager.c (unknown_glyph): Added variable for unknown glyph. (fill_with_default_glyph): Changed to use unknown_glyph for fill pattern for unknown glyphs. 2008-02-09 Robert Millan * configure.ac: Probe for `help2man'. * Makefile.in (builddir): New variable. (HELP2MAN): Likewise. Set to `true' when @HELP2MAN@ doesn't provide it, or otherwise add a few flags/options to it. (install-local): For every executable utility or script that is installed, invoke $(HELP2MAN) to install a manpage based on --help output. * util/i386/pc/grub-install.in: Move down `update-grub_lib' sourcing, so that it doesn't prevent --help from working in build tree. * util/i386/pc/grub-mkrescue.in (usage): Replace `grub-devel@gnu.org' with `bug-grub@gnu.org'. * util/powerpc/ieee1275/grub-mkrescue.in (usage): Likewise. * util/update-grub.in (usage): New function. Implement proper argument check, with support for --help and --version (as well as existing -y). 2008-02-09 Christian Franke * commands/cat.c (grub_cmd_cat): Print '\r' as hex to avoid overwriting previous output. * kern/rescue.c (grub_rescue_cmd_cat): Likewise. 2008-02-09 Robert Millan * normal/menu.c (run_menu): If timeout is set to zero, don't bother drawing the menu. 2008-02-09 Robert Millan * commands/sleep.c: New file. * conf/common.rmk (pkglib_MODULES): Add `commands/sleep.c'. (sleep_mod_SOURCES): New variable. (sleep_mod_CFLAGS): Likewise. (sleep_mod_LDFLAGS): Likewise. 2008-02-09 Robert Millan * disk/raid.c (grub_raid_scan_device): Add a pair of sanity checks for situations in which we can deduce the RAID size and the superblock doesn't match it. 2008-02-09 Robert Millan * disk/lvm.c [GRUB_UTIL] (grub_lvm_memberlist): New function. Construct and return a grub_diskmemberlist_t composed of LVM physical volumes. [GRUB_UTIL] (grub_lvm_dev): Add `memberlist' member. * disk/raid.c [GRUB_UTIL] (grub_raid_memberlist): New function. Construct and return a grub_diskmemberlist_t composed of physical array members. [GRUB_UTIL] (grub_raid_dev): Add `memberlist' member. * include/grub/disk.h [GRUB_UTIL] (grub_disk_memberlist): New struct prototype. [GRUB_UTIL] (struct grub_disk_dev): Add `memberlist' function pointer. [GRUB_UTIL] (struct grub_disk_memberlist): New struct declaration. [GRUB_UTIL] (grub_disk_memberlist_t): New typedef. * util/grub-probe.c (probe): Move partmap probing code from here ... (probe_partmap): ... to here. (probe): Use probe_partmap() once for the disk we're probing, and additionally, when such disk contains a memberlist() struct member, once for each disk that is contained in the structure returned by memberlist(). 2008-02-09 Robert Millan * util/grub-probe.c (main): When `verbosity > 1', set `debug' environment variable to 'all' in order to obtain debug output from non-util/ code. * util/i386/pc/grub-setup.c (main): Likewise. 2008-02-08 Robert Millan * disk/raid.c (grub_raid_scan_device): Check for `array->device[sb.this_disk.number]' rather than for `array->device[sb.this_disk.number]->name', since the latter is not guaranteed to be accessible. 2008-02-08 Robert Millan * disk/raid.c: Update copyright. * fs/cpio.c: Likewise. * include/grub/raid.h: Likewise. * loader/i386/pc/multiboot.c: Likewise. * util/hostfs.c: Likewise. 2008-02-08 Robert Millan * include/grub/raid.h (struct grub_raid_array): Change type of `device' to a grub_disk_t array. * disk/raid.c (grub_raid_read): Replace `device[x].disk' accesses with `device[x]'. (grub_raid_scan_device): Replace `device[x].name' accesses with `device[x]->name'. Simplify initialization of `array->device[x]'. 2008-02-08 Robert Millan * disk/raid.c (grub_raid_open, grub_raid_scan_device): Add a few grub_dprintf() calls. * kern/disk.c (grub_disk_read): Include grub_errmsg in out of range error message. 2008-02-07 Christian Franke * util/hostfs.c (grub_hostfs_open): Use fseeko and ftello instead of fseek and ftell to support large files. (grub_hostfs_read): Likewise. 2008-02-07 Robert Millan Patch from Jeroen Dekkers. * disk/raid.c (grub_raid_scan_device): Reset `grub_errno' on disk failure, since successfully reading all array members might not be required. 2008-02-06 Robert Millan * util/grub-probe.c (probe): Simplify partmap probing (with the assumption that the first word up to the underscore equals to the module name). 2008-02-06 Christian Franke * fs/cpio.c (grub_cpio_find_file): Return GRUB_ERR_NONE (and set *ofs = 0) instead of GRUB_ERR_FILE_NOT_FOUND on last block of a cpio or tar stream. Check for "TRAILER!!!" instead of any empty data block to detect last block of a cpio stream. (grub_cpio_dir): Fix constness of variable np. (grub_cpio_open): Return GRUB_ERR_FILE_NOT_FOUND if cpio or tar trailer is detected. This fixes a crash on open of a non existing file. 2008-02-05 Bean * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Get physical address of entry. (grub_multiboot_load_elf64): Likewise. (grub_multiboot): Initialize mbi structure. * util/grub-fstest.c: Don't include unused header file script.h. * conf/common.rmk (grub-fstest.c_DEPENDENCIES): Move to the beginning of file. (grub_fstest_SOURCES): Likewise. 2008-02-05 Robert Millan * include/grub/term.h (GRUB_TERM_LEFT, GRUB_TERM_RIGHT) (GRUB_TERM_UP, GRUB_TERM_DOWN, GRUB_TERM_HOME, GRUB_TERM_END) (GRUB_TERM_DC, GRUB_TERM_PPAGE, GRUB_TERM_NPAGE, GRUB_TERM_ESC) (GRUB_TERM_TAB, GRUB_TERM_BACKSPACE): New macros. * kern/i386/pc/startup.S: Include `'. (translation_table): Replace hardcoded values with macros provided by `'. * term/i386/pc/at_keyboard.c: Include `'. (keyboard_map): Correct/add a few values, with macros provided by `'. (keyboard_map_shift): Zero values that don't differ from their `keyboard_map' equivalents. (grub_console_checkkey): Optimize KEYBOARD_STATUS_CAPS_LOCK toggling. Discard the second scan code that is always sent by Caps lock. Only use `keyboard_map_shift' when it provides a non-zero value, otherwise fallback to `keyboard_map'. 2008-02-04 Bean * Makefile.in (enable_grub_fstest): New variable. * conf/common.rmk (grub_fstest_init.lst): New rule. (grub_fstest_init.h): Likewise. (grub_fstest_init.c): Likewise. (util/grub-fstest.c_DEPENDENCIES): New variable. (grub_fstest_SOURCES): Likewise. * configure.ac (enable_grub_fstest): Check for --enable-grub-fstest. * util/grub-fstest.c: New file. 2008-02-03 Yoshinori K. Okuji Make grub-setup handle a separate root device. * util/i386/pc/grub-setup.c (setup): Always open the root device, so that the root device can be compared with the destination device. When embedding the core image, if the root and destination devices are different, set ROOT_DRIVE to ROOT_DEV->DISK->ID. Otherwise, to 0xFF. When not embedding, set ROOT_DRIVE to 0xFF. 2008-02-03 Yoshinori K. Okuji Add support for having a grub directory in a different drive. This is still only the data handling part. * kern/i386/pc/startup.S (multiboot_trampoline): Set %dh to 0xFF. (codestart): Save %dh in GRUB_ROOT_DRIVE. (grub_root_drive): New variable. * kern/i386/pc/init.c (make_install_device): Use GRUB_ROOT_DRIVE instead of GRUB_BOOT_DRIVE to construct a device name. Set GRUB_ROOT_DRIVE to GRUB_BOOT_DRIVE if it is 0xFF, otherwise use it as it was. * include/grub/i386/pc/kernel.h (grub_root_drive): New prototype. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_ROOT_DRIVE): New macro. (GRUB_BOOT_MACHINE_DRIVE_CHECK): Set to 0x4f. * boot/i386/pc/pxeboot.S (_start): Set %dh to 0xFF. For now, this is bogus, because PXE booting does not specify any drive correctly. * boot/i386/pc/lnxboot.S (reg_edx): Set the second byte to 0xFF. I am not sure if this is really correct. * boot/i386/pc/cdboot.S: Set %dh to 0xFF, because the root drive is always identical to the boot drive when booting from a CD. * boot/i386/pc/boot.S (MOV_MEM_TO_AL): Removed. Not needed any longer. (root_drive): New variable. (real_start): Unconditionally set %dh to ROOT_DRIVE. (setup_sectors): Push %dx right after popping it, because %dh will be modified later. (copy_buffer): Restore %dx. 2008-02-03 Robert Millan * util/i386/pc/grub-mkrescue.in: Rewrite most of image generation to use `cdboot.img' for cdrom images. 2008-02-03 Robert Millan * util/grub.d/00_header.in: Issue scripting commands for GRUB to only setup gfxterm when `font' command has succeeded. 2008-02-03 Robert Millan * loader/multiboot_loader.c [GRUB_MACHINE_LINUXBIOS] (grub_rescue_cmd_multiboot_loader) (grub_rescue_cmd_module_loader): Enable multiboot1 calls. 2008-02-03 Pavel Roskin * kern/i386/pc/startup.S (grub_chainloader_real_boot): Pop %edx and %esi from stack only after grub_gate_a20() is called. grub_gate_a20() clobbers %edx. 2008-02-03 Yoshinori K. Okuji * configure.ac (AC_INIT): Bumped to 1.96. * DISTLIST: Added boot/i386/pc/cdboot.S, bus/pci.c, commands/lspci.c,disk/memdisk.c, include/grub/pci.h, include/grub/i386/pc/pci.h, video/readers/jpeg.c, and video/readers/png.c. 2008-02-03 Bean * conf/i386-pc.rmk (pkglib_IMAGES): Add cdboot.img. (cdboot_img_SOURCES): New variable. (cdboot_img_ASFLAGS): New variable. (cdboot_img_LDFLAGS): New variable. * boot/i386/pc/cdboot.S: New file. * disk/i386/pc/biosdisk.c (cd_start): New variable. (cd_count): Likewise. (grub_biosdisk_get_drive): Add support for cd device. (grub_biosdisk_call_hook): Likewise. (grub_biosdisk_iterate): Likewise. (grub_biosdisk_open): Likewise. (GRUB_BIOSDISK_CDROM_RETRY_COUNT): New macro. (grub_biosdisk_rw): Support reading from cd device. (GRUB_MOD_INIT): Iterate cd devices. * include/grub/i386/pc/biosdisk.h (GRUB_BIOSDISK_FLAG_CDROM): New macro. (GRUB_BIOSDISK_MACHINE_CDROM_START): Likewise. (GRUB_BIOSDISK_MACHINE_CDROM_END): Likewise. * kern/i386/pc/init.c (make_install_device): Check for cd device. 2008-02-02 Robert Millan * commands/read.c: New file. * conf/common.rmk (pkglib_MODULES): Add `commands/read.c'. (read_mod_SOURCES): New variable. (read_mod_CFLAGS): Likewise. (read_mod_LDFLAGS): Likewise. 2008-02-02 Robert Millan * normal/main.c (grub_normal_execute): Check for `menu->size' when determining whether menu has to be displayed. 2008-02-02 Marco Gerards * bus/pci.c: New file. * include/grub/pci.h: Likewise. * include/grub/i386/pc/pci.h: Likewise. * commands/lspci.c: Likewise. * conf/i386-pc.rmk (pkglib_MODULES): Add `pci.mod' and `lspci.mod'. (pci_mod_SOURCES): New variable. (pci_mod_CFLAGS): Likewise. (pci_mod_LDFLAGS): Likewise. (lspci_mod_SOURCES): Likewise. (lspci_mod_CFLAGS): Likewise. (lspci_mod_LDFLAGS): Likewise. 2008-02-02 Bean * fs/ufs.c (INODE_BLKSZ): Fix incorrect value. (grub_ufs_get_file_block): Fix indirect block calculation problem. * fs/xfs.c (grub_xfs_sblock): New member log2_dirblk. (grub_xfs_btree_node): New structure. (grub_xfs_btree_root): New structure. (grub_xfs_inode): New members nblocks, extsize, nextents and btree. (GRUB_XFS_EXTENT_OFFSET): Use exts instead of inode->data.extents. (GRUB_XFS_EXTENT_BLOCK): Likewise. (GRUB_XFS_EXTENT_SIZE): Likewise. (grub_xfs_read_block): Support btree format type. (grub_xfs_iterate_dir): Use NESTED_FUNC_ATTR in call_hook. Use directory block as basic unit. * fs/fshelp.c (grub_fshelp_read_file): Bug fix for sparse block. * aclocal.m4 (grub_i386_CHECK_REGPARM_BUG): Define NESTED_FUNC_ATTR as __attribute__ ((__regparm__ (1))). 2008-02-01 Robert Millan Correct a mistake in previous commit. * conf/i386-pc.rmk (normal/execute.c_DEPENDENCIES): Move to the top. (normal/command.c_DEPENDENCIES): New variable. 2008-02-01 Robert Millan * conf/i386-efi.rmk (normal/execute.c_DEPENDENCIES): Move to the top. (normal/command.c_DEPENDENCIES): New variable. (grub-emu_DEPENDENCIES, normal_mod_DEPENDENCIES): Remove variables. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-linuxbios.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. (grub_emu_SOURCES): Add `fs/fshelp.c'. * genmk.rb: Add `$(#{src}_DEPENDENCIES)' in targets that require it. 2008-02-01 Robert Millan * kern/disk.c (grub_disk_read, grub_disk_write): Add grub_dprintf() call at beginning of function. 2008-01-31 Pavel Roskin * util/powerpc/ieee1275/grub-mkrescue.in: New file. * conf/powerpc-ieee1275.rmk (bin_SCRIPTS): New variable. (grub_mkrescue_SOURCES): Likewise. * DISTLIST: Add util/powerpc/ieee1275/grub-mkrescue.in. 2008-01-30 Robert Millan * conf/i386-pc.rmk (sbin_UTILITIES): Remove `grub-probe'. (util/grub-probe.c_DEPENDENCIES, grub_probe_SOURCES): Moved from here ... * conf/common.rmk (util/grub-probe.c_DEPENDENCIES) (grub_probe_SOURCES): ... to here. * conf/i386-efi.rmk (sbin_UTILITIES): Remove `grub-probe'. (util/grub-probe.c_DEPENDENCIES, grub_probe_SOURCES): Remove. * conf/i386-ieee1275.rmk: Likewise. * conf/i386-linuxbios.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. 2008-01-30 Tristan Gingold * kern/rescue.c: Silently accept empty lines. 2008-01-29 Bean * boot/i386/pc/lnxboot.S (data_start): Code cleanup. (real_code_2): Code cleanup and change comment style. (move_memory): Avoid using 32-bit address mode. 2008-01-29 Bean * conf/i386-pc.rmk (pkglib_MODULES): Add `png.mod'. (png_mod_SOURCES): New variable. (png_mod_CFLAGS): Likewise. (png_mod_LDFLAGS): Likewise. * video/readers/png.c: New file. 2008-01-28 Robert Millan * include/grub/i386/linuxbios/kernel.h (GRUB_MOD_GAP): New macro. * kern/powerpc/ieee1275/init.c (grub_arch_modules_addr): Remove `ifndef GRUB_MOD_GAP' hack. * util/elf/grub-mkimage.c (add_segments): Likewise. 2008-01-27 Robert Millan * kern/powerpc/ieee1275/init.c (grub_arch_modules_addr): Skip `GRUB_MOD_GAP' for platforms in which it's not defined. * util/elf/grub-mkimage.c (add_segments): Likewise. 2008-01-27 Robert Millan Get grub-emu to build again (including parallel builds). * conf/i386-pc.rmk (util/grub-emu.c_DEPENDENCIES): Remove variable. Split into ... (util/grub-emu.c_DEPENDENCIES): ... this, ... (normal/execute.c_DEPENDENCIES): ... this, ... (grub-emu_DEPENDENCIES): ... and this. * conf/i386-efi.rmk: Likewise. * conf/i386-linuxbios.rmk: Likewise. * conf/i386-ieee1275.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. (grub_emu_SOURCES): Remove duplicated `kern/file.c'. 2008-01-27 Robert Millan * NEWS: Add a few items. 2008-01-27 Robert Millan Fix parallel builds with grub-emu. Based on earlier commit for grub-probe and grub-setup. * conf/i386-pc.rmk (grub-emu_DEPENDENCIES): Renamed to ... (util/grub-emu.c_DEPENDENCIES): ... this. * conf/i386-efi.rmk (grub-emu_DEPENDENCIES): Renamed to ... (util/grub-emu.c_DEPENDENCIES): ... this. * conf/i386-linuxbios.rmk (grub-emu_DEPENDENCIES): Renamed to ... (util/grub-emu.c_DEPENDENCIES): ... this. * conf/i386-ieee1275.rmk (grub-emu_DEPENDENCIES): Renamed to ... (util/grub-emu.c_DEPENDENCIES): ... this. * conf/powerpc-ieee1275.rmk (grub-emu_DEPENDENCIES): Renamed to ... (util/grub-emu.c_DEPENDENCIES): ... this. 2008-01-27 Pavel Roskin * include/grub/powerpc/ieee1275/kernel.h: Introduce GRUB_MOD_GAP to create a gap between _end and the modules added to the image with grub-mkrescue. That fixes "CLAIM failed" on PowerMAC. * kern/powerpc/ieee1275/init.c: Use GRUB_MOD_GAP. * util/elf/grub-mkimage.c (add_segments): Likewise. 2008-01-26 Pavel Roskin * kern/dl.c (grub_dl_load): Don't abort if prefix is not set, just return an error. 2008-01-26 Bean * fs/reiserfs.c (grub_fshelp_node): New member next_offset. (grub_reiserfs_get_item): Save offset of the next item. (grub_reiserfs_iterate_dir): Use next_offset to find next item. 2008-01-25 Robert Millan * conf/i386-pc.rmk (grub_setup_SOURCES, grub_emu_SOURCES): Regroup to make all filesystem sources appear together (possibly fixing omissions while at it). * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/i386-pc.rmk (grub_probe_SOURCES): Likewise. Additionally, add `kern/file.c'. * conf/i386-efi.rmk (grub_probe_SOURCES): Likewise. * conf/i386-ieee1275.rmk (grub_probe_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_probe_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_probe_SOURCES): Likewise. * util/grub-probe.c: Include `' and `'. (probe): Add a sanity check to make sure of our ability to read requested files when probing for filesystem type. * genmk.rb: Update copyright year (2007). * include/grub/fs.h (grub_fat_init, grub_fat_fini, grub_ext2_init) (grub_ext2_fini, grub_ufs_init, grub_ufs_fini, grub_minix_init) (grub_minix_fini, grub_hfs_init, grub_hfs_fini, grub_jfs_init) (grub_jfs_fini, grub_xfs_init, grub_xfs_fini, grub_affs_init) (grub_affs_fini, grub_sfs_init, grub_sfs_fini, grub_iso9660_init) : Remove function prototypes. 2008-01-25 Robert Millan Revert my previous commits (based on wrong assumption of how grub_errno works). * kern/disk.c (grub_disk_open): Stop resetting grub_errno. * kern/file.c (grub_file_open): Likewise. 2008-01-24 Pavel Roskin * include/grub/ieee1275/ieee1275.h: Introduce flag for firmwares that hang if GRUB tries to setup colors. * term/ieee1275/ofconsole.c (grub_ofconsole_init): Don't set colors for firmwares that don't support it. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_set_flag): Recognize Open Hack'Ware, set flags to work around its limitations. 2008-01-24 Robert Millan * kern/file.c (grub_file_open): Do not account previous failures of unrelated functions when grub_errno is checked for. Reported by Oleg Strikov. 2008-01-24 Bean * fs/ufs.c (GRUB_UFS_VOLNAME_LEN): New macro. (grub_ufs_sblock): New member volume name. (grub_ufs_find_file): Fix string copy bug. (grub_ufs_label): Implement this function properly. * fs/hfs.c (grub_hfs_cnid_type): New enum. (grub_hfs_iterate_records): Use the correct file number for extents and catalog file. Fix problem in next index calculation. (grub_hfs_find_node): Replace recursive function call with loop. (grub_hfs_iterate_dir): Replace recursive function call with loop. 2008-01-23 Robert Millan * include/grub/i386/ieee1275/loader.h: Include `', `' and `'. (grub_multiboot2_real_boot): New function prototype. * include/grub/i386/pc/memory.h: Include `'. [!GRUB_MACHINE_IEEE1275] (grub_lower_mem, grub_upper_mem): Disable. * kern/i386/ieee1275/init.c (grub_os_area_addr) (grub_os_area_size, grub_lower_mem, grub_upper_mem): Remove variables. 2008-01-23 Robert Millan * kern/mm.c (grub_mm_init_region): Replace grub_dprintf() call with #ifdef'ed out grub_printf(). 2008-01-23 Robert Millan * term/i386/pc/at_keyboard.c (grub_keyboard_isr): #ifdef out grub_dprintf calls, since they make "debug=all" mode unusable. (grub_console_checkkey): Likewise. 2008-01-23 Robert Millan * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add `term/i386/pc/at_keyboard.c'. (pkglib_MODULES): Add `serial.mod'. (serial_mod_SOURCES): New variable. (serial_mod_CFLAGS): Likewise. (serial_mod_LDFLAGS): Likewise. * include/grub/i386/ieee1275/console.h: Add `'. Remove `'. (grub_keyboard_controller_init): New function prototype. (grub_console_checkkey): Likewise. (grub_console_getkey): Likewise. * kern/powerpc/ieee1275/init.c (grub_machine_init): Initialize AT keyboard on i386. * term/ieee1275/ofconsole.c (grub_ofconsole_term): On i386, use grub_ofconsole_checkkey() and grub_ofconsole_getkey() for input. 2008-01-23 Robert Millan * kern/i386/pc/init.c (make_install_device): When memdisk image is present, "(memdisk)/boot/grub" becomes the default prefix. * util/i386/pc/grub-mkrescue.in: Switch to a minimal core.img plus a memdisk tarball with all the modules. Add --overlay=DIR option that allows users to overlay additional files into the image. 2008-01-23 Robert Millan * conf/i386-ieee1275.rmk (kernel_elf_SOURCES): Add `machine/loader.h' and `machine/memory.h'. (pkglib_MODULES): Add `multiboot.mod' and `_multiboot.mod'. (_multiboot_mod_SOURCES): New variable. (_multiboot_mod_CFLAGS): Likewise. (_multiboot_mod_LDFLAGS): Likewise. (multiboot_mod_SOURCES): Likewise. (multiboot_mod_CFLAGS): Likewise. (multiboot_mod_LDFLAGS): Likewise. * include/grub/i386/ieee1275/loader.h: New file. * include/grub/i386/ieee1275/machine.h: Likewise. * include/grub/i386/ieee1275/memory.h: Likewise. * include/grub/i386/pc/init.h (grub_os_area_addr): Remove (redundant) variable declaration. (grub_os_area_size): Likewise. * kern/i386/ieee1275/init.c (grub_os_area_addr, grub_os_area_size) (grub_lower_mem, grub_upper_mem): New variables. (grub_stop_floppy): New function (just to make grub_multiboot2_real_boot() happy). * kern/i386/ieee1275/startup.S: Include `', `', `' and `'. (grub_stop): New function. Include `"../realmode.S"' and `"../loader.S"'. * loader/multiboot_loader.c: Include `'. Replace `__i386__' #ifdefs with `GRUB_MACHINE_PCBIOS'. * loader/powerpc/ieee1275/multiboot2.c (grub_mb2_arch_boot): On i386, rely on grub_multiboot2_real_boot() for final boot. 2008-01-22 Robert Millan * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): When `GRUB_IEEE1275_FLAG_OFDISK_SDCARD_ONLY' flag is set, skip any device that doesn't look like an SD card. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): Add `GRUB_IEEE1275_FLAG_OFDISK_SDCARD_ONLY' flag. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_set_flag): Detect OLPC laptop, and set `GRUB_IEEE1275_FLAG_OFDISK_SDCARD_ONLY' when found. 2008-01-22 Robert Millan * kern/powerpc/ieee1275/init.c (grub_claim_heap): Add sanity check to avoid claiming over our own code. 2008-01-22 Bean * conf/i386-pc.rmk (pkglib_MODULES): Add `jpeg.mod'. (jpeg_mod_SOURCES): New variable. (jpeg_mod_CFLAGS): Likewise. (jpeg_mod_LDFLAGS): Likewise. * video/readers/jpeg.c : New file. 2008-01-22 Bean * fs/cpio.c (grub_cpio_find_file): Return GRUB_ERR_FILE_NOT_FOUND when there are no more items. 2008-01-21 Robert Millan * kern/mm.c (grub_mm_init_region): Improve debug message. 2008-01-21 Robert Millan * conf/i386-pc.rmk (GRUB_MEMORY_MACHINE_LINK_ADDR): New variable. (kernel_img_LDFLAGS): Use `GRUB_MEMORY_MACHINE_LINK_ADDR' as link address. (grub_mkimage_CFLAGS): Propagate `GRUB_MEMORY_MACHINE_LINK_ADDR' as a C macro. * include/grub/i386/pc/memory.h (GRUB_MEMORY_MACHINE_UPPER): New macro. Indicates start of upper memory. * util/i386/pc/grub-mkimage.c: Include `'. (generate_image): Abort when image size is big enough to corrupt upper memory. * include/grub/i386/pc/vga.h: Include `'. (GRUB_MEMORY_MACHINE_VGA_ADDR): Alias for `GRUB_MEMORY_MACHINE_UPPER'. * term/i386/pc/vga.c (VGA_MEM): Use `GRUB_MEMORY_MACHINE_VGA_ADDR' instead of hardcoding 0xA0000. * video/i386/pc/vbe.c: Include `'. (grub_vbe_set_video_mode): Use `GRUB_MEMORY_MACHINE_VGA_ADDR' instead of hardcoding 0xA0000. 2008-01-21 Robert Millan * disk/memdisk.c (memdisk_size): New variable. (grub_memdisk_open): Replace grub_arch_memdisk_size() call with `memdisk_size'. (grub_memdisk_init): Initialize `memdisk_size'. Reallocate memdisk image to dynamic memory. (grub_memdisk_fini): Replace grub_arch_memdisk_size() call with `memdisk_size'. Free memdisk block. 2008-01-21 Robert Millan Fix detection of very small filesystems (like tar). * fs/reiserfs.c (grub_reiserfs_mount): When disk is too small to contain a ReiserFS, abort with GRUB_ERR_BAD_FS rather than GRUB_ERR_OUT_OF_RANGE (which made the upper layer think there's a problem with this disk). 2008-01-21 Robert Millan * disk/i386/pc/biosdisk.c (grub_biosdisk_iterate): Add debug message on grub_biosdisk_rw_standard() error. 2008-01-21 Robert Millan * include/grub/ieee1275/ieee1275.h: Add 2008 to Copyright line for recent changes. * kern/elf.c: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. 2008-01-21 Robert Millan * include/grub/i386/pc/kernel.h: Include `'. * include/grub/kernel.h (grub_arch_memdisk_addr) (grub_arch_memdisk_size): Moved from here ... * include/grub/i386/pc/kernel.h (grub_arch_memdisk_addr) (grub_arch_memdisk_size): ... to here. 2008-01-21 Robert Millan Mostly based on bugfix from Bean. * kern/elf.c (grub_elf32_phdr_iterate): Use `NESTED_FUNC_ATTR' attribute with hook() parameter. (grub_elf32_load): Use `NESTED_FUNC_ATTR' with grub_elf32_load_segment() declaration. (grub_elf64_phdr_iterate): Use `NESTED_FUNC_ATTR' attribute with hook() parameter. (grub_elf64_load): Use `NESTED_FUNC_ATTR' with grub_elf64_load_segment() declaration. 2008-01-21 Robert Millan * conf/i386-pc.rmk (kernel_img_HEADERS): Add `machine/kernel.h'. (pkglib_MODULES): Add `memdisk.mod'. (memdisk_mod_SOURCES): New variable. (memdisk_mod_CFLAGS): Likewise. (memdisk_mod_LDFLAGS): Likewise. * disk/memdisk.c: New file. * include/grub/disk.h (grub_disk_dev_id): Add `GRUB_DISK_DEVICE_MEMDISK_ID'. * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_MEMDISK_IMAGE_SIZE): New macro. (GRUB_KERNEL_MACHINE_PREFIX): Increment by 4. (grub_kernel_image_size): New variable declaration. (grub_total_module_size): Likewise. (grub_memdisk_image_size): Likewise. * include/grub/i386/pc/memory.h (GRUB_MEMORY_MACHINE_DECOMPRESSION_ADDR): New macro. * include/grub/kernel.h: Include `'. (grub_arch_memdisk_addr): New variable declaration. (grub_arch_memdisk_size): Likewise. * kern/i386/pc/init.c (grub_arch_memdisk_addr): New function. (grub_arch_memdisk_size): Likewise. * kern/i386/pc/startup.S (grub_memdisk_image_size): New variable. (codestart): Replace hardcoded `0x100000' with `GRUB_MEMORY_MACHINE_DECOMPRESSION_ADDR' macro. * util/i386/pc/grub-mkimage.c: Include `'. (generate_image): Add `memdisk_path' parameter. When `memdisk_path' is not NULL, append the contents of the file it refers to, at the end of the compressed kernel image. Initialize `grub_memdisk_image_size' variable (at `GRUB_KERNEL_MACHINE_MEMDISK_IMAGE_SIZE' offset). (options): Add "memdisk"|'m' option. (main): Parse --memdisk|-m option, and pass user-provided path as parameter to generate_image(). 2008-01-20 Robert Millan * kern/sparc64/ieee1275/openfw.c (grub_devalias_iterate): Copy debug grub_dprintf() calls from here ... * kern/powerpc/ieee1275/openfw.c (grub_devalias_iterate): ... to here. 2008-01-20 Robert Millan Fix detection of "real mode" when /options/real-mode? doesn't exist. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_mmu): New variable declaration. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_mmu): New variable. (grub_ieee1275_find_options): If `grub_ieee1275_mmu' is 0, set `GRUB_IEEE1275_FLAG_REAL_MODE'. (cmain): Initialize `grub_ieee1275_mmu' (using /chosen/mmu integer property). * kern/powerpc/ieee1275/openfw.c (grub_map): Rely on pre-initialized `grub_ieee1275_mmu' rather than obtaining a handler on every call. 2008-01-19 Robert Millan Get rid of confusing function (superseded by `grub_ieee1275_get_integer_property') * include/grub/ieee1275/ieee1275.h (grub_ieee1275_decode_int_4): Remove prototype. * kern/ieee1275/ieee1275.c (grub_ieee1275_decode_int_4): Remove function. * term/ieee1275/ofconsole.c (grub_ofconsole_init): Avoid use of grub_ieee1275_decode_int_4(), by obtaining integer properties directly in native endianness from grub_ieee1275_get_integer_property(). 2008-01-19 Robert Millan * kern/powerpc/ieee1275/openfw.c (grub_halt): Issue "power-off" command after "shut-down", since implementations differ on which the command for halt is. 2008-01-19 Robert Millan * include/grub/i386/linuxbios/console.h: Add header protection. (grub_keyboard_controller_init): New function prototype. * term/i386/pc/at_keyboard.c (KEYBOARD_COMMAND_ISREADY): New macro. (KEYBOARD_COMMAND_READ): Likewise. (KEYBOARD_COMMAND_WRITE): Likewise. (KEYBOARD_SCANCODE_SET1): Likewise. (grub_keyboard_controller_write): New function. (grub_keyboard_controller_read): Likewise. (grub_keyboard_controller_init): Likewise. * term/i386/pc/console.c: Include `'. (grub_console_init): On coreboot/LinuxBIOS, call grub_keyboard_controller_init(). 2008-01-19 Robert Millan PowerPC changes provided by Pavel Roskin. * kern/powerpc/ieee1275/cmain.c (cmain): Don't take any arguments. * kern/powerpc/ieee1275/crt0.S: Store r5 in grub_ieee1275_entry_fn, don't rely on cmain() doing it. * kern/i386/ieee1275/startup.S (_start): Store %eax in grub_ieee1275_entry_fn, don't rely on cmain() doing it. 2008-01-16 Robert Millan * include/grub/i386/linuxbios/memory.h (GRUB_MEMORY_MACHINE_LINUXBIOS_TABLE_ADDR): Remove macro. * kern/i386/linuxbios/table.c (grub_linuxbios_table_iterate): Do not receive `table_header' as argument. Instead, probe for it in the known memory ranges where it can be present. (grub_available_iterate): Do not pass a fixed `table_header' address to grub_linuxbios_table_iterate(). 2008-01-15 Robert Millan * configure.ac: Add `i386-ieee1275' to the list of supported targets. * conf/i386-ieee1275.rmk: New file. * include/grub/i386/ieee1275/console.h: Likewise. * include/grub/i386/ieee1275/ieee1275.h: Likewise. * include/grub/i386/ieee1275/kernel.h: Likewise. * include/grub/i386/ieee1275/time.h: Likewise. * kern/i386/ieee1275/init.c: Likewise. * kern/i386/ieee1275/startup.S: Likewise. 2008-01-15 Robert Millan * kern/misc.c (grub_vsprintf): Do not reset `longlongfmt' to zero when pointers are 32-bit (but still do set it to one when they are 64-bit). 2008-01-15 Robert Millan * include/grub/ieee1275/ieee1275.h (grub_ieee1275_get_integer_property): New function prototype. * kern/ieee1275/ieee1275.c: Include `'. (grub_ieee1275_get_integer_property): New function. Wraps around grub_ieee1275_get_property() to handle endianness. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Replace grub_ieee1275_get_property() with grub_ieee1275_get_integer_property() where appropriate. * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Likewise. (grub_map): Likewise. * kern/sparc64/ieee1275/openfw.c (grub_map): Likewise. 2008-01-15 Bean * normal/execute.c (grub_script_exec_argument_to_string): Check for undefined variable. (grub_script_execute_cmdline): Reset grub_errno. * normal/main.c (read_config_file): Reset grub_errno. * normal/parse.y (script_init): New. (script): Move function and menuentry here. (delimiter): New. (command): Add delimiter at the end of command. (commands): Adjust to match the new command. (commandblock): Remove grub_script_lexer_record_start. (menuentry): Add grub_script_lexer_record_start, use the new commands. (if): Use the new commands. * conf/common.rmk (pkgdata_MODULES): Add echo.mod. 2008-01-15 Robert Millan * normal/menu.c (run_menu): Move timeout message from here ... (print_timeout): ... to here. (run_menu): Use print_timeout() once during initial draw to print the whole message, and again in every clock tick to update only the number of seconds. 2008-01-15 Robert Millan * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Obtain actual size of `available' from grub_ieee1275_get_property(), and restrict parsing to that bound. 2008-01-15 Christian Franke * util/grub-emu.c: Replace by . (argp_program_version): Remove variable. (argp_program_bug_address): Likewise. (options): Convert from struct argp_option to struct option. (struct arguments): Remove. (parse_opt): Remove. (usage): New function. (main): Replace struct args members by simple variables. Replace argp_parse() by getopt_long(). Add switch to evaluate options. Add missing "(...)" around root_dev in prefix string. 2008-01-14 Robert Millan * kern/powerpc/ieee1275/init.c (grub_exit): Reimplement as a wrapper for grub_ieee1275_exit(), in order to improve portability. 2008-01-14 Robert Millan * util/grub.d/10_linux.in (prefix): Define. (exec_prefix): Likewise. Both definitions are later used by `libdir'. 2008-01-13 Pavel Roskin * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Don't use grub_errno if no errors have been detected. 2008-01-12 Robert Millan * include/grub/util/getroot.h (grub_dev_abstraction_types): New enum. (grub_util_get_dev_abstraction): New function prototype. * util/getroot.c: Include `' (grub_util_get_grub_dev): Move detection of abstraction type to ... (grub_util_get_dev_abstraction): ... here (new function). * util/grub-probe.c: Convert PRINT_* to an enum. Add `PRINT_ABSTRACTION'. (probe): Probe for abstraction type when requested. (main): Understand `--target=abstraction'. * util/i386/efi/grub-install.in: Add abstraction module to core image when it is found to be necessary. * util/i386/pc/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/update-grub_lib.in (font_path): Return system path without converting to GRUB path. * util/update-grub.in: Convert system path returned by font_path() to a GRUB path. Use `grub-probe -t abstraction' to determine what abstraction module is needed for loading fonts (if any). Export that as `GRUB_PRELOAD_MODULES'. * util/grub.d/00_header.in: Process `GRUB_PRELOAD_MODULES' (print insmod commands). 2008-01-12 Yoshinori K. Okuji Remove some unused code from reiserfs. * fs/reiserfs.c (struct grub_reiserfs_key) [GRUB_REISERFS_KEYV2_BITFIELD]: Removed offset and type. (struct grub_reiserfs_node_body): Removed. (grub_reiserfs_get_key_v2_type) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_get_key_offset) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_set_key_offset) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_set_key_offset) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_set_key_type) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_iterate_dir) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_open) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_read) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. (grub_reiserfs_dir) [GRUB_REISERFS_KEYV2_BITFIELD]: Likewise. 2008-01-10 Robert Millan * util/update-grub_lib.in (grub_file_is_not_garbage): New function. Determines if a file is garbage left by packaging systems, etc. * util/update-grub.in: Use grub_file_is_not_garbage() as a condition for processing /etc/grub.d scripts. * util/grub.d/10_hurd.in: Fix `GRUB_DISTRIBUTOR' comparison. * util/grub.d/10_linux.in: Likewise. Use grub_file_is_not_garbage() as a condition for processing Linux images. 2008-01-10 Pavel Roskin * include/grub/powerpc/libgcc.h (__ucmpdi2): New export. Needed to compile reiserfs.c on PowerPC. 2008-01-10 Robert Millan * kern/device.c (grub_device_iterate): Do not abort device iteration when one of the devices cannot be opened. * kern/disk.c (grub_disk_open): Do not account previous failures of unrelated functions when grub_errno is checked for. 2008-01-08 Robert Millan * loader/i386/pc/linux.c (grub_rescue_cmd_linux): For `! grub_linux_is_bzimage', change order of address comparison to make it more intuitive, and improve "too big zImage" error message. 2008-01-08 Robert Millan * Makefile.in (uninstall): Handle `$(update-grub_SCRIPTS)' and `$(update-grub_DATA)'. (distcheck): Fix race condition when invoking `$(MAKE)' on multiple targets. 2008-01-07 Robert Millan * boot/i386/pc/boot.S (boot_drive_check): Add a comment indicating which instruction is modified by grub-setup during installation (since it wasn't obvious by only looking at this file). 2008-01-07 Robert Millan * TODO: Rewrite. Just refer to the wiki and the BTS instead of listing actual TODO items. 2008-01-06 Yoshinori K. Okuji * fs/reiserfs.c (grub_reiserfs_get_key_v2_type): Handle endianness correctly. (grub_reiserfs_get_key_offset): Likewise. (grub_reiserfs_set_key_offset): Likewise. (grub_reiserfs_set_key_type): Likewise. (grub_reiserfs_iterate_dir): Return 1 if found, otherwise 0. (GRUB_REISERFS_KEYV2_BITFIELD): Undefined. Probably it would be better to remove the bitfield version completely. 2008-01-06 Yoshinori K. Okuji * fs/reiserfs.c (grub_reiserfs_iterate_dir): ENTRY_ITEM must be allocated from the heap, due to the fshelp implementation. (grub_reiserfs_dir): Free NODE, due to the same reason. 2008-01-06 Yoshinori K. Okuji Mostly from Vincent Pelletier: * fs/reiserfs.c: New file. * conf/common.rmk (pkglib_MODULES): Added reiserfs.mod. (reiserfs_mod_SOURCES): New variable. (reiserfs_mod_CFLAGS): Likewise. (reiserfs_mod_LDFLAGS): Likewise. * DISTLIST: Added boot/i386/pc/lnxboot.S, commands/hexdump.c, disk/ata.c, fs/cpio.c, fs/ntfscomp.c, fs/reiserfs.c, include/grub/ntfs.h, include/grub/i386/pc/machine.h, and normal/color.c. 2008-01-06 Robert Millan * normal/color.c: Remove `'. 2008-01-05 Jeroen Dekkers * include/grub/normal.h: Include . 2008-01-05 Robert Millan * util/i386/pc/grub-setup.c (usage): Replace obsolete `(hd0,0)' in usage example with `(hd0,1)'. Reported by Samuel Thibault. 2008-01-05 Robert Millan * kern/i386/loader.S (grub_linux_is_bzimage): New variable. (grub_linux_boot_zimage): Rename to ... (grub_linux_boot): ... this. (grub_linux_boot_bzimage): Merge with `grub_linux_boot_zimage'. (grub_linux_boot_zimage): Conditionalize zImage copy. * include/grub/i386/loader.h (grub_linux_is_bzimage): Add prototype. (grub_linux_boot_bzimage): Remove prototype. (grub_linux_boot_zimage): Rename to ... (grub_linux_boot): ... this. * loader/i386/pc/linux.c (big_linux): Replace with `grub_linux_is_bzimage'. (grub_linux_boot): Remove function. 2008-01-05 Robert Millan * include/grub/normal.h (grub_env_write_color_normal): New prototype. (grub_env_write_color_highlight): Likewise. (grub_wait_after_message): Likewise. * normal/color.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `normal/color.c'. (normal_mod_DEPENDENCIES): Likewise. * conf/i386-efi.rmk (grub_emu_SOURCES): Add `normal/color.c'. (normal_mod_DEPENDENCIES): Likewise. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Add `normal/color.c'. (normal_mod_DEPENDENCIES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `normal/color.c'. (normal_mod_DEPENDENCIES): Likewise. * normal/menu_entry.c (run): Rely on grub_wait_after_message() for waiting after a message is printed. * normal/main.c (read_config_file): Likewise. (grub_normal_init): Register grub_env_write_color_normal() and grub_env_write_color_highlight() hooks. Mark `color_normal' and `color_highlight' variables as global. * normal/menu.c (grub_wait_after_message): New function. (grub_color_menu_normal): New variable. Replaces ... (GRUB_COLOR_MENU_NORMAL): ... this macro. (grub_color_menu_highlight): New variable. Replaces ... (GRUB_COLOR_MENU_HIGHLIGHT): ... this macro. (draw_border): Set color state to `GRUB_TERM_COLOR_NORMAL' instead of `GRUB_TERM_COLOR_STANDARD'. (print_message): Use `grub_setcolorstate' to reload colors. Rename `normal_code' and `highlight_code' to `old_color_normal' and `old_color_highlight', respectively. (grub_menu_init_page): Update colors when drawing the menu, based on `menu_color_normal' and `menu_color_highlight' variables. (grub_menu_run): Rely on grub_wait_after_message() for waiting after a message is printed. 2008-01-05 Robert Millan * kern/env.c (grub_env_context_open): Propagate hooks for global variables to new context. * kern/main.c (grub_set_root_dev): Export `root' variable. 2008-01-05 Robert Millan * util/biosdisk.c (get_os_disk): Check for devfs-style IDE and SCSI discs unconditionally, since udev and others have options to provide them. 2008-01-05 Robert Millan * normal/completion.c (iterate_dir): Skip `.' and `..' directories. 2008-01-04 Christian Franke * kern/i386/pc/init.c (grub_machine_init): Fix evaluation of eisa_mmap. 2008-01-03 Pavel Roskin * kern/i386/linuxbios/init.c: Put "void" to all function declarations with no arguments. * kern/powerpc/ieee1275/init.c: Likewise. * term/i386/pc/at_keyboard.c: Likewise. * term/i386/pc/vga_text.c: Likewise. * util/grub-mkdevicemap.c: Likewise. 2008-01-02 Robert Millan * loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Improve error message when loaded image is out of bounds. (grub_multiboot_load_elf64): Likewise. 2008-01-02 Pavel Roskin * util/grub.d/10_linux.in: Try version without ".old" when looking for initrd. It's better to use initrd from the newer kernel of the same version than no initrd at all. 2008-01-01 Robert Millan * util/biosdisk.c (get_os_disk): Fix check for IDE or SCSI discs. 2008-01-01 Vesa Jaaskelainen * include/grub/video.h: Added grub_video_unmap_color and grub_video_get_active_render_target. (grub_video_adapter): Added unmap_color and get_active_render_target. * video/video.c: Added grub_video_unmap_color and grub_video_get_active_render_target. (grub_video_get_info): Changed method to accept NULL pointer as an argument to allow detection of active video adapter. * video/i386/pc/vbe.c: Renamed grub_video_vbe_unmap_color as grub_video_vbe_unmap_color_int. Added grub_video_vbe_unmap_color and grub_video_vbe_get_active_render_target. (grub_video_vbe_adapter): Added unmap_color and get_active_render_target. * video/i386/pc/vbeblit.c: Replaced grub_video_vbe_unmap_color usage with grub_video_vbe_unmap_color_int. * term/gfxterm.c (DEFAULT_STANDARD_COLOR): Added. (DEFAULT_NORMAL_COLOR): Likewise. (DEFAULT_HIGHLIGHT_COLOR) Likewise. (DEFAULT_FG_COLOR): Removed. (DEFAULT_BG_COLOR): Likewise. (DEFAULT_CURSOR_COLOR): Changed value. (grub_virtual_screen): Added standard_color_setting, normal_color_setting, highlight_color_setting and term_color. (grub_virtual_screen): Removed fg_color_setting and bg_color_setting. (bitmap_width): Added. (bitmap_height): Likewise. (bitmap): Likewise. (set_term_color): Likewise. (grub_virtual_screen_setup): Changed to use new terminal coloring settings. (grub_gfxterm_init): Added init for bitmap. (grub_gfxterm_fini): Added destroy for bitmap. (redraw_screen_rect): Updated to use background bitmap and new terminal coloring. (scroll_up): Added optimization for case when there is no bitmap. (grub_gfxterm_cls): Fixed to use correct background color. (grub_virtual_screen_setcolorstate): Changed to use new terminal coloring. (grub_virtual_screen_setcolor): Likewise. (grub_virtual_screen_getcolor): Added. (grub_gfxterm_background_image_cmd): Likewise. (grub_video_term): Added setcolor and getcolor. (MOD_INIT): Added registration of background_image command. (MOD_TERM): Added unregistration for background_image command. 2007-12-30 Pavel Roskin * loader/multiboot_loader.c: Fix multiboot command unregistration. Fix all typos in the word "multiboot". 2007-12-29 Pavel Roskin * util/grub.d/10_linux.in: Refactor search for initrd. Add support for initrd names used in Fedora. 2007-12-26 Bean * conf/common.rmk (pkgdata_MODULES): Add cpio.mod. (cpio_mod_SOURCES): New variable. (cpio_mod_CFLAGS): Likewise. (cpio_mod_LDFLAGS): Likewise. * fs/cpio.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Add cpio.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. 2007-12-25 Robert Millan * include/grub/term.h (struct grub_term): Add `getcolor' function. (grub_getcolor): New function. * kern/term.c (grub_getcolor): New function. * normal/menu.c (GRUB_COLOR_MENU_NORMAL): New macro. (GRUB_COLOR_MENU_HIGHLIGHT): New macro. (print_entry): Set normal and highlight colors to `GRUB_COLOR_MENU_NORMAL' and `GRUB_COLOR_MENU_HIGHLIGHT', respectively, before printing and restore them to old values afterwards. (grub_menu_init_page): Likewise. Fill an additional colored space that would otherwise be left blank. * term/efi/console.c (grub_console_getcolor): New function. (struct grub_console_term.getcolor): New variable. * term/i386/pc/console.c (grub_console_getcolor): New function. (struct grub_console_term.getcolor): New variable. * term/ieee1275/ofconsole.c (grub_ofconsole_getcolor): New function. (struct grub_console_term.getcolor): New variable. * term/i386/pc/serial.c (grub_serial_setcolor): Remove function. (struct grub_console_term.setcolor): Remove variable. * term/i386/pc/vesafb.c (grub_virtual_screen_setcolor): Remove function. (struct grub_console_term.setcolor): Remove variable. * term/i386/pc/vga.c (grub_vga_setcolor): Remove function. (struct grub_console_term.setcolor): Remove variable. * term/gfxterm.c (grub_virtual_screen_setcolor): Remove function. (struct grub_console_term.setcolor): Remove variable. 2007-12-25 Robert Millan * configure.ac: Search for possible unifont.hex locations, and define UNIFONT_HEX if found. * Makefile.in (UNIFONT_HEX): Define variable. (DATA): Rename to ... (PKGLIB): ... this. Update all users. (PKGDATA): New variable. (pkgdata_IMAGES): Rename to ... (pkglib_IMAGES): ... this. Update all users. (pkgdata_MODULES): Rename to ... (pkglib_MODULES): ... this. Update all users. (pkgdata_PROGRAMS): Rename to ... (pkglib_PROGRAMS): ... this. Update all users. (pkgdata_DATA): Rename to ... (pkglib_DATA): ... this. Update all users. (CLEANFILES): Redefine to `$(pkglib_DATA) $(pkgdata_DATA)'. (unicode.pff, ascii.pff): New rules. (all-local): Add `$(PKGDATA)' dependency. (install-local): Process `$(PKGDATA)'. * util/update-grub_lib.in (font_path): Search for *.pff files in a few more locations, including `${pkgdata}'. 2007-12-23 Robert Millan Patch from Bean : * disk/loopback.c (grub_loopback_read): Add missing bit shift to `size'. 2007-12-21 Bean * conf/common.rmk (pkgdata_MODULES): Add ntfscomp.mod. (ntfscomp_mod_SOURCES): New variable. (ntfscomp_mod_CFLAGS): Likewise. (ntfscomp_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/ntfscomp.c. (grub_probe_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. * conf/i386-efi.rmk (grub_probe_SOURCES): Add fs/ntfscomp.c. (grub_emu_SOURCES): Likewise. * conf/i386-linuxbios.rmk (grub_probe_SOURCES): Add fs/ntfscomp.c. (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_probe_SOURCES): Add fs/ntfscomp.c. (grub_emu_SOURCES): Likewise. * fs/ntfs.c (grub_ntfscomp_func): New variable. (read_run_list): Renamed to grub_ntfs_read_run_list. (decomp_nextvcn): Moved to ntfscomp.c. (decomp_getch): Likewise. (decomp_get16): Likewise. (decomp_block): Likewise. (read_block): Likewise. (read_data): Partially moved to ntfscomp.c. (fixup): Change unsigned to grub_uint16_t. (read_mft): Change unsigned long to grub_uint32_t. (read_attr): Likewise. (read_data): Likewise. (read_run_data): Likewise. (read_run_list): Likewise. (read_mft): Likewise. * fs/ntfscomp.c: New file. * include/grub/ntfs.h: New file. 2007-12-16 Robert Millan * util/grub-mkdevicemap.c (make_device_map): Iterate up to 20 for IDE disk check, since Linux is known to support 20 IDE disks. Reported by Colin Watson. 2007-12-15 Bean * conf/i386-pc.rmk (pkgdata_IMAGES): Add lnxboot.img. (lnxboot_img_SOURCES): New variable. (lnxboot_img_ASFLAGS): Likewise. (lnxboot_img_LDFLAGS): Likewise. * boot/i386/pc/lnxboot.S: New file. 2007-11-24 Pavel Roskin * configure.ac: Test if '--build-id=none' is supported by the linker. If yes, add it to TARGET_LDFLAGS. Build ID causes objcopy to generate incorrect binary files (binutils 2.17.50.0.18-1 as shipped by Fedora 8). * aclocal.m4 (grub_PROG_OBJCOPY_ABSOLUTE): Use LDFLAGS when linking, so that build ID doesn't break the test. 2007-11-24 Pavel Roskin * include/grub/i386/time.h: use "void" in the argument list of grub_cpu_idle(). * include/grub/powerpc/time.h: Likewise. * include/grub/sparc64/time.h: Likewise. 2007-11-18 Christian Franke * util/console.c (grub_ncurses_getkey): Change curses KEY_* mapping, now return control chars instead of GRUB_CONSOLE_KEY_* constants. This fixes the problem that function keys did not work in grub-emu. 2007-11-18 Christian Franke * disk/host.c (grub_host_open): Remove attribute unused from name parameter. Add check for "host". This fixes the problem that grub-emu does not find partitions. 2007-11-18 Christian Franke * util/hostfs.c (is_dir): New function. (grub_hostfs_dir): Handle missing dirent.d_type case. (grub_hostfs_read): Add missing fseek(). (grub_hostfs_label): Clear label pointer. This fixes a crash of grub-emu on "ls (host)". 2007-11-18 Christian Franke * include/grub/i386/pc/init.h (struct grub_machine_mmap_entry): Add attribute packed, gcc 3.4.4 on Cygwin aligns this to 64 bit boundary by default. 2007-11-18 Bean * conf/common.rmk (pkgdata_MODULES): Add hexdump.mod. (hexdump_mod_SOURCES): New variable. (hexdump_mod_CFLAGS): Likewise. (hexdump_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Add command/hexdump.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Add command/hexdump.c. * conf/i386-linuxbios.rmk (grub_emu_SOURCES): Add command/hexdump.c. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add command/hexdump.c. * include/grub/hexdump.h: New file. * commands/hexdump.c: New file. 2007-11-10 Robert Millan * commands/i386/pc/play.c (beep_off): Switch order of arguments in grub_outb() calls. (beep_on): Likewise. 2007-11-10 Christian Franke * normal/menu.c (run_menu): Check for empty menu to avoid crash. (grub_menu_run): Likewise. 2007-11-10 Robert Millan * include/grub/i386/efi/machine.h: New file. * include/grub/i386/linuxbios/machine.h: Likewise. * include/grub/i386/pc/machine.h: Likewise. * include/grub/powerpc/ieee1275/machine.h: Likewise. * include/grub/sparc64/ieee1275/machine.h: Likewise. * term/i386/pc/serial.c: Include . (serial_hw_io_addr): New variable. (serial_hw_get_port): Obtain port address from `serial_hw_io_addr' instead of `(unsigned short *) 0x400'. 2007-11-10 Bean * fs/ntfs.c (read_block): Fix a bug caused by adjacent blocks. 2007-11-10 Vesa Jaaskelainen * conf/i386-pc.rmk (pkgdata_MODULES): Added vga.mod. (vga_mod_SOURCES): Added. (vga_mod_CFLAGS): Likewise. (vga_mod_LDFLAGS): Likewise. * term/i386/pc/vga.c (get_map_mask): Switch order of arguments in grub_outb() calls. (set_map_mask): Likewise. (set_read_map): Likewise. (set_read_address): Likewise. (vga_font): Removed variable. (get_vga_glyph): Removed function. (invalidate_char): Likewise. (write_char): Changed to use grub_font_get_glyph() for font information. (grub_vga_putchar): Likewise. (grub_vga_getcharwidth): Likewise. 2007-11-10 Vesa Jaaskelainen * conf/i386-pc.rmk (boot_img_LDFLAGS): Use COMMON_LDFLAGS for target flags. (pxeboot_img_LDFLAGS): Likewise. (diskboot_img_LDFLAGS): Likewise. (kernel_img_LDFLAGS): Likewise. 2007-11-06 Robert Millan * term/i386/pc/serial.c (serial_hw_put): Switch order of arguments in grub_outb() calls. (serial_hw_init): Likewise. 2007-11-05 Robert Millan * util/update-grub.in: Allow files in ${update_grub_dir} to contain spaces. Skip non-regular files. 2007-11-05 Robert Millan * kern/disk.c (grub_disk_firmware_fini) (grub_disk_firmware_is_tainted): New variables. * include/grub/disk.h (grub_disk_firmware_fini) (grub_disk_firmware_is_tainted): Likewise. * disk/i386/pc/biosdisk.c (GRUB_MOD_FINI(biosdisk)): Moved from here ... (grub_disk_biosdisk_fini): ... to here. (GRUB_MOD_FINI(biosdisk)): Implement using grub_disk_biosdisk_fini(). (GRUB_MOD_INIT(biosdisk)): Abort when `grub_disk_firmware_is_tainted' is set. Register grub_disk_biosdisk_fini() in `grub_disk_firmware_fini'. * disk/ata.c: Remove `'. (GRUB_MOD_INIT(ata)): Remove grub_biosdisk_fini() call. Use `grub_disk_firmware_is_tainted' and `grub_disk_firmware_fini' to finish existing firmware disk interface. * conf/i386-linuxbios.rmk (pkgdata_MODULES): Add `ata.mod'. (ata_mod_SOURCES): New variable. (ata_mod_CFLAGS): Likewise. (ata_mod_LDFLAGS): Likewise. 2007-11-05 Robert Millan * disk/ata.c: Remove `'. Include `'. (grub_ata_wait): Reimplement using grub_millisleep(). * include/grub/misc.h (grub_div_roundup): Fix parenthesization. * include/grub/i386/time.h (grub_cpu_idle): Disable `hlt' instruction. 2007-11-03 Marco Gerards * term/i386/pc/vga_text.c: Include . (CRTC_ADDR_PORT): New macro. (CRTC_DATA_PORT): Likewise. (CRTC_CURSOR): Likewise. (CRTC_CURSOR_ADDR_HIGH): Likewise. (CRTC_CURSOR_ADDR_LOW): Likewise. (update_cursor): New function. (grub_console_real_putchar): Call `update_cursor'. (grub_console_gotoxy): Likewise. (grub_console_cls): Set the default color when clearing the screen. (grub_console_setcursor): Implemented. 2007-11-03 Marco Gerards * disk/ata.c (grub_ata_pio_read): Don't wait for the command to become activate. (grub_ata_pio_write): Likewise. (grub_atapi_identify): Wait after issuing an ATA command. (grub_atapi_packet): Likewise. (grub_ata_identify): Likewise. (grub_ata_readwrite): Likewise. 2007-11-03 Marco Gerards * disk/ata.c (grub_ata_pio_read): Detect and return the error code. (grub_ata_pio_write): Likewise. (grub_ata_readwrite): Use `grub_error', instead of returning `grub_errno'. 2007-11-03 Marco Gerards * disk/ata.c (grub_ata_readwrite): Call grub_ata_pio_read and grub_ata_pio_write once for every single sector, instead of for multiple sectors. 2007-10-31 Robert Millan * configure.ac: Add `i386-linuxbios' to the list of supported targets. * conf/i386-linuxbios.rmk: New file. * kern/i386/pc/hardware.c: Likewise. * term/i386/pc/at_keyboard.c: Likewise. * term/i386/pc/vga_text.c: Likewise. * include/grub/i386/linuxbios/boot.h: Likewise. * include/grub/i386/linuxbios/console.h: Likewise. * include/grub/i386/linuxbios/init.h: Likewise. * include/grub/i386/linuxbios/kernel.h: Likewise. * include/grub/i386/linuxbios/loader.h: Likewise. * include/grub/i386/linuxbios/memory.h: Likewise. * include/grub/i386/linuxbios/serial.h: Likewise. * include/grub/i386/linuxbios/time.h: Likewise. * kern/i386/linuxbios/init.c: Likewise. * kern/i386/linuxbios/startup.S: Likewise. * kern/i386/linuxbios/table.c: Likewise. 2007-10-31 Marco Gerards * conf/i386-pc.rmk (pkgdata_MODULES): Add `ata.mod'. (ata_mod_SOURCES): New variable. (ata_mod_CFLAGS): Likewise. (ata_mod_LDFLAGS): Likewise. * disk/ata.c: New file. * include/grub/disk.h (grub_disk_dev_id): Add `GRUB_DISK_DEV_ATA_ID'. 2007-10-31 Robert Millan * include/grub/i386/pc/init.h (grub_lower_mem): Moved from here ... * include/grub/i386/pc/memory.h (grub_lower_mem): ... to here. * include/grub/i386/pc/init.h (grub_upper_mem): Moved from here ... * include/grub/i386/pc/memory.h (grub_upper_mem): ... to here. * include/grub/i386/pc/memory.h: Include `' and `'. * loader/i386/pc/multiboot.c: Include `'. 2007-10-27 Robert Millan * include/grub/types.h (ULONG_MAX): Define macro. 2007-10-22 Robert Millan * kern/i386/pc/startup.S: Remove `"kern/i386/realmode.S"'. Include `"../realmode.S"'. Remove `"kern/i386/loader.S"'. Include `"../loader.S"'. 2007-10-22 Robert Millan * conf/i386-pc.rmk (kernel_img_SOURCES): Remove `disk/i386/pc/biosdisk.c'. (pkgdata_MODULES): Add `biosdisk.mod'. (biosdisk_mod_SOURCES, biosdisk_mod_CFLAGS, biosdisk_mod_LDFLAGS): New variables. * disk/i386/pc/biosdisk.c: Include `'. (grub_biosdisk_init): Replace with ... (GRUB_MOD_INIT(biosdisk)): ... this. (grub_biosdisk_fini): Replace with ... (GRUB_MOD_FINI(biosdisk)): ... this. * kern/i386/pc/init.c: Remove `'. (grub_machine_init): Remove call to grub_biosdisk_init(). (grub_machine_fini): Remove call to grub_machine_fini(). * util/i386/pc/grub-install.in (modules): Add `biosdisk'. 2007-10-22 Robert Millan * include/grub/time.h: New file. * include/grub/i386/time.h: Likewise. * include/grub/powerpc/time.h: Likewise. * include/grub/sparc64/time.h: Likewise. * include/grub/i386/pc/time.h (KERNEL_TIME_HEADER): Rename all instances to ... (KERNEL_MACHINE_TIME_HEADER): ... this. * include/grub/powerpc/ieee1275/time.h (KERNEL_TIME_HEADER): Rename all instances to ... (KERNEL_MACHINE_TIME_HEADER): ... this. * include/grub/sparc64/ieee1275/time.h (KERNEL_TIME_HEADER): Rename all instances to ... (KERNEL_MACHINE_TIME_HEADER): ... this. * kern/i386/efi/init.c: Include `'. (grub_millisleep): New function. * kern/i386/pc/init.c: Include `'. (grub_millisleep): New function. * kern/powerpc/ieee1275/init.c: Include `'. Remove `grub/machine/time.h' include. (grub_millisleep): New function. * kern/sparc64/ieee1275/init.c: Include `'. Remove `grub/machine/time.h' include. (grub_millisleep): New function. * include/grub/misc.h (grub_div_roundup): New function. * kern/misc.c: Include `'. (grub_millisleep_generic): New function. * conf/i386-efi.rmk (kernel_mod_HEADERS): Remove `i386/efi/time.h'. Add `time.h'. * conf/i386-pc.rmk (kernel_img_HEADERS): Remove `machine/time.h'. Add `time.h'. * conf/powerpc-ieee1275.rmk (kernel_elf_HEADERS): Remove `machine/time.h'. Add `time.h'. * conf/sparc64-ieee1275.rmk (kernel_elf_HEADERS): Likewise. 2007-10-21 Robert Millan * include/grub/misc.h (grub_max): New function. 2007-10-21 Robert Millan * util/misc.c (grub_util_info): Call fflush() before returning. 2007-10-20 Robert Millan * genmk.rb (Image): Copy `extra_flags' from here ... (PModule): ... to here. Use it in `#{obj}: #{src}' rule. * commands/i386/cpuid.c (grub_cmd_cpuid): Add __attribute__ ((unused)) to `argc' and `args' arguments. 2007-10-17 Robert Millan * kern/i386/loader.S: New file. * kern/i386/pc/startup.S (grub_linux_prot_size): Moved from here ... * kern/i386/loader.S (grub_linux_prot_size)... to here. * kern/i386/pc/startup.S (grub_linux_tmp_addr): Moved from here ... * kern/i386/loader.S (grub_linux_tmp_addr)... to here. * kern/i386/pc/startup.S (grub_linux_real_addr): Moved from here ... * kern/i386/loader.S (grub_linux_real_addr)... to here. * kern/i386/pc/startup.S (grub_linux_boot_zimage): Moved from here ... * kern/i386/loader.S (grub_linux_boot_zimage)... to here. * kern/i386/pc/startup.S (grub_linux_boot_bzimage): Moved from here ... * kern/i386/loader.S (grub_linux_boot_bzimage)... to here. * kern/i386/pc/startup.S (grub_multiboot_real_boot): Moved from here ... * kern/i386/loader.S (grub_multiboot_real_boot)... to here. * kern/i386/pc/startup.S (grub_multiboot2_real_boot): Moved from here ... * kern/i386/loader.S (grub_multiboot2_real_boot)... to here. * kern/i386/realmode.S: New file. * kern/i386/pc/startup.S (protstack): Moved from here ... * kern/i386/realmode.S (protstack)... to here. * kern/i386/pc/startup.S (gdt): Moved from here ... * kern/i386/realmode.S (gdt)... to here. * kern/i386/pc/startup.S (prot_to_real): Moved from here ... * kern/i386/realmode.S (prot_to_real)... to here. * kern/i386/pc/startup.S: Include `kern/i386/loader.S' and `kern/i386/realmode.S'. 2007-10-17 Robert Millan * include/grub/i386/loader.h: New file. * include/grub/i386/pc/loader.h (grub_linux_prot_size) (grub_linux_tmp_addr, grub_linux_real_addr, grub_os_area_addr) (grub_os_area_size, grub_linux_boot_zimage, grub_linux_boot_bzimage) (grub_multiboot_real_boot, grub_multiboot2_real_boot) (grub_rescue_cmd_linux, grub_rescue_cmd_initrd): Moved from here ... * include/grub/i386/loader.h (grub_linux_prot_size) (grub_linux_tmp_addr, grub_linux_real_addr, grub_os_area_addr) (grub_os_area_size, grub_linux_boot_zimage, grub_linux_boot_bzimage) (grub_multiboot_real_boot, grub_multiboot2_real_boot) (grub_rescue_cmd_linux, grub_rescue_cmd_initrd): ... to here. * include/grub/i386/pc/loader.h: Include `grub/cpu/loader.h'. 2007-10-15 Robert Millan * normal/misc.c (grub_normal_print_device_info): Do not probe for filesystem when dev->disk is unset. Do probe for filesystem even when dev->disk->has_partitions is set. In case a filesystem is found, always report it. In case it isn't, if dev->disk->has_partitions is set, report that a partition table was found instead of reporting that no filesystem could be identified. 2007-10-12 Robert Millan * conf/powerpc-ieee1275.rmk (grub_mkimage_SOURCES): Replace reference to util/powerpc/ieee1275/grub-mkimage.c with util/elf/grub-mkimage.c. * include/grub/types.h (grub_host_to_target16): New macro. (grub_host_to_target32): Likewise. (grub_host_to_target64): Likewise. (grub_target_to_host16): Likewise. (grub_target_to_host32): Likewise. (grub_target_to_host64): Likewise. * include/grub/powerpc/ieee1275/kernel.h (GRUB_IEEE1275_MOD_ALIGN): Renamed from to ... (GRUB_MOD_ALIGN): ...this. Update all users. * util/elf/grub-mkimage.c (load_note): Replace grub_cpu_to_be32 with grub_host_to_target32. Replace grub_be_to_cpu32 with grub_target_to_host32. (load_modules): Likewise. (add_segments): Replace grub_be_to_cpu16 with grub_target_to_host16. Replace grub_be_to_cpu32 with grub_target_to_host32. Replace grub_cpu_to_be16 with grub_host_to_target16. Replace grub_cpu_to_be32 grub_host_to_target32. 2007-10-12 Robert Millan * util/powerpc/ieee1275/grub-mkimage.c: Moved to ... * util/elf/grub-mkimage.c: ... here. * DISTLIST: Add `util/elf/grub-mkimage.c'. Remove `util/powerpc/ieee1275/grub-mkimage.c'. 2007-10-07 Robert Millan * kern/powerpc/ieee1275/init.c: Rename HEAP_LIMIT to HEAP_MAX_ADDR, and make it easier to figure out. Add HEAP_MIN_SIZE and HEAP_MAX_ADDR definitions. (grub_claim_heap): Use HEAP_MAX_ADDR rather than taking a parameter. Do not avoid claiming a region above HEAP_MAX_ADDR if that would leave us with less than HEAP_MIN_SIZE total heap. Avoid our total amount of heap to surpass HEAP_MAX_SIZE. 2007-10-03 Robert Millan * include/grub/i386/io.h: New file. * commands/i386/pc/play.c (inb): Removed. (outb): Removed. Include grub/cpu/io.h. Replace inb() with grub_inb() and outb() with grub_outb(). * term/i386/pc/serial.c (inb): Removed. (outb): Removed. Include grub/cpu/io.h. Replace inb() with grub_inb() and outb() with grub_outb(). * term/i386/pc/vga.c (inb): Removed. (outb): Removed. Include grub/cpu/io.h. Replace inb() with grub_inb() and outb() with grub_outb(). 2007-10-02 Robert Millan * conf/i386-efi.rmk (grub_emu_SOURCES): Add util/hostfs.c. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. Reported by Marcin Kurek. 2007-09-07 Robert Millan * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_test_flag): Detect SmartFirmware version updates (as released by Sven Luther), and avoid setting GRUB_IEEE1275_FLAG_NO_PARTITION_0 or GRUB_IEEE1275_FLAG_0_BASED_PARTITIONS unless the running version is known broken. 2007-09-03 Yoshinori K. Okuji From Hitoshi Ozeki: * kern/i386/pc/init.c (compact_mem_regions): Decrease NUM_REGIONS when merging two regions. 2007-09-03 Yoshinori K. Okuji * kern/rescue.c (grub_enter_rescue_mode): Free ARGS. * normal/completion.c (grub_normal_do_completion): Likewise. Reported by Hitoshi Ozeki. 2007-09-03 Yoshinori K. Okuji Do not use devices at boot in chainloading. * loader/i386/pc/chainloader.c (boot_drive): New variable. (boot_part_addr): Likewise. (grub_chainloader_boot): Simply call grub_chainloader_real_boot with BOOT_DRIVE and BOOT_PART_ADDR. (grub_chainloader_cmd): Set BOOT_DRIVE and BOOT_PART_ADDR. Reported by Hitoshi Ozeki . 2007-08-29 Robert Millan Patch from Simon Peter : * genmk.rb (Utility): Append $(#{src}_DEPENDENCIES) to #{obj} targets. * conf/i386-pc.rmk: Replace grub-probe_DEPENDENCIES with util/grub-probe.c_DEPENDENCIES. Replace grub-setup_DEPENDENCIES with util/i386/pc/grub-setup.c_DEPENDENCIES. * conf/i386-efi.rmk: Replace grub-probe_DEPENDENCIES with util/grub-probe.c_DEPENDENCIES. * conf/powerpc-ieee1275.rmk: Likewise. 2007-08-28 Robert Millan * util/i386/get_disk_name.c: New. Implement grub_util_get_disk_name() to tell grub-mkdevicemap how to name devices. * util/ieee1275/get_disk_name.c: Likewise (using "ofpathname -a" feature). * conf/i386-efi.rmk (grub_mkdevicemap_SOURCES): Add util/i386/get_disk_name.c. * conf/i386-pc.rmk (grub_mkdevicemap_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_mkdevicemap_SOURCES): Add util/ieee1275/get_disk_name.c. * include/grub/util/misc.h: grub_util_get_disk_name() declaration. * DISTLIST: Add util/i386/get_disk_name.c and util/ieee1275/get_disk_name.c. * util/grub-mkdevicemap.c: Replace device naming logic with grub_util_get_disk_name() calls. 2007-08-20 Robert Millan * normal/menu.c (run_menu): Refer to seconds as "s" not "seconds" (so that it works for both plural and singular quantities). 2007-08-05 Robert Millan * util/grub.d/10_linux.in (test_gt): Strip out vmlinu[xz]- prefix so that [xz] isn't taken into account when determining order. 2007-08-02 Marco Gerards * DISTLIST: Add `disk/host.c', `fs/ntfs.c', `include/multiboot.h', `include/multiboot2.h', `include/grub/elfload.h', `include/multiboot.h', `include/grub/multiboot.h', `include/grub/multiboot_loader.h', `include/grub/multiboot2.h', `include/grub/i386/pc/biosdisk.h', `include/grub/util/biosdisk.h', `kern/elf.c', `loader/multiboot_loader.c', `loader/multiboot_loader_normal.c', `loader/multiboot2.c', `loader/i386/pc/multiboot2.c', `loader/powerpc/ieee1275/multiboot2.c', `util/hostfs.c' and `util/i386/pc/grub-mkrescue.in'. Remove `include/grub/biosdisk.h', `include/grub/i386/pc/multiboot.h', `include/grub/i386/pc/util/biosdisk.h' and `include/grub/powerpc/ieee1275/multiboot.h'. 2007-08-02 Bean * conf/common.rmk (pkgdata_MODULES): Add ntfs.mod. (ntfs_mod_SOURCES): New variable. (ntfs_mod_CFLAGS): Likewise. (ntfs_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/ntfs.c. (grub_probe_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. * conf/i386-efi.rmk (grub_probe_SOURCES): Add fs/ntfs.c. (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_probe_SOURCES): Add fs/ntfs.c. (grub_emu_SOURCES): Likewise. * conf/misc.c (grub_utf16_to_utf8): Fix unicode conversion bug. * fs/ntfs.c: New file. 2007-08-02 Bean * disk.h (grub_disk): Use NESTED_FUNC_ATTR. * file.h (grub_file): Likewise. * fshelp.h (grub_fshelp_read_file): Likewise. * util/i386/pc/grub-setup.c (setup): Likewise. (save_first_sector): Likewise. (save_blocklists): Likewise. * fs/affs.c (grub_affs_read_file): Likewise. * fs/ext2.c (grub_ext2_read_file): Likewise. * fs/fat.c (grub_fat_read_data): Likewise. * fs/fshelp.c (grub_fshelp_read_file): Likewise. * fs/hfs.c (grub_hfs_read_file): Likewise. * fs/hfsplus.c (grub_hfsplus_read_file): Likewise. * fs/jfs.c (grub_jfs_read_file): Likewise. * fs/minix.c (grub_minix_read_file): Likewise. * fs/sfs.c (grub_sfs_read_file): Likewise. * fs/ufs.c (grub_ufs_read_file): Likewise. * fs/xfs.c (grub_xfs_read_file): Likewise. * command/blocklist.c (read_blocklist): Likewise. (print_blocklist): Likewise. 2007-08-02 Marco Gerards * conf/i386-pc.rmk (grub_emu_SOURCES): Add `disk/host.c' and `util/hostfs.c'. * disk/host.c: New file. * util/hostfs.c: Likewise. * fs/hfsplus.c (grub_hfsplus_mount): When reading out of disk, return `GRUB_ERR_BAD_FS'. * fs/sfs.c (grub_sfs_mount): Likewise. * fs/xfs.c (grub_xfs_mount): Likewise. * include/grub/disk.h (enum grub_disk_dev_id): Add `GRUB_DISK_DEVICE_HOST_ID'. * util/grub-emu.c (main): Initialize and de-initialize hostfs. 2007-07-24 Jerone Young * conf/i386-pc.rmk: Add Multiboot loader and multiboot 2 to multiboot modules for compilation. * conf/powerpc-ieee1275.rmk: Likewise. * include/multiboot.h: Move multiboot definitions to one file. Rename many definitions to not get grub specific. * include/multiboot2.h: Create header with multiboot 2 definitions. * include/grub/multiboot.h: Header for grub specific function prototypes and definitions. * include/grub/multiboot2.h: Likewise. * include/grub/multiboot_loader.h: Likewise. * include/grub/i386/pc/multiboot.h: Removed. * include/grub/powerpc/ieee1275/multiboot.h: Removed. * loader/multiboot_loader.c: Created to act as a proxy for multiboot 1 and 2 to allow for one multiboot and module commands. * loader/multiboot2.c: Add multiboot2 functionality. * loader/i386/pc/multiboot.c: Modify for new multiboot header location and definition names. * loader/i386/pc/multiboot2.c: Created to add i386 specific multiboot 2 functions. * loader/powerpc/ieee1275/multiboot2.c: Created to add powerpc ieee1275 specific multiboot2 code. * kern/i386/pc/startup.S: Change headers and definition names for multiboot. Add function grub_multiboot2_real_boot for multiboot 2. 2007-07-22 Robert Millan * geninitheader.sh: Process file specified in first parameter rather than hardcoding grub_modules_init.lst. * geninit.sh: Likewise. Also, construct header name dynamically rather than hardcoding grub_modules_init.h. * conf/common.rmk: Rename grub_modules_init.[ch] files associated with grub-emu to grub_emu_init.[ch]. Add rules to build analogous grub_probe_init.[ch] and grub_setup_init.[ch]. * conf/powerpc-ieee1275.rmk (grub_emu_DEPENDENCIES): Replace grub_modules_init.h with grub_emu_init.h. (grub_probe_DEPENDENCIES, grub_probe_SOURCES): Add new grub_probe_init.[ch] files. * conf/i386-efi.rmk: Likewise. * conf/i386-pc.rmk: Likewise. (grub_setup_DEPENDENCIES, grub_setup_SOURCES): Add new grub_setup_init.[ch] files. * util/grub-emu.c: Replace grub_modules_init.h with grub_emu_init.h. * util/grub-probe.c: Include grub_probe_init.h. Use grub_init_all() to initialize modules rather than a list of hardcoded functions. * util/i386/pc/grub-setup.c: Include grub_setup_init.h. Use grub_init_all() to initialize modules rather than a list of hardcoded functions. 2007-07-22 Robert Millan * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Set GRUB_IEEE1275_FLAG_NO_PARTITION_0 flag when running on SmartFirmware. 2007-07-22 Robert Millan * include/grub/ieee1275/ieee1275.h (grub_ieee1275_flag): Add GRUB_IEEE1275_FLAG_BROKEN_OUTPUT flag. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Set this flag when running on SmartFirmware. * term/ieee1275/ofconsole.c (grub_ofconsole_init): Avoid running "output-device output" command when GRUB_IEEE1275_FLAG_BROKEN_OUTPUT was set. * kern/powerpc/ieee1275/openfw.c (grub_ieee1275_encode_devname): Increase partno when GRUB_IEEE1275_FLAG_0_BASED_PARTITIONS flag is set, rather than decreasing it. * util/i386/pc/grub-setup.c (setup): When embedding is required, but there's not enough space to do it, fail in the same way as when it can't be done because there are no partitions. * util/powerpc/ieee1275/grub-install.in: Improve error message shown when nvsetenv failed. 2007-07-22 Yoshinori K. Okuji * conf/i386-pc.rmk (CLEANFILES): Removed for grub-mkrescue, because this rule is automatically generated. (grub-mkrescue): Removed for the same reason as above. 2007-07-22 Yoshinori K. Okuji Migrate to GNU General Public License Version 3. * COPYING: Replaced with the plain text version of GPLv3. * config.guess: Updated from gnulib. * config.sub: Likewise. * geninit.sh: Output a GPLv3 copyright notice. * geninitheader.sh: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh.in: Likewise. * boot/i386/pc/boot.S: Upgraded to GPLv3. * boot/i386/pc/diskboot.S: Likewise. * boot/i386/pc/pxeboot.S: Likewise. * commands/blocklist.c: Likewise. * commands/boot.c: Likewise. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/configfile.c: Likewise. * commands/echo.c: Likewise. * commands/help.c: Likewise. * commands/ls.c: Likewise. * commands/search.c: Likewise. * commands/terminal.c: Likewise. * commands/test.c: Likewise. * commands/videotest.c: Likewise. * commands/i386/cpuid.c: Likewise. * commands/i386/pc/halt.c: Likewise. * commands/i386/pc/play.c: Likewise. * commands/i386/pc/reboot.c: Likewise. * commands/i386/pc/vbeinfo.c: Likewise. * commands/i386/pc/vbetest.c: Likewise. * commands/ieee1275/halt.c: Likewise. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c: Likewise. * disk/loopback.c: Likewise. * disk/lvm.c: Likewise. * disk/raid.c: Likewise. * disk/efi/efidisk.c: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/ieee1275/ofdisk.c: Likewise. * font/manager.c: Likewise. * fs/affs.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * fs/fshelp.c: Likewise. * fs/hfs.c: Likewise. * fs/hfsplus.c: Likewise. * fs/iso9660.c: Likewise. * fs/jfs.c: Likewise. * fs/minix.c: Likewise. * fs/sfs.c: Likewise. * fs/ufs.c: Likewise. * fs/xfs.c: Likewise. * hello/hello.c: Likewise. * include/grub/acorn_filecore.h: Likewise. * include/grub/arg.h: Likewise. * include/grub/bitmap.h: Likewise. * include/grub/boot.h: Likewise. * include/grub/cache.h: Likewise. * include/grub/device.h: Likewise. * include/grub/disk.h: Likewise. * include/grub/dl.h: Likewise. * include/grub/elfload.h: Likewise. * include/grub/env.h: Likewise. * include/grub/err.h: Likewise. * include/grub/file.h: Likewise. * include/grub/font.h: Likewise. * include/grub/fs.h: Likewise. * include/grub/fshelp.h: Likewise. * include/grub/gzio.h: Likewise. * include/grub/hfs.h: Likewise. * include/grub/kernel.h: Likewise. * include/grub/loader.h: Likewise. * include/grub/lvm.h: Likewise. * include/grub/misc.h: Likewise. * include/grub/mm.h: Likewise. * include/grub/net.h: Likewise. * include/grub/normal.h: Likewise. * include/grub/parser.h: Likewise. * include/grub/partition.h: Likewise. * include/grub/pc_partition.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/rescue.h: Likewise. * include/grub/script.h: Likewise. * include/grub/setjmp.h: Likewise. * include/grub/symbol.h: Likewise. * include/grub/term.h: Likewise. * include/grub/terminfo.h: Likewise. * include/grub/tparm.h: Likewise. * include/grub/types.h: Likewise. * include/grub/video.h: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/chainloader.h: Likewise. * include/grub/efi/console.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/disk.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/efi/time.h: Likewise. * include/grub/i386/linux.h: Likewise. * include/grub/i386/setjmp.h: Likewise. * include/grub/i386/types.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * include/grub/i386/efi/loader.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * include/grub/i386/pc/biosdisk.h: Likewise. * include/grub/i386/pc/boot.h: Likewise. * include/grub/i386/pc/chainloader.h: Likewise. * include/grub/i386/pc/console.h: Likewise. * include/grub/i386/pc/init.h: Likewise. * include/grub/i386/pc/kernel.h: Likewise. * include/grub/i386/pc/loader.h: Likewise. * include/grub/i386/pc/memory.h: Likewise. * include/grub/i386/pc/multiboot.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * include/grub/i386/pc/time.h: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * include/grub/i386/pc/vbeblit.h: Likewise. * include/grub/i386/pc/vbefill.h: Likewise. * include/grub/i386/pc/vbeutil.h: Likewise. * include/grub/i386/pc/vga.h: Likewise. * include/grub/ieee1275/ieee1275.h: Likewise. * include/grub/ieee1275/ofdisk.h: Likewise. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/powerpc/setjmp.h: Likewise. * include/grub/powerpc/types.h: Likewise. * include/grub/powerpc/ieee1275/biosdisk.h: Likewise. * include/grub/powerpc/ieee1275/console.h: Likewise. * include/grub/powerpc/ieee1275/ieee1275.h: Likewise. * include/grub/powerpc/ieee1275/kernel.h: Likewise. * include/grub/powerpc/ieee1275/loader.h: Likewise. * include/grub/powerpc/ieee1275/multiboot.h: Likewise. * include/grub/powerpc/ieee1275/time.h: Likewise. * include/grub/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/grub/sparc64/libgcc.h: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * include/grub/util/biosdisk.h: Likewise. * include/grub/util/getroot.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/misc.h: Likewise. * include/grub/util/raid.h: Likewise. * include/grub/util/resolve.h: Likewise. * io/gzio.c: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/elf.c: Likewise. * kern/env.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/parser.c: Likewise. * kern/partition.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/efi/efi.c: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * kern/ieee1275/ieee1275.c: Likewise. * kern/powerpc/cache.S: Likewise. * kern/powerpc/dl.c: Likewise. * kern/powerpc/ieee1275/cmain.c: Likewise. * kern/powerpc/ieee1275/crt0.S: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * kern/sparc64/cache.S: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. * loader/i386/efi/linux.c: Likewise. * loader/i386/efi/linux_normal.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/chainloader_normal.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/linux_normal.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * loader/powerpc/ieee1275/linux_normal.c: Likewise. * normal/arg.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/completion.c: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/menu_entry.c: Likewise. * normal/misc.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * normal/i386/setjmp.S: Likewise. * normal/powerpc/setjmp.S: Likewise. * normal/sparc64/setjmp.S: Likewise. * partmap/acorn.c: Likewise. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/gpt.c: Likewise. * partmap/pc.c: Likewise. * partmap/sun.c: Likewise. * term/gfxterm.c: Likewise. * term/terminfo.c: Likewise. * term/efi/console.c: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/serial.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * term/i386/pc/vga.c: Likewise. * term/ieee1275/ofconsole.c: Likewise. * util/biosdisk.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/getroot.c: Likewise. * util/grub-emu.c: Likewise. * util/grub-mkdevicemap.c: Likewise. * util/grub-probe.c: Likewise. * util/lvm.c: Likewise. * util/misc.c: Likewise. * util/raid.c: Likewise. * util/resolve.c: Likewise. * util/update-grub.in: Likewise. * util/update-grub_lib.in: Likewise. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/i386/efi/grub-install.in: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-mkimage.c: Likewise. * util/i386/pc/grub-mkrescue.in: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/misc.c: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-mkimage.c: Likewise. * util/powerpc/ieee1275/misc.c: Likewise. * video/bitmap.c: Likewise. * video/video.c: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * video/readers/tga.c: Likewise. 2007-07-02 Robert Millan * conf/i386-efi.rmk: Replace obsolete reference to util/i386/pc/biosdisk.c with util/biosdisk.c, and util/i386/pc/getroot.c with util/getroot.c. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk: Likewise. * util/grub-emu.c (main): Fix unchecked pointer handling. 2007-07-02 Robert Millan * util/i386/efi/grub-install.in: Allow `grub_probe --target=partmap' invocation to fail, in order to support partition-less media. * util/i386/pc/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-install.in: Use grub-probe to determine which fs or partmap modules are needed (akin to its sister scripts). Also use grub-probe to get rid of unportable /proc/mounts check. Print the same informational message that the other scripts do, before exiting. 2007-06-23 Robert Millan * util/update-grub_lib.in (font_path): New function. Determine whether a font file can be found and, if so, echo the GRUB path to it. * util/update-grub.in: Handle multiple terminals depending on user input, platform availability and font file presence. Propagate variables of our findings to /etc/grub.d/ children. * util/grub.d/00_header.in: Handle multiple terminals, based on environment setup by update-grub. 2007-06-23 Robert Millan * conf/i386-pc.rmk (pkgdata_MODULES): Add serial.mod. 2007-06-21 Robert Millan * include/grub/i386/pc/kernel.h: Define GRUB_KERNEL_MACHINE_DATA_END to indicate end of data section in kernel image. * include/grub/i386/efi/kernel.h: Define GRUB_KERNEL_MACHINE_PREFIX and GRUB_KERNEL_MACHINE_DATA_END. * kern/i386/pc/startup.S: Do not initialize grub_prefix, only reserve space for it. * kern/i386/efi/startup.S: Likewise. * util/i386/pc/grub-mkimage.c: Initialize grub_prefix to /boot/grub during image generation. Implement --prefix option to override this patch. * util/i386/efi/grub-mkimage.c: Likewise. * util/update-grub_lib.in (convert_system_path_to_grub_path): Split code to make path relative to its root into a separate function. * util/i386/pc/grub-install.in: Use newly provided make_system_path_relative_to_its_root() to convert ${grubdir}, then pass the result to grub-install --prefix. 2007-06-13 Robert Millan * include/grub/util/misc.h: Define DEFAULT_DIRECTORY and DEFAULT_DEVICE_MAP. * util/grub-emu.c: Use above definitions from misc.h instead of defining them. * util/grub-mkdevicemap.c: Likewise. * util/i386/pc/grub-setup.c: Likewise. * util/grub-probe.c: Likewise. (probe): Abort with grub_util_error() when either grub_guess_root_device or grub_util_get_grub_dev fails. 2007-06-12 Robert Millan * normal/command.c (grub_command_execute): Use NULL rather than 0 for "pager" assignment. * util/biosdisk.c (grub_util_biosdisk_get_grub_dev): Likewise for "pcdata". * util/grub-probe.c (probe): Likewise for "drive_name". 2007-06-11 Robert Millan * util/i386/pc/grub-mkrescue.in: Pad both floppy images with zeroes, not just the cdrom one. 2007-06-11 Robert Millan * util/i386/pc/grub-mkrescue.in: Add "set -e". Add --pkglibdir=DIR option to override pkglibdir. Mention --image-type=TYPE in help output. Fix --grub-mkimage (it was a no-op). Abort gracefully when no parameter is given. 2007-06-11 Robert Millan * util/i386/pc/grub-mkrescue.in: New file. * conf/i386-pc.rmk: Add its build declarations. Put it in bin_SCRIPTS. * Makefile.in: Handle bin_SCRIPTS. 2007-06-10 Vesa Jaaskelainen * term/gfxterm.c (grub_gfxterm_init): Added support for specifying list of video modes. 2007-06-06 Robert Millan * util/update-grub_lib.in (convert_system_path_to_grub_path): Abort if file doesn't exist, or if it is in a filesystem grub can't read. * util/update-grub.in: Set fallback for GRUB_FS check to "unknown". Do not abort if GRUB_DRIVE could not be defined. Rearrange generated header comment to fit in 80 columns when the variables are resolved. * util/grub.d/00_header.in: Only set root variable when GRUB_DRIVE could be identified by update-grub. Remove redundant check for unifont.pff existence (since convert_system_path_to_grub_path now handles that). 2007-06-04 Robert Millan * conf/i386-efi.rmk (grub_probe_SOURCES): Add partmap/apple.c. * conf/i386-pc.rmk (grub_probe_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_probe_SOURCES): Add partmap/pc.c. 2007-06-04 Robert Millan * conf/powerpc-ieee1275.rmk: Enable grub-mkdevicemap and grub-probe. * include/grub/partition.h: Declare grub_apple_partition_map_init and grub_apple_partition_map_fini. * util/biosdisk.c (grub_util_biosdisk_open): Replace BLKGETSIZE with BLKGETSIZE64 (needed to access >2 TiB disks). Print disk->total_sectors with %llu instead of %lu, since this variable is always 64-bit (prevents wrong disk size from being displayed on either >2 TiB disk or big-endian CPU). (grub_util_biosdisk_get_grub_dev): Convert gpt_partition_map handling into a generic case that supports all (sane) partition maps. Stop using grub_cpu_to_le32() on dos_part / bsd_part since it actually breaks big-endian. * util/grub-probe.c: Call grub_apple_partition_map_init() before probe() and grub_apple_partition_map_fini() after that. 2007-06-01 Robert Millan * util/update-grub.in: Export GRUB_CMDLINE_LINUX. * util/grub.d/00_header.in: Only enable gfxterm when convert_system_path_to_grub_path() succeeds. 2007-05-20 Robert Millan * util/update-grub_lib.in: New file. * DISTLIST: Add update-grub_lib.in. * conf/common.rmk: Generate update-grub_lib and install it in $(lib_DATA). * Makefile.in: Add install routine for $(lib_DATA). * util/grub.d/00_header.in: Use convert_system_path_to_grub_path() function provided by update-grub_lib to support arbitrary paths of unifont.pff. * util/update-grub.in: Use convert_system_path_to_grub_path() to initialize GRUB_DRIVE_BOOT and GRUB_DRIVE_BOOT_GRUB variables. 2007-05-19 Robert Millan * commands/i386/cpuid.c: New module. * DISTLIST: Add it. * conf/i386-efi.rmk: Enable cpuid.mod. * conf/i386-pc.rmk: Likewise. 2007-05-18 Jeroen Dekkers * kern/disk.c (grub_disk_read): Check return value of grub_realloc(). 2007-05-18 Jeroen Dekkers * util/getroot.c (grub_util_get_grub_dev): Support partitionable arrays. * disk/raid.c (grub_raid_open): Likewise. 2007-05-17 Jeroen Dekkers * util/biosdisk.c (linux_find_partition): Allocate real_dev on the stack instead of on the heap. * kern/disk.c (grub_disk_read): Make sure tmp_buf is big enough before doing a read on it. * configure.ac: Only use -fno-stack-protector for the target environment. 2007-05-17 Jeroen Dekkers * video/i386/pc/vbe.c (grub_video_vbe_create_render_target): Add __attribute_ ((unused)) to mode_type argument. * util/getroot.c (grub_guess_root_device): Fix #endif. * kern/misc.c (memcmp): Fix prototype. * include/grub/partition.h [GRUB_UTIL] (grub_gpt_partition_map_init): Add prototype. (grub_gpt_partition_map_fini): Likewise. * fs/jfs.c (struct grub_jfs_inode): Put __attribute__ ((packed) at the right place. * fs/fat.c (grub_fat_mount): Replace ~0UL with ~0U. (grub_fat_read_data): Likewise. (grub_fat_find_dir): Likewise. * font/manager.c (find_glyph): Make table a const. (grub_font_get_glyph): Remove bitmap from if statement. 2007-05-16 Jeroen Dekkers * util/getroot.c (grub_guess_root_device): Remove RAID and LVM code, first search for device in /dev/mapper, then in /dev. (grub_util_get_grub_dev): New function. * include/grub/util/getroot.h (grub_util_get_grub_dev): Add prototype. * util/grub-probe.c (probe): Remove check for RAID, call grub_util_get_grub_dev() instead of grub_util_biosdisk_get_grub_dev(). * util/grub-emu.c (main): Call grub_util_get_grub_dev() instead of grub_util_biosdisk_get_grub_dev(). * util/i386/pc/grub-setup.c (main): Likewise. 2007-05-16 Robert Millan * DISTLIST: Update for the latest changes. * conf/i386-pc.rmk: Use the new paths for util/getroot.c, util/grub-mkdevicemap.c, util/grub-probe.c and util/biosdisk.c. * util/grub-emu.c: Replace grub/i386/pc/util/biosdisk.h with grub/util/biosdisk.h. * util/i386/pc/grub-setup.c: Replace grub/machine/util/biosdisk.h with grub/util/biosdisk.h. 2007-05-16 Robert Millan * util/grub.d/00_header.in: Set default gfxmode to `640x480'. 2007-05-16 Robert Millan * util/i386/efi/grub-install.in: New. * conf/i386-efi.rmk: Enable grub-mkdevicemap, grub-probe and the newly added grub-install. * util/biosdisk.c: Remove unnecessary grub/machine/biosdisk.h include. * util/getroot.c: Replace grub/i386/pc/util/biosdisk.h with grub/util/biosdisk.h. * util/grub-probe.c: Replace grub/machine/util/biosdisk.h with grub/util/biosdisk.h. 2007-05-16 Robert Millan * include/grub/i386/pc/util/biosdisk.h: Moved to ... * include/grub/util/biosdisk.h: ... here. * util/i386/pc/biosdisk.c: Moved to ... * util/biosdisk.c: ... here. * util/i386/pc/getroot.c: Moved to ... * util/getroot.c: ... here. * util/i386/pc/grub-mkdevicemap.c: Moved to ... * util/grub-mkdevicemap.c: ... here. * util/i386/pc/grub-probe.c: Moved to ... * util/grub-probe.c: ... here. 2007-05-15 Robert Millan * util/update-grub.in: Remove duplicated line in grub.cfg header message. 2007-05-13 Robert Millan * util/update-grub.in: Fix a few assumptions about the devices holding /, /boot and /boot/grub being the same. * util/grub.d/00_header.in: Likewise. * util/grub.d/10_hurd.in: Likewise. * util/grub.d/10_linux.in: Likewise. * util/grub.d/10_linux.in: Implement Linux image sorting with arbitrary patterns. Use that to define the `.old' suffix as older than `'. * util/grub.d/00_header.in: Set default gfxmode to `800x600x16'. * util/update-grub.in: Add a reference to ${sysconfdir}/default/grub in the grub.cfg header message. 2007-05-11 Robert Millan * util/update-grub.in: Create device.map if it doesn't already exist, before attempting to run grub-probe. Check for grub-probe and grub-mkdevicemap with the same code grub-install is using. Remove test mode. 2007-05-09 Jeroen Dekkers * Makefile.in: Add the datarootdir autoconf variable. 2007-05-09 Robert Millan * util/i386/pc/grub-probe.c (probe): When detecting partition map, fail gracefully if dev->disk->partition == NULL. 2007-05-07 Robert Millan * util/i386/pc/grub-probe.c: Add `grub-probe -t partmap' parameter to determine partition map module. * util/i386/pc/grub-install.in: Use this feature to decide which partition module to load, instead of hardcoding pc and gpt. 2007-05-07 Robert Millan * Makefile.in: Fix assumption that $(srcdir) has a trailing slash when source directory differs from build directory. 2007-05-05 Robert Millan * util/powerpc/ieee1275/grub-install.in: Fix syntax error in pkglibdir initialisation. 2007-05-05 Robert Millan * util/update-grub.in: Create ${grub_prefix} if it doesn't exist. 2007-05-05 Robert Millan * util/grub.d/10_linux.in: Allow the administrator to insert Linux command-line arguments via ${GRUB_CMDLINE_LINUX}. 2007-05-05 Robert Millan * conf/i386-pc.rmk (grub_setup_SOURCES): Add partmap/gpt.c. (grub_probe_SOURCES): Likewise. * util/i386/pc/biosdisk.c (grub_util_biosdisk_get_grub_dev): Detect GPT and initialize dos_part and bsd_part accordingly. * util/i386/pc/grub-setup.c (setup): Ditto for install_dos_part and install_bsd_part. (main): Activate gpt module for use during partition identification, and deactivate it afterwards. * util/i386/pc/grub-install.in: Add gpt module to core.img. * util/i386/pc/grub-probe.c (main): Activate gpt module for use during partition identification, and deactivate it afterwards. 2007-05-05 Robert Millan * term/i386/pc/console.c (grub_console_fini): Call grub_term_set_current() before grub_term_unregister(). 2007-05-04 Robert Millan * DISTLIST: Add util/update-grub.in, util/grub.d/00_header.in, util/grub.d/10_hurd.in, util/grub.d/10_linux.in and util/grub.d/README. * Makefile.in: Build update-grub_SCRIPTS. Install update-grub_SCRIPTS and update-grub_DATA. * conf/common.rmk: Build and install update-grub components. * conf/common.mk: Regenerate. * util/update-grub.in: New. Core of update-grub. * util/grub.d/00_header.in: New. Generates grub.cfg header. * util/grub.d/10_hurd.in: New. Generates boot entries for the Hurd. * util/grub.d/10_linux.in: New. Generates boot entries for Linux. * util/grub.d/README: New. Document grub.d directory layout. 2007-05-01 Robert Millan * util/grub-emu.c: Move initialization functions grub_util_biosdisk_init() and grub_init_all() before grub_util_biosdisk_get_grub_dev(), which relies on them. 2007-04-19 Robert Millan * util/powerpc/ieee1275/grub-install.in: Initialize ${bindir}, since it is used later. 2007-04-18 Jerone Young * kernel/elf.c: Add missing parenthesis for conditional statement stanza. 2007-04-10 Jerone Young * util/i386/pc/getroot.c: Update so that if root device is /dev/root , continue on and look for device node with real device name. 2007-04-10 Jerone Young * configure.ac: Add argument for autoconf to use transformation ability. * Makefile.in: Add autoconf package transformation code. * util/i386/pc/grub-install.in: Likewise. * util/powerpc/ieee1275/grub-install.in: Likewise. 2007-03-19 Yoshinori K. Okuji * fs/ext2.c (EXT2_GOOD_OLD_REVISION): New macro. (EXT2_GOOD_OLD_INODE_SIZE): Likewise. (EXT2_REVISION): Likewise. (EXT2_INODE_SIZE): Likewise. (struct grub_ext2_block_group): Added a missing member "used_dirs". (grub_ext2_read_inode): Divide by the inode size in a superblock instead of 128 to obtain INODES_PER_BLOCK. Use the macro EXT2_INODE_SIZE instead of directly using SBLOCK->INODE_SIZE. 2007-03-18 Yoshinori K. Okuji * fs/ext2.c (grub_ext2_read_inode): Use the inode size in a superblock instead of the structure size to compute an offset. This fixes the problem that GRUB could not read a filesystem when inode size is different from 128-byte. 2007-03-05 Marco Gerards * normal/main.c (read_config_file): When "menu" is not set, create an initial context. 2007-02-21 Hollis Blanchard * kern/powerpc/ieee1275/init.c (HEAP_SIZE): Removed. (HEAP_LIMIT): New macro. (grub_claim_heap): Claim memory up to `heaplimit'. 2007-02-21 Hollis Blanchard * conf/powerpc-ieee1275.rmk (kernel_elf_LDFLAGS): Link at 64KB. * kern/powerpc/ieee1275/init.c (_end): Add declaration. (_start): Likewise. (grub_arch_modules_addr): Return address after `_end'. * util/powerpc/ieee1275/grub-mkimage.c: Include grub/misc.h. (load_modules): Use new parameter as `p_paddr' and `p_vaddr'. (add_segments): Calculate `_end' from phdr size and location. (ALIGN_UP): Moved to ... * include/grub/misc.h: here. * include/grub/powerpc/ieee1275/kernel.h (GRUB_IEEE1275_MOD_ALIGN): New macro. (GRUB_IEEE1275_MODULE_BASE): Removed. 2007-02-20 Hollis Blanchard * kern/powerpc/ieee1275/openfw.c (grub_available_iterate): Correct loop boundary. 2007-02-20 Hollis Blanchard * include/grub/elfload.h (grub_elf32_load_hook_t): Return grub_err_t. All users updated. (grub_elf64_load_hook_t): Likewise. * kern/elf.c: Call `grub_error_push' before `grub_error'. Improve debug output. 2007-02-20 Hollis Blanchard * kern/mm.c: Update copyright. (grub_mm_debug): Correct syntax error. (grub_mm_dump_free): New function. (grub_debug_free): Call `grub_free'. * include/grub/mm.h: Update copyright. (grub_mm_dump_free): Add declaration. 2007-02-12 Hollis Blanchard * include/grub/ieee1275/ieee1275.h: Update copyright. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * loader/powerpc/ieee1275/linux.c: Likewise. * include/grub/elfload.h: Likewise. * kern/elf.c: Likewise. (grub_elf32_load): Pass `base' and `size' parameters. Update all callers. (grub_elf64_load): Likewise. (grub_elf32_load_segment): Move to a nested function. (grub_elf64_load_segment): Likewise. 2007-02-12 Hollis Blanchard * include/grub/ieee1275/ieee1275.h (grub_available_iterate): New prototype. * kern/powerpc/ieee1275/init.c (grub_heap_start): Removed. (grub_heap_len): Likewise. (HEAP_SIZE): New macro. (grub_claim_heap): New function. (grub_machine_init): Don't claim heap directly. Call `grub_claim_heap'. * kern/powerpc/ieee1275/openfw.c: Include alloca.h. (grub_available_iterate): New function. 2007-02-03 Thomas Schwinge * aclocal.m4 (grub_CHECK_STACK_PROTECTOR): New definition. * configure.ac: Use it for testing the HOST and TARGET compilers. 2006-12-13 Thomas Schwinge * Makefile.in (enable_grub_emu): New variable. * configure.ac (--enable-grub-emu): New option. Do the checks for (n)curses only if `--enable-grub-emu' is requested. * conf/i386-efi.rmk (sbin_UTILITIES): Add `grub-emu' only if requested. * conf/i386-pc.rmk: Likewise. * conf/powerpc-ieee1275.rmk: Likewise. * conf/sparc64-ieee1275.rmk (bin_UTILITIES): Likewise. 2006-12-12 Marco Gerards * include/grub/err.h (grub_err_t): Add `GRUB_ERR_MENU'. * kern/env.c (grub_env_unset): Don't free the member `value' when the type is GRUB_ENV_VAR_DATA, in this case it's a user defined pointer. * normal/main.c (current_menu): Removed. (free_menu): Unset the `menu' environment variable. (grub_normal_menu_addentry): Make use of the environment variable `menu', instead of using the global `current_menu'. Allocate memory for the sourcecode of this entry. (read_config_file): New argument `nested', changed all callers. Only in the case of a new context, initialize a new menu. Set the `menu' environment variable. (grub_normal_execute): Don't set and unset the environment variable `menu' here anymore. Only free the menu when leaving the context. * util/i386/pc/biosdisk.c (linux_find_partition): Fixed a memory leak. 2006-12-11 Marco Gerards * normal/menu_entry.c (run): Fix off by one bug so the last line is executed. Move the loader check to outside the loop. 2006-12-08 Hollis Blanchard * kern/powerpc/ieee1275/cmain.c (cmain): Mark r3 and r4 as `UNUSED'. 2006-11-25 Yoshinori K. Okuji * util/i386/pc/grub-mkimage.c (generate_image): Fix the offset of the number of sectors. Reported by Andrey Shuvikov . 2006-11-11 Jeroen Dekkers * kern/disk.c (grub_disk_read): When there is a read error, always try to read only the necessary data. * conf/i386-pc.rmk (grub_probe_SOURCES): Add disk/lvm.c and disk/raid.c. * include/grub/disk.h [GRUB_UTIL] (grub_raid_init): New prototype. [GRUB_UTIL] (grub_raid_fini): Likewise. [GRUB_UTIL] (grub_lvm_init): Likewise. [GRUB_UTIL] (grub_lvm_fini): Likewise. * util/i386/pc/grub-probe.c (probe): Check whether DEVICE_NAME is RAID device and copy DEVICE_NAME to DRIVE_NAME in that case. (main): Call grub_raid_init(), grub_lvm_init(), grub_lvm_fini() and grub_raid_fini(). 2006-11-09 Jeroen Dekkers * include/grub/types.h (__unused): Rename to UNUSED. * kern/elf.c (grub_elf32_size): Use UNUSED instead of __unused. (grub_elf64_size): Likewise. 2006-11-03 Hollis Blanchard * kern/elf.c (grub_elf_file): Call grub_file_seek. Call grub_error_push and grub_error_pop in the error-handling path. (grub_elf32_load_segment): Only call grub_file_read with non-zero length. 2006-11-03 Hollis Blanchard * conf/i386-efi.rmk (grub_emu_SOURCES): Add kern/elf.c. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. (kernel_elf_SOURCES): Likewise. * conf/i386-efi.rmk (kernel_mod_HEADERS): Add elfload.h and cache.h. * conf/i386-pc.rmk (kernel_mod_HEADERS): Likewise. * conf/powerpc-ieee1275.rmk (kernel_elf_HEADERS): Likewise. * conf/sparc64-ieee1275.rmk (kernel_elf_HEADERS): Likewise. * conf/common.rmk (pkgdata_MODULES): Add elf.mod. (elf_mod_SOURCES): New variable. (elf_mod_CFLAGS): Likewise. (elf_mod_LDFLAGS): Likewise. * include/grub/types.h (__unused): New macro. * include/grub/elfload.h: New file. * kern/elf.c: Likewise. * loader/powerpc/ieee1275/linux.c: Include elfload.h. (ELF32_LOADMASK): New macro. (ELF64_LOADMASK): Likewise. (vmlinux): Removed. (grub_linux_load32): New function. (grub_linux_load64): Likewise. (grub_rescue_cmd_linux): Call grub_linux_load32 or grub_linux_load64. Use grub_elf_t instead of grub_file_t. 2006-11-02 Hollis Blanchard * kern/ieee1275/ieee1275.c (grub_ieee1275_set_color): Add `catch_result' to struct set_color_args. 2006-10-28 Yoshinori K. Okuji * normal/menu.c: Include grub/script.h. * normal/menu_entry.c: Likewise. * include/grub/normal.h: Do not include grub/script.h. 2006-10-27 Hollis Blanchard * kern/disk.c (grub_disk_read): Correct debug printf formatting. 2006-10-27 Hollis Blanchard * kern/disk.c (grub_disk_open): Print debug messages when opening a disk. (grub_disk_close): Print debug messages when closing a disk. (grub_disk_read): Print debug messages when disk read fails. * kern/fs.c (grub_fs_probe): Print debug messages when detecting filesystem type. * kern/partition.c: Include misc.h. (grub_partition_iterate): Print debug messages when detecting partition type. 2006-10-27 Hollis Blanchard * disk/ieee1275/ofdisk.c (grub_ofdisk_read): Return error if `status' is negative. * kern/ieee1275/ieee1275.c (IEEE1275_IHANDLE_INVALID): Change to 0. 2006-10-26 Hollis Blanchard * kern/powerpc/ieee1275/openfw.c (grub_ieee1275_encode_devname): Reverse GRUB_IEEE1275_FLAG_0_BASED_PARTITIONS test. 2006-10-25 Jeroen Dekkers * disk/lvm.c (grub_lvm_scan_device): Malloc sizeof(*lv) bytes instead of sizeof(lv). Patch by Michael Guntsche. 2006-10-18 Jeroen Dekkers * disk/lvm.c: Rename VGS to VG_LIST. (grub_lvm_iterate): Change VGS->LV to VG-LV. (grub_lvm_open): Likewise. Thanks to Michael Guntsche for finding this bug. 2006-10-15 Yoshinori K. Okuji * configure.ac (AC_INIT): Bumped to 1.95. 2006-10-14 Robert Millan * util/i386/pc/getroot.c (grub_guess_root_device): Don't compare os_dev with "/dev/.static/dev/md". 2006-10-14 Yoshinori K. Okuji * util/i386/pc/grub-probe.c (probe): Print DEVICE_NAME instead of DRIVE_NAME when grub_util_biosdisk_get_grub_dev fails. Open DRIVE_NAME instead of DEVICE_NAME. Make sure that DEVICE_NAME and DRIVE_NAME are always freed. * util/i386/pc/biosdisk.c (make_device_name): Add one into DOS_PART, as a DOS partition is counted from one instead of zero now. Reported by Robert Millan. 2006-10-14 Robert Millan * util/i386/pc/getroot.c (grub_guess_root_device): Stop using grub_util_biosdisk_get_grub_dev to convert system device to GRUB device. * util/grub-emu.c (main): Use grub_util_biosdisk_get_grub_dev with the string returned by grub_guess_root_device. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/grub-probefs.c: Likewise. * util/i386/pc/grub-probefs.c: Rename to ... * util/i386/pc/grub-probe.c: ... this. * DISTLIST: Remove grub-probefs, add grub-probe. * conf/i386-efi.rmk: Likewise. * conf/i386-pc.rmk: Likewise. * util/i386/pc/grub-install.in: Likewise. * util/i386/pc/grub-probe.c: Add --target=(fs|device|drive) option to choose which information we want to print. 2006-10-14 Yoshinori K. Okuji * DISTLIST: Added commands/echo.c, disk/lvm.c, disk/raid.c, include/grub/bitmap.h, include/grub/lvm.h, include/grub/raid.h, include/grub/i386/pc/vbeutil.h, include/grub/util/lvm.h, include/grub/util/raid.h, util/lvm.c, util/raid.c, video/bitmap.c, video/readers/tga.c and video/i386/pc/vbeutil.c. 2006-10-14 Jeroen Dekkers Added support for RAID and LVM. * disk/lvm.c: New file. * disk/raid.c: Likewise. * include/grub/lvm.h: Likewise. * include/grub/raid.h: Likewise. * include/grub/util/lvm.h: Likewise. * include/grub/util/raid.h: Likewise. * util/lvm.c: Likewise. * util/raid.c: Likewise. * include/grub/disk.h (grub_disk_dev_id): Add GRUB_DISK_DEVICE_RAID_ID and GRUB_DISK_DEVICE_LVM_ID. (grub_disk_get_size): New prototype. * kern/disk.c (grub_disk_open): Check whether grub_partition_probe() returns a partition. (grub_disk_get_size): New function. * kern/i386/pc/init.c (make_install_device): Copy the prefix verbatim if grub_install_dos_part is -2. * util/i386/pc/getroot.c (grub_guess_root_device): Support RAID and LVM devices. * util/i386/pc/grub-setup.c (setup): New argument MUST_EMBED. Force embedding of GRUB when the argument is true. Close FILE before returning. (main): Add support for RAID and LVM. * conf/common.rmk: Add RAID and LVM modules. * conf/i386-pc.rmk (grub_setup_SOURCES): Add util/raid.c and util/lvm.c. (grub_emu_SOURCES): Add disk/raid.c and disk/lvm.c. * kern/misc.c (grub_strstr): New function. * include/grub/misc.h (grub_strstr): New prototype. 2006-10-10 Tristan Gingold * include/grub/efi/api.h (GRUB_EFI_ERROR_CODE): Long constant. 2006-10-05 Tristan Gingold * kern/misc.c (grub_strtoull): Guess the base only if not specified. 2006-10-01 Hollis Blanchard * kern/powerpc/ieee1275/cmain.c (cmain): Remove incomplete Old World PowerMac support. 2006-10-01 Hollis Blanchard * disk/ieee1275/ofdisk.c (grub_ofdisk_iterate): Cast `size' to long. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_next_property): Remove `flags' argument. All callers changed. * kern/ieee1275/ieee1275.c (IEEE1275_PHANDLE_ROOT): Removed. (IEEE1275_IHANDLE_INVALID): New variable. (IEEE1275_CELL_INVALID): New variable. (grub_ieee1275_finddevice, grub_ieee1275_get_property, grub_ieee1275_get_property_length, grub_ieee1275_instance_to_package, grub_ieee1275_package_to_path, grub_ieee1275_instance_to_path, grub_ieee1275_peer, grub_ieee1275_child, grub_ieee1275_open, grub_ieee1275_claim, grub_ieee1275_set_property): Error-check return codes from Open Firmware. All callers updated. (grub_ieee1275_next_property): Directly return Open Firmware return code. * kern/powerpc/ieee1275/cmain.c (grub_ieee1275_find_options): Standardize error checking from `grub_ieee1275_get_property'. * kern/powerpc/ieee1275/openfw.c (grub_devalias_iterate): Rename `devalias' to `aliases'. Correct comments. Consolidate error paths. 2006-10-01 Hollis Blanchard * kern/ieee1275/ieee1275.c (grub_ieee1275_instance_to_path): Rename `instance_to_package_args' to `instance_to_path_args'. * kern/powerpc/ieee1275/init.c (grub_machine_init): Use `grub_ieee1275_chosen'. * term/ieee1275/ofconsole.c (grub_ofconsole_init): Call `grub_ieee1275_interpret'. 2006-09-25 Hollis Blanchard * util/powerpc/ieee1275/grub-mkimage.c: Include config.h. 2006-09-25 Hollis Blanchard * include/grub/powerpc/libgcc.h (__floatdisf): New prototype. (__cmpdi): Likewise. * kern/powerpc/ieee1275/openfw.c (grub_devalias_iterate): Pass 0 as `flags' to `grub_ieee1275_next_property'. Change `pathlen' to type `grub_ssize_t'. * kern/powerpc/ieee1275/cmain.c: Include grub/misc.h. * loader/powerpc/ieee1275/linux.c (grub_linux_boot): Change `actual' to type `grub_ssize_t'. (grub_rescue_cmd_linux): Cast -1 to `grub_off_t'. 2006-09-22 Marco Gerards * normal/script.c (grub_script_create_cmdmenu): Skip leading newlines. 2006-09-22 Marco Gerards * commands/echo.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `commands/echo.c'. * conf/common.rmk (echo_mod_SOURCES): New variable. (echo_mod_CFLAGS): Likewise. (echo_mod_LDFLAGS): Likewise. 2006-09-22 Marco Gerards * normal/main.c (get_line): Malloc memory instead of using preallocated memory. Removed the arguments `cmdline' and `max_len'. Updated all callers. 2006-09-22 Marco Gerards * conf/i386-efi.rmk (grub_emu_DEPENDENCIES): New variable. (normal_mod_DEPENDENCIES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_DEPENDENCIES): Likewise. (normal_mod_DEPENDENCIES): Likewise. * conf/sparc64-ieee1275.rmk (normal_mod_DEPENDENCIES): Likewise. 2006-09-22 Johan Rydberg * genmk.rb: Add DEPENDENCIES variables to modules, utilities, and programs. * conf/i386-pc.rmk (grub_emu_DEPENDENCIES): Declare. (normal_mod_DEPENDENCIES): Likewise. * conf/i386-pc.mk: Regenerate. * conf/i386-efi.mk: Likewise * conf/common.mk: Likewise. * conf/powerpc-ieee1275.mk: Likewise. * conf/sparc64-ieee1275.mk: Likewise. 2006-09-22 Robert Millan Sync with i386 version. * conf/powerpc-ieee1275.rmk (bin_UTILITIES): Remove grub-emu, add grub-mkimage. * conf/powerpc-ieee1275.rmk (sbin_UTILITIES): Remove grub-mkimage, add grub-emu. 2006-09-21 Robert Millan Import from GRUB Legacy (lib/device.c): * util/i386/pc/grub-mkdevicemap.c (get_i2o_disk_name): New function. (init_device_map) [__linux__]: Add support for I2O devices. 2006-09-14 Marco Gerards * conf/i386-pc.rmk (COMMON_LDFLAGS): Use `-m32' instead of `-melf_i386'. 2006-09-14 Robert Millan * util/i386/pc/grub-install.in: Skip menu.lst when removing /boot/grub/*.lst. * util/i386/pc/getroot.c: Don't recurse into dotdirs (e.g. ".static"). * util/i386/pc/grub-mkdevicemap.c: Make sure the floppy device exists before adding it to device.map. 2006-08-15 Johan Rydberg * genmk.rb: Let GCC generate dependencies the first time it compiles a file; using the -MD option. * conf/common.mk: Regenerate. * conf/i386-pc.mk: Likewise. * conf/i386-efi.mk: Likewise. * conf/powerpc-ieee1275.mk: Likewise. * conf/sparc64-ieee1275.mk: Likewise. 2006-08-04 Yoshinori K. Okuji Move the prototypes of grub_setjmp and grub_longjmp to cpu/setjmp.h, so that each architecture may specify different attributes. * include/grub/i386/setjmp.h (grub_setjmp): New prototype. (grub_longjmp): Likewise. * include/grub/powerpc/setjmp.h (grub_setjmp): Likewise.. (grub_longjmp): Likewise. * include/grub/sparc64/setjmp.h (grub_setjmp): Likewise.. (grub_longjmp): Likewise. * include/grub/setjmp.h [!GRUB_UTIL] (grub_setjmp): Removed. [!GRUB_UTIL] (grub_longjmp): Removed. 2006-08-01 Pelletier Vincent * kern/ieee1275/ieee1275.c (grub_ieee1275_set_color): IEEE1275 "color!" method does not return any value. 2006-07-29 Vesa Jaaskelainen * include/grub/bitmap.h: New file. * include/grub/i386/pc/vbeutil.h: Likewise. * video/bitmap.c: Likewise. * video/readers/tga.c: Likewise. * video/i386/pc/vbeutil.c: Likewise. * commands/videotest.c: Code cleanup and updated to reflect to new video API. * term/gfxterm.c: Likewise. * video/video.c: Likewise. * conf/i386-pc.rmk (pkgdata_MODULES): Added tga.mod and bitmap.mod. (vbe_mod_SOURCES): Added video/i386/pc/vbeutil.c. (bitmap_mod_SOURCES): New entry. (bitmap_mod_CFLAGS): Likewise. (bitmap_mod_LDFLAGS): Likewise. (tga_mod_SOURCES): Likewise. (tga_mod_CFLAGS): Likewise. (tga_mod_LDFLAGS): Likewise. * include/grub/video.h (grub_video_blit_operators): New enum type. (grub_video_render_target): Changed as forward declaration and moved actual definition to be video driver specific. (grub_video_adapter.blit_bitmap): Added blitting operator. (grub_video_adapter.blit_render_target): Likewise. (grub_video_blit_bitmap): Likewise. (grub_video_blit_render_target): Likewise. * include/grub/i386/pc/vbe.h (grub_video_render_target): Added driver specific render target definition. (grub_video_vbe_map_rgba): Added driver internal helper. (grub_video_vbe_unmap_color): Updated to use grub_video_i386_vbeblit_info. (grub_video_vbe_get_video_ptr): Likewise. * include/grub/i386/pc/vbeblit.h (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8A8): Updated to use grub_video_i386_vbeblit_info. (grub_video_i386_vbeblit_R8G8B8_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8A8): Likewise. (grub_video_i386_vbeblit_R8G8B8A8_R8G8B8): Likewise. (grub_video_i386_vbeblit_R8G8B8_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8): Likewise. (grub_video_i386_vbeblit_index_index): Likewise. (grub_video_i386_vbeblit_R8G8B8X8_R8G8B8X8): New blitter function. (grub_video_i386_vbeblit_R8G8B8_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_index_R8G8B8X8): Likewise. (grub_video_i386_vbeblit_blend): Added generic blitter for blend operator. (grub_video_i386_vbeblit_replace): Added generic blitter for replace operator. * video/i386/pc/vbeblit.c: Updated to reflect changes on include/grub/i386/pc/vbeblit.h. * include/grub/i386/pc/vbefill.h (grub_video_i386_vbefill_R8G8B8A8): Updated to use grub_video_i386_vbeblit_info. (grub_video_i386_vbefill_R8G8B8): Likewise. (grub_video_i386_vbefill_index): Likewise. (grub_video_i386_vbefill): Added generic filler. * video/i386/pc/vbefill.c: Updated to reflect changes on include/grub/i386/pc/vbefill.h. * video/i386/pc/vbe.c (grub_video_vbe_get_video_ptr): Updated to use grub_video_i386_vbeblit_info. (grub_video_vbe_unmap_color): Likewise. (grub_video_vbe_blit_glyph): Likewise. (grub_video_vbe_scroll): Likewise. (grub_video_vbe_draw_pixel): Removed function. (grub_video_vbe_get_pixel): Likewise. (grub_video_vbe_fill_rect): Moved all blitters to vbefill.c and updated code to use it. (common_blitter): Added common blitter for render target and bitmap. (grub_video_vbe_blit_bitmap): Updated to use common_blitter. (grub_video_vbe_blit_render_target): Likewise. 2006-07-30 Johan Rydberg * kern/efi/efi.c (grub_efi_set_text_mode): Assume console already is in text mode if there is no console control protocol instance available. 2006-07-29 Vesa Jaaskelainen * include/grub/video.h: Code cleanup. * include/grub/i386/pc/vbe.h: Likewise. * video/i386/pc/vbe.c: Likewise. * video/i386/pc/vbeblit.c: Likewise. * video/i386/pc/vbefill.c: Likewise. * video/video.c: Likewise. Also added more comments. 2006-07-29 Vesa Jaaskelainen * disk/i386/pc/biosdisk.c (struct grub_biosdisk_drp): Moved to ... (struct grub_biosdisk_dap): Likewise. * include/grub/i386/pc/biosdisk.h: ... to here. Also corrected linkage settings for all functions. 2006-07-12 Marco Gerards * configure.ac (--enable-mm-debug): Fix typo. * genkernsyms.sh.in: Use proper quoting for `CC'. 2006-07-02 Jeroen Dekkers * conf/i386-pc.rmk (COMMON_ASFLAGS): Add "-m32". (normal_mod_ASFLAGS): Remove "-m32". 2006-06-14 Yoshinori K. Okuji * util/misc.c: Include config.h. [!HAVE_MEMALIGN]: Do not include malloc.h. (grub_memalign): Use posix_memalign, if present. Then, use memalign, if present. Otherwise, emit an error. * util/grub-emu.c: Do not include malloc.h. * include/grub/util/misc.h: Include unistd.h. This is required for FreeBSD, because off_t is defined in unistd.h. Reported by Harley D. Eades III . * configure.ac (AC_GNU_SOURCE): Added. (AC_CHECK_FUNCS): Check posix_memalign and memalign for the host type. 2006-06-09 Yoshinori K. Okuji * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Make sure that ADDR_MAX does not exceed GRUB_LINUX_INITRD_MAX_ADDRESS. 2006-06-07 Jeroen Dekkers * include/grub/types.h (grub_host_addr_t): Rename to grub_target_addr_t. (grub_host_off_t): Rename to grub_target_off_t. (grub_host_size_t): Rename to grub_target_size_t. (grub_host_ssize_t): Rename to grub_target_ssize_t. Refer to GRUB_TARGET_SIZEOF_VOID_P to define those variables. * include/grub/kernel.h (struct grub_module_header): Change type of OFFSET to grub_target_off_t and type of SIZE to grub_target_size_t. (grub_module_info): Likewise. 2006-06-05 Yoshinori K. Okuji * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): The conditional of checking LINUX_MEM_SIZE was reverse. Reported by Jesus Velazquez . 2006-06-05 Yoshinori K. Okuji Count partitions from 1 instead of 0 in the string representation of partitions. Still use 0-based internally. * partmap/sun.c (grub_sun_is_valid): A cosmetic change. (sun_partition_map_iterate): Use grub_partition_t instead of struct grub_partition *. Cast DESC->START_CYLINDER to grub_uint64_t after converting the endian. (sun_partition_map_probe): Subtract 1 for PARTNUM. (sun_partition_map_get_name): Add 1 to P->INDEX. * partmap/pc.c (grub_partition_parse): Subtract 1 for PCDATA->DOS_PART. (pc_partition_map_get_name): Add 1 into PCDATA->DOS_PART. * partmap/gpt.c (gpt_partition_map_iterate): Initialize PARTNO to zero instead of one. (gpt_partition_map_probe): Subtract 1 for PARTNUM. (gpt_partition_map_get_name): Add 1 into P->INDEX. * partmap/apple.c (apple_partition_map_iterate): Change the type of POS to unsigned. (apple_partition_map_probe): Subtract 1 for PARTNUM. (apple_partition_map_get_name): Add 1 into P->INDEX. * partmap/amiga.c (amiga_partition_map_iterate): Change the type of POS to unsigned. (amiga_partition_map_iterate): Cast NEXT to grub_off_t to calculate the offset of a partition. (amiga_partition_map_probe): Subtract 1 for PARTNUM. (amiga_partition_map_get_name): Add 1 into P->INDEX. * partmap/acorn.c (acorn_partition_map_find): Change the type of SECTOR to grub_disk_addr_t. (acorn_partition_map_iterate): Likewise. (acorn_partition_map_probe): Subtract 1 for PARTNUM. Change the type of SECTOR to grub_disk_addr_t. Declare P on the top. (acorn_partition_map_get_name): Add 1 into P->INDEX. * kern/i386/pc/init.c (make_install_device): Add 1 into GRUB_INSTALL_DOS_PART. * fs/iso9660.c (grub_iso9660_mount): Fixed a reversed conditional. 2006-06-04 Yoshinori K. Okuji Clean up the code to support 64-bit addressing in disks and files. This change is not enough for filesystems yet. * util/i386/pc/grub-setup.c (struct boot_blocklist): Change the type of "start" to grub_uint64_t. (setup): Change the types of KERNEL_SECTOR and FIRST_SECTOR to grub_disk_addr_t * and grub_disk_addr_t. Fix the format string in save_first_sector and save_blocklists. Use grub_le_to_cpu64 to convert addresses. * util/i386/pc/biosdisk.c (open_device): Change the type of SECTOR to grub_disk_addr_t. * partmap/gpt.c (gpt_partition_map_iterate): Fix the format string. * partmap/pc.c (pc_partition_map_iterate): Likewise. * partmap/amiga.c (amiga_partition_map_iterate): Cast RDSK.MAGIC to char *. * normal/script.c (grub_script_parse): Remove unused MEMFREE. * normal/parser.y (YYLTYPE_IS_TRIVIAL): New macro. * normal/lexer.c (grub_script_yyerror): Specify unused to LEX. * loader/i386/pc/multiboot.c (grub_multiboot_load_elf64): Cast -1 to grub_off_t, to detect an error from grub_file_seek. (grub_multiboot_load_elf32): Likewise. * kern/misc.c (grub_strtoul): Use grub_strtoull. Return the maximum unsigned long value when an overflow is detected. (grub_strtoull): New function. (grub_divmod64): Likewise. (grub_lltoa): use grub_divmod64. * kern/fs.c (struct grub_fs_block): Change the type of "offset" to grub_disk_addr_t. (grub_fs_blocklist_open): Increase P if P is not NULL to advance the pointer to next character. Use grub_strtoull instead of grub_strtoul. (grub_fs_blocklist_read): Change the types of SECTOR, OFFSET and SIZE to grub_disk_addr_t, grub_off_t and grub_size_t, respectively. * kern/file.c (grub_file_read): Prevent an overflow of LEN, as the return value is signed. (grub_file_seek): Change the type of OLD to grub_off_t. Do not test if OFFSET is less than zero, as OFFSET is unsigned now. * kern/disk.c (struct grub_disk_cache): Change the type of "sector" to grub_disk_addr_t. (grub_disk_cache_get_index): Change the type of SECTOR to grub_disk_addr_t. Calculate the hash with SECTOR casted to unsigned after shifting. (grub_disk_cache_invalidate): Change the type of SECTOR to grub_disk_addr_t. (grub_disk_cache_unlock): Likewise. (grub_disk_cache_store): Likewise. (grub_disk_check_range): Change the types of SECTOR, OFFSET, SIZE, START and LEN to grub_disk_addr_t *, grub_off_t *, grub_size_t, grub_disk_addr_t and grub_uint64_t, respectively. (grub_disk_read): Use an unsigned variable REAL_OFFSET for the body, as the value of OFFSET is tweaked by grub_disk_check_range. Change the types of START_SECTOR, LEN and POS to grub_disk_addr_t, grub_size_t and grub_size_t, respectively. (grub_disk_write): Use an unsigned variable REAL_OFFSET for the body, as the value of OFFSET is tweaked by grub_disk_check_range. Change the types of LEN and N to grub_size_t. * io/gzio.c (struct grub_gzio): Change the types of "data_offset" and "saved_offset" to grub_off_t. (test_header): Cast BUF to char *. (get_byte): Cast GZIO->DATA_OFFSET to grub_off_t. Cast GZIO->INBUF to char *. (grub_gzio_read): Change the types of OFFSET and SIZE to grub_off_t and grub_size_t, respectively. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_FORCE_LBA): Removed. (GRUB_BOOT_MACHINE_BOOT_DRIVE): Changed to 0x4c. (GRUB_BOOT_MACHINE_KERNEL_ADDRESS): Changed to 0x40. (GRUB_BOOT_MACHINE_KERNEL_SEGMENT): Changed to 0x42. (GRUB_BOOT_MACHINE_DRIVE_CHECK): Changed to 0x4e. (GRUB_BOOT_MACHINE_LIST_SIZE): Increased to 12. * include/grub/types.h (grub_off_t): Unconditionally set to grub_uint64_t. (grub_disk_addr_t): Changed to grub_uint64_t. * include/grub/partition.h (struct grub_partition): Change the types of "start", "len" and "offset" to grub_disk_addr_t, grub_uint64_t and grub_disk_addr_t, respectively. (grub_partition_get_start): Return grub_disk_addr_t. (grub_partition_get_len): Return grub_uint64_t. * include/grub/misc.h (grub_strtoull): New prototype. (grub_divmod64): Likewise. * include/grub/fshelp.h (grub_fshelp_read_file): Change the types of SECTOR, LEN and FILESIZE to grub_disk_addr_t, grub_size_t and grub_off_t, respectively. All callers and references changed. * include/grub/fs.h (struct grub_fs): Change the type of LEN to grub_size_t in "read". All callers and references changed. * include/grub/file.h (struct grub_file): Change the types of "offset" and "size" to grub_off_t and grub_off_t, respectively. Change the type of SECTOR to grub_disk_addr_t in "read_hook". (grub_file_read): Change the type of LEN to grub_size_t. (grub_file_seek): Return grub_off_t. Change the type of OFFSET to grub_off_t. (grub_file_size): Return grub_off_t. (grub_file_tell): Likewise. All callers and references changed. * include/grub/disk.h (struct grub_disk_dev): Change the types of SECTOR and SIZE to grub_disk_addr_t and grub_size_t in "read" and "write". (struct grub_disk): Change the type of "total_sectors" to grub_uint64_t. Change the type of SECTOR to grub_disk_addr_t in "read_hook". (grub_disk_read): Change the types of SECTOR, OFFSET and SIZE to grub_disk_addr_t, grub_off_t and grub_size_t, respectively. (grub_disk_write): Likewise. All callers and references changed. * fs/iso9660.c (grub_iso9660_susp_iterate): Cast parameters to char * for grub_strncmp to silence gcc. (grub_iso9660_mount): Likewise. (grub_iso9660_mount): Likewise. (grub_iso9660_read_symlink): Likewise. Also, remove the nonsense return statement. (grub_iso9660_iterate_dir): Likewise. (grub_iso9660_label): Cast DATA->VOLDESC.VOLNAME to char *. * fs/hfs.c (grub_hfs_read_file): Change the types of SECTOR and LEN to grub_disk_addr_t and grub_size_t, respectively. * fs/hfsplus.c (grub_hfsplus_read_file): Likewise. * fs/jfs.c (grub_jfs_read_file): Likewise. * fs/minix.c (grub_jfs_read_file): Likewise. * fs/sfs.c (grub_jfs_read_file): Likewise. * fs/ufs.c (grub_jfs_read_file): Likewise. * fs/xfs.c (grub_jfs_read_file): Likewise. * fs/fat.c (grub_fat_read_data): Change the types of SECTOR, LEN and SIZE to grub_disk_addr_t, grub_size_t and grub_size_t, respectively. * fs/ext2.c (grub_ext2_read_block): When an error happens, set BLKNR to -1 instead of returning GRUB_ERRNO. (grub_ext2_read_file): Change the types of SECTOR and LEN to grub_disk_addr_t and grub_size_t, respectively. * fs/affs.c (grub_affs_read_file): Change the types of SECTOR and LEN to grub_disk_addr_t and grub_size_t, respectively. * font/manager.c (grub_font_get_glyph): Cast BITMAP to char * for grub_file_read. * disk/ieee1275/ofdisk.c (grub_ofdisk_read): Fix the format string. Do not cast SECTOR explicitly. * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Change the type of TOTAL_SECTORS to grub_uint64_t. Do not mask DRP->TOTAL_SECTORS. (grub_biosdisk_rw): Change the types of SECTOR and SIZE to grub_disk_addr_t and grub_size_t, respectively. If the sector is over 2TB and LBA mode is not supported, raise an error. (get_safe_sectors): New function. (grub_biosdisk_read): Use get_safe_sectors. (grub_biosdisk_write): Likewise. * disk/efi/efidisk.c (grub_efidisk_read): Fix the format string. (grub_efidisk_write): Likewise. * disk/loopback.c (delete_loopback): Cosmetic changes. (grub_cmd_loopback): Likewise. Also, test NEWDEV->FILENAME correctly. (grub_loopback_open): Likewise. (grub_loopback_read): Likewise. Also, change the type of POS to grub_off_t, and fix the usage of grub_memset. * commands/i386/pc/play.c: Include grub/machine/time.h. * commands/ls.c (grub_ls_list_files): Use "llu" instead of "d" to print FILE->SIZE. * commands/configfile.c: Include grub/env.h. * commands/cmp.c (grub_cmd_cmp): Do not use ERR, but use GRUB_ERRNO directly instead. Change the type of POS to grub_off_t. Follow the coding standard. * commands/blocklist.c: Include grub/partition.h. (grub_cmd_blocklist): Return an error if the underlying device is not a disk. Take the starting sector of a partition into account, if a partition is used. * boot/i386/pc/diskboot.S (bootloop): Adapted to the new offset of a length field. (lba_mode): Support 64-bit addresses. (chs_mode): Likewise. (copy_buffer): Adapted to the new offsets of a length field and a segment field. (blocklist_default_start): Allocate 64-bit space. * boot/i386/pc/boot.S (force_lba): Removed. (boot_drive): Moved to under KERNEL_SECTOR. (kernel_sector): Moved to under KERNEL_SEGMENT. Allocate 64-bit space. (real_start): Set %si earlier. Remove code for FORCE_LBA, since it is useless. (lba_mode): Refactored to support a 64-bit address. More size optimization. (setup_sectors): Likewise. 2006-06-04 Yoshinori K. Okuji * DISTLIST: Added include/grub/i386/linux.h. Removed include/grub/i386/pc/linux.h * configure.ac (AC_INIT): Bumped to 1.94. * config.guess: Updated from gnulib. * config.sub: Likewise. * install-sh: Likewise. * mkinstalldirs: Likewise. 2006-06-02 Yoshinori K. Okuji * conf/common.rmk (grub_modules_init.lst): Depended on grub_emu_SOURCES, excluding grub_emu_init.c, instead of MODSRCFILES. * genmk.rb (PModule::rule): Reverted the previous change. 2006-06-02 Yoshinori K. Okuji * conf/common.rmk (grub_modules_init.lst): Depends on $(MODSRCFILES). Grep only the files in $(MODSRCFILES). Make sure that the target does not exist before producing. (grub_modules_init.h): Remove the target before generating. (grub_emu_init.c): Likewise. * genmk.rb (PModule::rule): Add source files into MODSRCFILES. 2006-05-31 Jeroen Dekkers * configure.ac: Don't set host_m32 for x86_64. Also reset LIBS for the target-specific tests. Make sure that we also have the up-to-date target variables for those tests. 2006-05-31 Yoshinori K. Okuji * genmk.rb (Image::rule): Prefix CFLAGS or ASFLAGS with TARGET_. (PModule::rule): Likewise. 2006-05-31 Yoshinori K. Okuji * genmk.rb (Image::rule): Set FLAG to CFLAGS or ASFLAGS instead of TARGET_CFLAGS or TARGET_ASFLAGS. There is no reason why target-specific flags should be prefixed. (PModule::rule): Likewise. 2006-05-30 Yoshinori K. Okuji * configure.ac (CMP): Check if cmp is available explicitly. 2006-05-29 Yoshinori K. Okuji * util/powerpc/ieee1275/grub-install.in (host_cpu): Removed. (target_cpu): New variable. (pkglibdir): Use target_cpu instead of host_cpu. * util/i386/pc/grub-install.in (host_cpu): Removed. (target_cpu): New variable. (pkglibdir): Use target_cpu instead of host_cpu. * util/genmoddep.c: Removed. * kern/efi/mm.c (filter_memory_map): Use GRUB_CPU_SIZEOF_VOID_P instead of GRUB_HOST_SIZEOF_VOID_P. * kern/dl.c: Likewise. * include/grub/i386/types.h (GRUB_HOST_SIZEOF_VOID_P): Renamed to ... (GRUB_TARGET_SIZEOF_VOID_P): ... this. (GRUB_HOST_SIZEOF_LONG): Renamed to ... (GRUB_TARGET_SIZEOF_LONG): ... this. (GRUB_HOST_WORDS_BIGENDIAN): Renamed to ... (GRUB_TARGET_WORDS_BIGENDIAN): ... this. * include/grub/powerpc/types.h (GRUB_HOST_SIZEOF_VOID_P): Renamed to ... (GRUB_TARGET_SIZEOF_VOID_P): ... this. (GRUB_HOST_SIZEOF_LONG): Renamed to ... (GRUB_TARGET_SIZEOF_LONG): ... this. (GRUB_HOST_WORDS_BIGENDIAN): Renamed to ... (GRUB_TARGET_WORDS_BIGENDIAN): ... this. * include/grub/sparc64/types.h (GRUB_HOST_SIZEOF_VOID_P): Renamed to ... (GRUB_TARGET_SIZEOF_VOID_P): ... this. (GRUB_HOST_SIZEOF_LONG): Renamed to ... (GRUB_TARGET_SIZEOF_LONG): ... this. (GRUB_HOST_WORDS_BIGENDIAN): Renamed to ... (GRUB_TARGET_WORDS_BIGENDIAN): ... this. * include/grub/types.h [!GRUB_UTIL] (GRUB_CPU_SIZEOF_VOID_P): Use GRUB_TARGET_SIZEOF_VOID_P instead of GRUB_HOST_SIZEOF_VOID_P. [!GRUB_UTIL] (GRUB_CPU_SIZEOF_LONG): Use GRUB_TARGET_SIZEOF_LONG instead of GRUB_HOST_SIZEOF_LONG. [!GRUB_UTIL]: Refer to GRUB_TARGET_WORDS_BIGENDIAN instead of GRUB_HOST_WORDS_BIGENDIAN to define or undefine GRUB_CPU_WORDS_BIGENDIAN. Refer to SIZEOF_VOID_P instead of GRUB_HOST_SIZEOF_VOID_P to define grub_host_addr_t, grub_host_off_t, grub_host_size_t and grub_host_ssize_t. * conf/i386-efi.rmk (noinst_UTILITIES): Removed. (genmoddep_SOURCES): Likewise. * conf/i386-pc.rmk (noinst_UTILITIES): Likewise. (genmoddep_SOURCES): Likewise. * conf/conf/powerpc-ieee1275.rmk (noinst_UTILITIES): Likewise. (genmoddep_SOURCES): Likewise. * conf/conf/conf/sparc64-ieee1275.rmk (noinst_UTILITIES): Likewise. (genmoddep_SOURCES): Likewise. * genmoddep.awk: New file. * genmk.rb (Image::rule): Use TARGET_CC, TARGET_CPPFLAGS, TARGET_CFLAGS, TARGET_ASFLAGS and TARGET_LDFLAGS instead of CC, CPPFLAGS, CFLAGS, ASFLAGS and LDFLAGS, respectively. (PModule::rule): Likewise. (Program::rule): Likewise. (Utility::rule): Use CC, CPPFLAGS, CFLAGS and LDFLAGS instead of BUILD_CC, BUILD_CPPFLAGS, BUILD_CFLAGS and BUILD_LDFLAGS, respectively. * configure.ac: Rewritten intensively to use host and target instead of build and host, respectively. * Makefile.in (pkglibdir): Use target_cpu instead of host_cpu. (host_cpu): Removed. (target_cpu): New variable. (CPPFLAGS): Added @CPPFLAGS@ and -DGRUB_LIBDIR=\"$(pkglibdir)\". (BUILD_CC): Removed. (BUILD_CFLAGS): Likewise. (BUILD_CPPFLAGS): Likewise. (TARGET_CC): New variable. (TARGET_CFLAGS): Likewise. (TARGET_CPPFLAGS): Likewise. (TARGET_LDFLAGS): Likewise. (AWK): Likewise. (include): Use target_cpu instead of host_cpu. (moddep.lst:): Use genmoddep.awk instead of genmoddep. * DISTLIST: Added genmoddep.awk. Removed util/genmoddep.c. 2006-05-29 Vesa Jaaskelainen * include/grub/script.h (grub_script_cmdif): Renamed field 'bool' to 'exec_to_evaluate'. Renamed field 'true' to 'exec_on_true'. Renamed field 'false' to 'exec_on_false'. (grub_script_create_cmdif): Renamed argument names to reflect above changes. * normal/execute.c (grub_script_execute_cmdif): Likewise. * normal/script.c (grub_script_create_cmdif): Likewise. 2006-05-28 Yoshinori K. Okuji * fs/hfsplus.c (grub_hfsplus_btree_recoffset): Moved to near the top. (grub_hfsplus_btree_recptr): Likewise. (grub_hfsplus_find_block): Do not take RETRY any longer. Use FILEBLOCK both to pass a block number and store next block number. (grub_hfsplus_read_block): Rewritten heavily to support an extent overflow file correctly. Specify errors appropriately, because fshelp expects that GRUB_ERRNO is set when fails. Reuse grub_hfsplus_btree_recptr to get the pointer to a found key. (grub_hfsplus_btree_search): Return 1 instead of 0 when no match is found. * conf/i386-efi.rmk (pkgdata_MODULES): Added _linux.mod and linux.mod. (_linux_mod_SOURCES): New variable. (_linux_mod_CFLAGS): Likewise. (_linux_mod_LDFLAGS): Likewise. (linux_mod_SOURCES): Likewise. (linux_mod_CFLAGS): Likewise. (linux_mod_LDFLAGS): Likewise. * DISTLIST: Added loader/i386/efi/linux.c, loader/i386/efi/linux_normal.c and include/grub/i386/efi/loader.h. * loader/i386/efi/linux.c: New file. * loader/i386/efi/linux_normal.c: Likewise. * include/grub/i386/efi/loader.h: Likewise. 2006-05-27 Yoshinori K. Okuji * commands/blocklist.c: New file. * DISTLIST: Added commands/blocklist.c. * term/efi/console.c (grub_console_highlight_color): Use a lighter color for the background, and a darker color for the foreground. (grub_console_checkkey): Return READ_KEY. (grub_console_cls): Set the background to GRUB_EFI_BACKGROUND_BLACK temporarily to clean out the screen. * kern/efi/efi.c (grub_efi_exit_boot_services): New function. * include/grub/i386/linux.h (struct linux_kernel_params): Fixed the size of "padding5", "hd0_drive_info" and "hd1_drive_info". * include/grub/efi/efi.h (grub_efi_exit_boot_services): New prototype. * include/grub/efi/api.h (GRUB_EFI_TEXT_ATTR): Do not shift BG. The spec is wrong again. * include/grub/normal.h [GRUB_UTIL] (grub_blocklist_init): New prototype. [GRUB_UTIL] (grub_blocklist_fini): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Added commands/blocklist.c. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * conf/common.rmk (pkgdata_MODULES): Added blocklist.mod. (blocklist_mod_SOURCES): New variable. (blocklist_mod_CFLAGS): Likewise. (blocklist_mod_LDFLAGS): Likewise. 2006-05-20 Yoshinori K. Okuji * boot/i386/pc/boot.S (real_start): Set %si earlier to eliminate duplication. (lba_mode): Use %eax more intensively to reduce the code size. 2006-05-20 Marco Gerards * normal/lexer.c (grub_script_yylex): Don't filter out newlines. * normal/parser.y (commandblock): Defined as . A subroutine for `menuentry'. (script): Accept leading newlines. (newlines): New rule to describe 0 or more newlines. (commands): Accept `command' with trailing newline. Fixed the order in which arguments were passed to `grub_script_add_cmd'. Accept commands separated by newlines. (function): Changed to accept newlines. (menuentry) Rewritten. * normal/script.c (grub_script_create_cmdmenu): Add new entries in front of the list, instead of to the end. 2006-05-19 Yoshinori K. Okuji * util/i386/pc/grub-install.in (bindir): New variable. (grub_mkimage): Use BINDIR instead of SBINDIR. Reported by Lee Shaver . 2006-05-14 Yoshinori K. Okuji * kern/i386/pc/startup.S: Include grub/cpu/linux.h instead of grub/machine/linux.h * loader/i386/pc/linux.c: Likewise. * include/grub/i386/pc/linux.h: Moved to ... * include/grub/i386/linux.h: ... here. * include/grub/i386/linux.h (struct linux_kernel_params): New struct. 2006-05-09 Vesa Jaaskelainen * video/i386/pc/vbe.c (grub_video_vbe_fill_rect): Corrected bounds checking. (grub_video_vbe_blit_glyph): Likewise. (grub_video_vbe_blit_bitmap): Likewise. (grub_video_vbe_blit_render_target): Likewise. 2006-05-09 Yoshinori K. Okuji * configure.ac (--with-platform): Properly quote the square brackets. 2006-05-08 Marco Gerards * conf/powerpc-ieee1275.rmk (grubof_HEADERS): Renamed from this... (kernel_elf_HEADERS): ...to this. Updated all users. (grubof_symlist.c): Renamed from this... (kernel_elf_symlist.c): ...to this. Updated all users. (pkgdata_PROGRAMS): Changed `grubof' to `kernel.elf'. (grubof_SOURCES): Renamed from this... (kernel_elf_SOURCES): ...to this. (grubof_HEADERS): Renamed from this... (kernel_elf_HEADERS): ...to this. (grubof_CFLAGS): Renamed from this... (kernel_elf_CFLAGS): ...to this. (grubof_ASFLAGS): Renamed from this... (kernel_elf_ASFLAGS): ...to this. (grubof_LDFLAGS): Renamed from this... (kernel_elf_LDFLAGS): ...to this. * conf/sparc64-ieee1275.rmk (grubof_HEADERS): Renamed from this... (kernel_elf_HEADERS): ...to this. Updated all users. (grubof_symlist.c): Renamed from this... (kernel_elf_symlist.c): ...to this. Updated all users. (pkgdata_PROGRAMS): Changed `grubof' to `kernel.elf'. (grubof_SOURCES): Renamed from this... (kernel_elf_SOURCES): ...to this. (grubof_HEADERS): Renamed from this... (kernel_elf_HEADERS): ...to this. (grubof_CFLAGS): Renamed from this... (kernel_elf_CFLAGS): ...to this. (grubof_ASFLAGS): Renamed from this... (kernel_elf_ASFLAGS): ...to this. (grubof_LDFLAGS): Renamed from this... (kernel_elf_LDFLAGS): ...to this. * util/powerpc/ieee1275/grub-mkimage.c (add_segments): Use `kernel.elf' instead of `grubof'. 2006-05-08 Yoshinori K. Okuji Add --with-platform to configure. Use pkglibdir instead of pkgdatadir. This is reported by Roger Leigh. * util/powerpc/ieee1275/grub-install.in (datadir): Removed. (host_vendor): Likewise. (host_os): Likewise. (pkgdatadir): Likewise. (platform): New variable. (pkglibdir): Likewise. Use PKGLIBDIR instead of PKGDATADIR. * util/i386/pc/grub-install.in (datadir): Removed. (host_vendor): Likewise. (host_os): Likewise. (pkgdatadir): Likewise. (platform): New variable. (pkglibdir): Likewise. Use PKGLIBDIR instead of PKGDATADIR. * util/powerpc/ieee1275/grub-mkimage.c (usage): Use GRUB_LIBDIR instead of GRUB_DATADIR. (main): Likewise. * util/i386/pc/grub-mkimage.c (usage): Likewise. (main): Likewise. * util/i386/efi/grub-mkimage.c (usage): Likewise. (main): Likewise. * configure.ac (--with-platform): New option. Use PLATFORM instead of HOST_VENDOR to specify a platform. * Makefile.in: Include a makefile based on PLATFORM instead of HOST_VENDOR. (pkgdatadir): Not appended by the machine type. (pkglibdir): Appended by the machine type. (host_vendor): Removed. (platform): New variable. (BUILD_CPPFLAGS): Specify GRUB_LIBDIR instead of GRUB_DATADIR. (install-local): Use PKGLIBDIR instead of PKGDATADIR. (uninstall): Likewise. 2006-05-07 Yoshinori K. Okuji Use the environment context in the menu. Remove the commands "default" and "timeout", and use variables instead. * normal/menu.c: Include grub/env.h. (print_entry): Cast TITLE to silence gcc. (get_timeout): New function. (set_timeout): Likewise. (get_entry_number): Likewise. (run_menu): Use a default entry, a fallback entry and a timeout in the environment variables "default", "fallback" and "timeout". Also, tweak the default entry if it is not within the current menu entries. (grub_menu_run): Use a fallback entry in the environment variable "fallback". * normal/main.c (read_config_file): Do not initialize NEWMENU->DEFAULT_ENTRY, NEWMENU->FALLBACK_ENTRY or NEWMENU->TIMEOUT. (grub_normal_execute): Use a data slot to store the menu. * include/grub/normal.h (struct grub_menu): Removed default_entry, fallback_entry and timeout. (struct grub_menu_list): Removed. (grub_menu_list_t): Likewise. (struct grub_context): Likewise. (grub_context_t): Likewise. (grub_context_get): Likewise. (grub_context_get_current_menu): Likewise. (grub_context_push_menu): Likewise. (grub_context_pop_menu): Likewise. (grub_default_init): Likewise. (grub_default_fini): Likewise. (grub_timeout_init): Likewise. (grub_timeout_fini): Likewise. * conf/sparc64-ieee1275.rmk (pkgdata_MODULES): Removed default.mod and timeout.mod. (normal_mod_SOURCES): Removed normal/context.c. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Removed commands/default.c, commands/timeout.c and normal/context.c. (normal_mod_SOURCES): Removed normal/context.c. * conf/i386-pc.rmk (grub_emu_SOURCES): Removed commands/default.c, commands/timeout.c and normal/context.c. (normal_mod_SOURCES): Removed normal/context.c. * conf/i386-efi.rmk (grub_emu_SOURCES): Removed commands/default.c, commands/timeout.c and normal/context.c. (normal_mod_SOURCES): Removed normal/context.c. * conf/common.rmk (pkgdata_MODULES): Removed default.mod and timeout.mod. (default_mod_SOURCES): Removed. (default_mod_CFLAGS): Likewise. (default_mod_LDFLAGS): Likewise. (timeout_mod_SOURCES): Removed. (timeout_mod_CFLAGS): Likewise. (timeout_mod_LDFLAGS): Likewise. * DISTLIST: Removed commands/default.c, commands/timeout.c and normal/context.c. * commands/default.c: Removed. * commands/timeout.c: Likewise. * normal/context.c: Likewise. 2006-05-07 Vesa Jaaskelainen * kern/i386/pc/startup.S (grub_exit): Added missing .code32 tag. 2006-05-02 Yoshinori K. Okuji * kern/env.c (struct grub_env_context): Removed "sorted". Renamed "next" to "prev" for readability. (struct grub_env_sorted_var): New struct. (grub_env_context): Renamed to ... (initial_context): ... this. (grub_env_var_context): Renamed to ... (current_context): ... this. (grub_env_find): Look only at CURRENT_CONTEXT. (grub_env_context_open): Rewritten to copy exported variables from previous context. (grub_env_context_close): Rewritten according to the new scheme. Also, add an assertion to prevent the initial context from removed. (grub_env_insert): Removed the code for the sorted list. (grub_env_remove): Likewise. (grub_env_export): Simply mark the variable with GRUB_ENV_VAR_GLOBAL. (grub_env_set): A cosmetic change for naming consistency. (grub_env_get): Likewise. (grub_env_unset): Likewise. (grub_env_iterate): Rewritten to sort variables within this function. (grub_register_variable_hook): Fixed for naming consistency. Call grub_env_find again, only if NAME is not found at the first time. (mangle_data_slot_name): New function. (grub_env_set_data_slot): Likewise. (grub_env_get_data_slot): Likewise. (grub_env_unset_data_slot): Likewise. * include/grub/env.h (grub_env_var_type): New enum. (GRUB_ENV_VAR_LOCAL): New constant. (GRUB_ENV_VAR_GLOBAL): Likewise. (GRUB_ENV_VAR_DATA): Likewise. (struct grub_env_var): Removed "sort_next" and "sort_prevp". Added "type". (grub_env_set): Replace VAR with NAME for consistency. (grub_register_variable_hook): Likewise. (grub_env_export): Specify the name of the argument. (grub_env_set_data_slot): New prototype. (grub_env_get_data_slot): Likewise. (grub_env_unset_data_slot): Likewise. 2006-04-30 Yoshinori K. Okuji Extend the loader so that GRUB can accept a loader which comes back to GRUB when a loaded image exits. Also, this change adds support for a chainloader on EFI. * term/efi/console.c: Include grub/misc.h. (grub_console_checkkey): Display a scan code on the top for debugging. This will be removed once the EFI port gets stable. Correct the scan code mapping. * kern/efi/mm.c (sort_memory_map): Sort in a descending order to allocate memory from larger regions, in order to reduce the number of allocated regions. Otherwise, the MacOSX loader panics. (filter_memory_map): Avoid less than 1MB for compatibility with other loaders. (add_memory_regions): Allocate from the tail of a region, if possible, to avoid allocating a region near to 1MB, for the MacOSX loader. * kern/efi/init.c (grub_efi_set_prefix): Specify GRUB_EFI_IMAGE_HANDLE to grub_efi_get_loaded_image. * kern/efi/efi.c (grub_efi_get_loaded_image): Accept a new argument IMAGE_HANDLE and specify it to get a loaded image. (grub_arch_modules_addr): Specify GRUB_EFI_IMAGE_HANDLE to grub_efi_get_loaded_image. (grub_efi_get_filename): Divide the length by the size of grub_efi_char16_t. (grub_efi_get_device_path): New function. (grub_efi_print_device_path): Print End Device Path nodes. Divide the length by the size of grub_efi_char16_t for a file path device path node. * kern/loader.c (grub_loader_noreturn): New variable. (grub_loader_set): Accept a new argument NORETURN. Set GRUB_LOADER_NORETURN to NORETURN. All callers changed. (grub_loader_boot): If GRUB_LOADER_NORETURN is false, do not call grub_machine_fini. * include/grub/efi/efi.h (grub_efi_get_device_path): New prototype. (grub_efi_get_loaded_image): Take an argument to specify an image handle. * include/grub/loader.h (grub_loader_set): Added one more argument NORETURN. * disk/efi/efidisk.c (make_devices): Use grub_efi_get_device_path instead of grub_efi_open_protocol. (grub_efidisk_get_device_name): Likewise. (grub_efidisk_close): Print a newline. (grub_efidisk_get_device_handle): Fixed to use GRUB_EFI_DEVICE_PATH_SUBTYPE instead of GRUB_EFI_DEVICE_PATH_TYPE. * disk/efi/efidisk.c (device_path_guid): Moved to ... * kern/efi/efi.c (device_path_guid): ... here. * conf/i386-efi.rmk (pkgdata_MODULES): Added _chain.mod and chain.mod. (kernel_mod_HEADERS): Added efi/disk.h. (_chain_mod_SOURCES): New variable. (_chain_mod_CFLAGS): Likewise. (_chain_mod_LDFLAGS): Likewise. (chain_mod_SOURCES): Likewise. (chain_mod_CFLAGS): Likewise. (chain_mod_LDFLAGS): Likewise. * DISTLIST: Added include/grub/efi/chainloader.h, loader/efi/chainloader.c and loader/efi/chainloader_normal.c. * include/grub/efi/chainloader.h: New file. * loader/efi/chainloader.c: Likewise. * loader/efi/chainloader_normal.c: Likewise. 2006-04-30 Marco Gerards * commands/configfile.c (grub_cmd_source): New function. (GRUB_MOD_INIT): Register the commands `source' and `.'. (GRUB_MOD_FINI): De-register the commands `source' and `.'. 2006-04-30 Marco Gerards * normal/execute.c (grub_script_execute_cmd): Change the return type to `grub_err_t'. Correctly return the error. (grub_script_execute_cmdline): In case a command line is not a command or a function, try to interpret it as an assignment. 2006-04-30 Yoshinori K. Okuji * fs/hfsplus.c (grub_hfsplus_read_block): Fixed a memory leak. (grub_hfsplus_iterate_dir): Reordered to skip unknown nodes. Also, skip a node whose name is obviously invalid as UTF-16, i.e. contains a NUL character. Stop the iteration when the last directory entry is found. Instead of using the return value of grub_hfsplus_btree_iterate_node, store the value in RET and use it, because the iterator can be stopped by the last directory entry. 2006-04-30 Marco Gerards * include/grub/env.h (grub_env_export): New prototype. Reported by Jan C. Kleinsorge . 2006-04-30 Marco Gerards * fs/hfsplus.c (grub_hfsplus_iterate_dir): Correctly calculate the size of the extents in a catalog file record. 2006-04-29 Marco Gerards * commands/configfile.c (grub_cmd_configfile): Execute the configfile within its own context. * include/grub/env.h (grub_env_context_open): New prototype. (grub_env_context_close): Likewise. * kern/env.c (grub_env): Removed. (grub_env_sorted): Likewise. (grub_env_context): New variable. (grub_env_var_context): Likewise. (grub_env_find): Search both the active context and the global context. (grub_env_context_open): New function. (grub_env_context_close): Likewise. (grub_env_insert): Likewise. (grub_env_remove): Likewise. (grub_env_export): Likewise. (grub_env_set): Changed to use helper functions to avoid code duplication. (grub_env_iterate): Rewritten so both the current context and the global context are being used. * normal/command.c (export_command): New function. (grub_command_init): Register the `export' function. 2006-04-26 Yoshinori K. Okuji * util/i386/pc/grub-mkimage.c (compress_kernel): Cast arguments explicitly to suppress gcc's warnings. * fs/fat.c (grub_fat_find_dir): Likewise. (grub_fat_label): Likewise. * fs/xfs.c (grub_xfs_read_inode): Likewise. (grub_xfs_mount): Likewise. (grub_xfs_label): Likewise. * fs/affs.c (grub_affs_mount): Likewise. (grub_affs_label): Likewise. (grub_affs_iterate_dir): Likewise. * fs/sfs.c (grub_sfs_mount): Likewise. (grub_sfs_iterate_dir): Likewise. * fs/ufs.c (grub_ufs_lookup_symlink): Likewise. * fs/hfs.c (grub_hfs_mount): Likewise. (grub_hfs_cmp_catkeys): Likewise. (grub_hfs_find_dir): Likewise. (grub_hfs_dir): Likewise. (grub_hfs_label): Likewise. * fs/jfs.c (grub_jfs_mount): Likewise. (grub_jfs_opendir): Likewise. (grub_jfs_getent): Likewise. (grub_jfs_lookup_symlink): Likewise. (grub_jfs_label): Likewise. * fs/hfsplus.c (grub_hfsplus_cmp_catkey): Likewise. (grub_hfsplus_iterate_dir): Likewise. (grub_hfsplus_btree_iterate_node): Made static. * util/grub-emu.c (prefix): New variable. (grub_machine_set_prefix): New function. (main): Do not set the environment variable "prefix" here. Only set PREFIX, which is used later by grub_machine_set_prefix. * include/grub/video.h: Do not include grub/symbol.h. (grub_video_register): Not exported. This symbol is not defined in the kernel. (grub_video_unregister): Likewise. (grub_video_iterate): Likewise. (grub_video_setup): Likewise. (grub_video_restore): Likewise. (grub_video_get_info): Likewise. (grub_video_get_blit_format): Likewise. (grub_video_set_palette): Likewise. (grub_video_get_palette): Likewise. (grub_video_set_viewport): Likewise. (grub_video_get_viewport): Likewise. (grub_video_map_color): Likewise. (grub_video_map_rgb): Likewise. (grub_video_map_rgba): Likewise. (grub_video_fill_rect): Likewise. (grub_video_blit_glyph): Likewise. (grub_video_blit_bitmap): Likewise. (grub_video_blit_render_target): Likewise. (grub_video_scroll): Likewise. (grub_video_swap_buffers): Likewise. (grub_video_create_render_target): Likewise. (grub_video_delete_render_target): Likewise. (grub_video_set_active_render_target): Likewise. * include/grub/symbol.h [GRUB_SYMBOL_GENERATOR] (EXPORT_FUNC): Undefined. [GRUB_SYMBOL_GENERATOR] (EXPORT_VAR): Likewise. * conf/sparc64-ieee1275.rmk (grubof_symlist.c): Depended on config.h. Use gensymlist.sh instead of $(srcdir)/gensymlist.sh. (kernel_syms.lst): Depended on config.h. Use genkernsyms.sh instead of $(srcdir)/genkernsyms.sh. * conf/powerpc-ieee1275.rmk (grubof_symlist.c): Depended on config.h. Use gensymlist.sh instead of $(srcdir)/gensymlist.sh. (kernel_syms.lst): Depended on config.h. Use genkernsyms.sh instead of $(srcdir)/genkernsyms.sh. * conf/i386-pc.rmk (symlist.c): Depended on config.h. Use gensymlist.sh instead of $(srcdir)/gensymlist.sh. (kernel_syms.lst): Depended on config.h. Use genkernsyms.sh instead of $(srcdir)/genkernsyms.sh. * conf/i386-efi.rmk (symlist.c): Depended on config.h. Use gensymlist.sh instead of $(srcdir)/gensymlist.sh. (kernel_syms.lst): Depended on config.h. Use genkernsyms.sh instead of $(srcdir)/genkernsyms.sh. * configure.ac (AC_CONFIG_FILES): Added gensymlist.sh and genkernsyms.sh. * Makefile.in (DISTCLEANFILES): Added gensymlist.sh and genkernsyms.sh. (gensymlist.sh): New target. (genkernsyms.sh): Likewise. * DISTLIST: Removed genkernsyms.sh and gensymlist.sh. Added genkernsyms.sh.in and gensymlist.sh.in. * genkernsyms.sh: Removed. * gensymlist.sh: Likewise. * genkernsyms.sh.in: New file. * gensymlist.sh.in: Likewise. 2006-04-25 Hollis Blanchard * kern/powerpc/ieee1275/init.c (grub_machine_set_prefix): Do not clobber "prefix", since we may have already set it manually. 2006-04-25 Hollis Blanchard * kern/misc.c (abort): New alias for grub_abort. 2006-04-25 Yoshinori K. Okuji A new machine-specific function "grub_machine_set_prefix" is defined. This is called after loading modules, so that a prefix initialization can use modules. Also, this change adds an intensive debugging feature for the memory manager via the configure option "--enable-mm-debug". * partmap/gpt.c (gpt_partition_map_iterate): Add one more into PART.LEN. * kern/sparc64/ieee1275/init.c (abort): Removed. (grub_stop): Likewise. (grub_exit): New function. (grub_set_prefix): Renamed to ... (grub_machine_set_prefix): ... this. (grub_machine_init): Do not call grub_set_prefix. * kern/powerpc/ieee1275/init.c (grub_set_prefix): Renamed to ... (grub_machine_set_prefix): ... this. (grub_machine_init): Do not call grub_set_prefix. * kern/i386/pc/init.c (grub_machine_set_prefix): New function. (grub_machine_init): Do not set the prefix here. * kern/i386/efi/init.c (grub_machine_set_prefix): New function. * kern/efi/init.c: Include grub/mm.h. (grub_efi_set_prefix): New function. * kern/efi/efi.c (grub_exit): Call grub_efi_fini. (grub_efi_get_filename): New function. (grub_print_device_path): Renamed to ... (grub_efi_print_device_path): ... this. * kern/mm.c [MM_DEBUG] (grub_malloc): Undefined. [MM_DEBUG] (grub_realloc): Likewise. [MM_DEBUG] (grub_free): Likewise. [MM_DEBUG] (grub_memalign): Likewise. [MM_DEBUG] (grub_mm_debug): New variable. [MM_DEBUG] (grub_debug_malloc): New function. [MM_DEBUG] (grub_debug_free): New function. [MM_DEBUG] (grub_debug_realloc): New function. [MM_DEBUG] (grub_debug_memalign): New function. * kern/misc.c (grub_abort): Print a newline to distinguish the message. * kern/main.c (grub_main): Call grub_machine_set_prefix and grub_set_root_dev after loading modules. This is necessary when setting a prefix depends on modules. * include/grub/efi/efi.h (grub_print_device_path): Renamed to ... (grub_efi_print_device_path): ... this. (grub_efi_get_filename): New prototype. (grub_efi_set_prefix): Likewise. * include/grub/efi/disk.h: Include grub/efi/api.h, grub/symbol.h and grub/disk.h. (grub_efidisk_get_device_handle): New prototype. (grub_efidisk_get_device_name): Likewise. * include/grub/mm.h: Include config.h. (MM_DEBUG): Removed. [MM_DEBUG && !GRUB_UTIL] (grub_mm_debug): New prototype. [MM_DEBUG && !GRUB_UTIL] (grub_malloc): New macro. [MM_DEBUG && !GRUB_UTIL] (grub_realloc): Likewise. [MM_DEBUG && !GRUB_UTIL] (grub_memalign): Likewise. [MM_DEBUG && !GRUB_UTIL] (grub_free): Likewise. [MM_DEBUG && !GRUB_UTIL] (grub_debug_malloc): New prototype. [MM_DEBUG && !GRUB_UTIL] (grub_debug_realloc): New prototype. [MM_DEBUG && !GRUB_UTIL] (grub_debug_memalign): New prototype. [MM_DEBUG && !GRUB_UTIL] (grub_debug_free): New prototype. * include/grub/kernel.h (grub_machine_set_prefix): New prototype. * disk/efi/efidisk.c: Include grub/partition.h. (iterate_child_devices): New function. (add_device): First, compare only last device path nodes, so that devices are sorted by the types. (grub_efidisk_get_device_handle): New function. (grub_efidisk_get_device_name): Likewise. * configure.ac (--enable-mm-debug): New option to enable the memory manager debugging feature. This makes the binary much bigger, so is disabled by default. 2006-04-23 Yoshinori K. Okuji Use grub_abort instead of grub_stop, and grub_exit must be define in each architecture now. Also, this change adds support for EFI disks. * util/i386/pc/grub-probefs.c: Include grub/term.h. (grub_getkey): New function. (grub_term_get_current): Likewise. * util/i386/pc/grub-setup.c: Include grub/term.h. (grub_getkey): New function. (grub_term_get_current): Likewise. * util/misc.c (grub_stop): Renamed to ... (grub_exit): ... this. * kern/powerpc/ieee1275/init.c (abort): Renamed to ... (grub_exit): ... this. (grub_machine_init): Use grub_abort instead of abort. (grub_stop): Removed. * kern/powerpc/ieee1275/cmain.c (cmain): Use grub_abort instead of abort. * kern/i386/pc/startup.S (grub_exit): New function. (cold_reboot): New label. * kern/efi/init.c: Include grub/efi/disk.h and grub/env.h. (grub_efi_init): Call grub_efidisk_init. (grub_efi_fini): Call grub_efidisk_fini. * kern/efi/efi.c: Include grub/mm.h. (grub_efi_console_control_guid): Renamed to ... (console_control_guid): ... this. (grub_efi_loaded_image_guid): Renamed to ... (loaded_image_guid): ... this. (grub_efi_locate_handle): New function. (grub_efi_open_protocol): Likewise. (grub_efi_set_text_mode): Use CONSOLE_CONTROL_GUID instead of GRUB_EFI_CONSOLE_CONTROL_GUID. (grub_efi_exit): Removed. (grub_stop): Likewise. (grub_efi_get_loaded_image): Use grub_efi_open_protocol. (grub_exit): New function. (grub_print_device_path): Likewise. * kern/rescue.c (grub_rescue_cmd_exit): New function. (grub_enter_rescue_mode): Register "exit". * kern/misc.c (grub_real_dprintf): A cosmetic change. (grub_abort): New function. * kern/err.c (grub_fatal): Use grub_abort instead of grub_stop. * include/grub/sparc64/ieee1275/kernel.h (abort): Removed. * include/grub/powerpc/ieee1275/kernel.h (abort): Removed. * include/grub/efi/efi.h (grub_efi_exit): Removed. (grub_print_device_path): New prototype. (grub_efi_locate_handle): Likewise. (grub_efi_open_protocol): Likewise. * include/grub/efi/disk.h (grub_efidisk_fini): New file. * disk/efi/efidisk.c: Likewise. * DISTLIST: Added disk/efi/efidisk.c and include/grub/efi/disk.h. * include/grub/efi/console_control.h (GRUB_EFI_CONSOLE_CONTROL_GUID): Use an array for the last 8 bytes. * include/grub/efi/api.h (GRUB_EFI_LOADED_IMAGE_GUID): Specify the last 8 bytes as an array. (GRUB_EFI_DISK_IO_GUID): New macro. (GRUB_EFI_BLOCK_IO_GUID): Likewise. (GRUB_EFI_DEVICE_PATH_GUID): Likewise. (grub_efi_ipv6_address_t): Change the type to grub_uint16_t from grub_uint8_t. (struct grub_efi_guid): Use an array to specify the last 8 bytes. (struct grub_efi_device_path): Rename the member "sub_type" to "subtype". (GRUB_EFI_DEVICE_PATH_TYPE): New macro. (GRUB_EFI_DEVICE_PATH_SUBTYPE): Likewise. (GRUB_EFI_DEVICE_PATH_LENGTH): Likewise. (GRUB_EFI_END_DEVICE_PATH_TYPE): Likewise. (GRUB_EFI_END_ENTIRE_DEVICE_PATH_SUBTYPE): Likewise. (GRUB_EFI_END_THIS_DEVICE_PATH_SUBTYPE): Likewise. (GRUB_EFI_END_ENTIRE_DEVICE_PATH): Likewise. (GRUB_EFI_NEXT_DEVICE_PATH): Likewise. (GRUB_EFI_HARDWARE_DEVICE_PATH_TYPE): Likewise. (GRUB_EFI_PCI_DEVICE_PATH_SUBTYPE): Likewise. (struct grub_efi_pci_device_path): New structure. (grub_efi_pci_device_path_t): New type. (GRUB_EFI_PCCARD_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_pccard_device_path): New structure. (grub_efi_pccard_device_path_t): New type. (GRUB_EFI_MEMORY_MAPPED_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_memory_mapped_device_path): New structure. (grub_efi_memory_mapped_device_path_t): New type. (GRUB_EFI_VENDOR_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_vendor_device_path): New structure. (grub_efi_vendor_device_path_t): New type. (GRUB_EFI_CONTROLLER_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_controller_device_path): New structure. (grub_efi_controller_device_path_t): New type. (GRUB_EFI_ACPI_DEVICE_PATH_TYPE): New macro. (GRUB_EFI_ACPI_DEVICE_PATH_SUBTYPE): Likewise. (struct grub_efi_acpi_device_path): New structure. (grub_efi_acpi_device_path_t): New type. (GRUB_EFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_expanded_acpi_device_path): New structure. (grub_efi_expanded_acpi_device_path_t): New type. (GRUB_EFI_EXPANDED_ACPI_HIDSTR): New macro. (GRUB_EFI_EXPANDED_ACPI_UIDSTR): Likewise. (GRUB_EFI_EXPANDED_ACPI_CIDSTR): Likewise. (GRUB_EFI_MESSAGING_DEVICE_PATH_TYPE): Likewise. (GRUB_EFI_ATAPI_DEVICE_PATH_SUBTYPE): Likewise. (struct grub_efi_atapi_device_path): New structure. (grub_efi_atapi_device_path_t): New type. (GRUB_EFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_fibre_channel_device_path): New structure. (grub_efi_fibre_channel_device_path_t): New type. (GRUB_EFI_1394_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_1394_device_path): New structure. (grub_efi_1394_device_path_t): New type. (GRUB_EFI_USB_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_usb_device_path): New structure. (grub_efi_usb_device_path_t): New type. (GRUB_EFI_USB_CLASS_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_usb_class_device_path): New structure. (grub_efi_usb_class_device_path_t): New type. (GRUB_EFI_I2O_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_i2o_device_path): New structure. (grub_efi_i2o_device_path_t): New type. (GRUB_EFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_mac_address_device_path): New structure. (grub_efi_mac_address_device_path_t): New type. (GRUB_EFI_IPV4_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_ipv4_device_path): New structure. (grub_efi_ipv4_device_path_t): New type. (GRUB_EFI_IPV6_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_ipv6_device_path): New structure. (grub_efi_ipv6_device_path_t): New type. (GRUB_EFI_INFINIBAND_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_infiniband_device_path): New structure. (grub_efi_infiniband_device_path_t): New type. (GRUB_EFI_UART_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_uart_device_path): New structure. (grub_efi_uart_device_path_t): New type. (GRUB_EFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_vendor_messaging_device_path): New structure. (grub_efi_vendor_messaging_device_path_t): New type. (GRUB_EFI_MEDIA_DEVICE_PATH_TYPE): New macro. (GRUB_EFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE): Likewise. (struct grub_efi_hard_drive_device_path): New structure. (grub_efi_hard_drive_device_path_t): New type. (GRUB_EFI_CDROM_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_cdrom_device_path): New structure. (grub_efi_cdrom_device_path_t): New type. (GRUB_EFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_vendor_media_device_path): New structure. (grub_efi_vendor_media_device_path_t): New type. (GRUB_EFI_FILE_PATH_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_file_path_device_path): New structure. (grub_efi_file_path_device_path_t): New type. (GRUB_EFI_PROTOCOL_DEVICE_PATH_SUBTYPE): New macro. (struct grub_efi_protocol_device_path): New structure. (grub_efi_protocol_device_path_t): New type. (GRUB_EFI_BIOS_DEVICE_PATH_TYPE): New macro. (GRUB_EFI_BIOS_DEVICE_PATH_SUBTYPE): Likewise. (struct grub_efi_bios_device_path): New structure. (grub_efi_bios_device_path_t): New type. (struct grub_efi_disk_io): New structure. (grub_efi_disk_io_t): New type. (struct grub_efi_block_io_media): New structure. (grub_efi_block_io_media_t): New type. (struct grub_efi_block_io): New structure. (grub_efi_block_io_t): New type. * include/grub/misc.h (grub_stop): Removed. (grub_exit): New prototype. (grub_abort): Likewise. * include/grub/disk.h (enum grub_disk_dev_id): Added GRUB_DISK_DEVICE_EFIDISK_ID. * conf/i386-efi.rmk (kernel_mod_SOURCES): Added disk/efi/efidisk.c. (kernel_syms.lst): Remove the target if an error occurs. 2006-04-22 Yoshinori K. Okuji * kern/misc.c (grub_lltoa): Rewritten the decimal conversion part, as it was simply too buggy. 2006-04-21 Yoshinori K. Okuji * kern/misc.c (grub_lltoa): New function. (grub_vsprintf): Added support for the long long suffix, i.e. "ll". 2006-04-20 Hollis Blanchard * Makefile.in (LDFLAGS): Add variable. (LD): Remove variable. * configure.ac: Add -m32 to LDFLAGS. * genmk.rb (PModule#rule): Use $(CC) instead of $(LD). * conf/powerpc-ieee1275.rmk (COMMON_LDFLAGS): Add variable. (grubof_LDFLAGS): Use $(COMMON_LDFLAGS). (_linux_mod_LDFLAGS, linux_mod_LDFLAGS, normal_mod_LDFLAGS, suspend_mod_LDFLAGS, reboot_mod_LDFLAGS, halt_mod_LDFLAGS): New variables. * conf/sparc64-ieee1275.rmk (COMMON_LDFLAGS): Add -nostdlib. * conf/i386-pc.rmk (COMMON_LDFLAGS): Add -nostdlib. * conf/i386-efi.rmk (COMMON_LDFLAGS): Add -nostdlib. 2006-04-20 Vesa Jaaskelainen * term/gfxterm.c (grub_gfxterm_getcharwidth): Fixed character length for unknown glyph. 2006-04-20 Yoshinori K. Okuji Add support for pre-loaded modules into the EFI port. * util/i386/efi/grub-mkimage.c (make_mods_section): Rewritten completely. Accept one more argument DIR. The caller has changed. * kern/i386/efi/init.c (grub_arch_modules_addr): Removed. * kern/efi/efi.c: Include grub/efi/pe32.h and grub/kernel.h. (grub_efi_loaded_image_guid): New variable. (grub_efi_get_loaded_image): New function. (grub_arch_modules_addr): Likewise. * include/grub/efi/efi.h (grub_efi_get_loaded_image): New prototype. * include/grub/efi/api.h (GRUB_EFI_LOADED_IMAGE_GUID): New macro. (struct grub_efi_loaded_image): New structure. (grub_efi_loaded_image_t): New type. 2006-04-20 Yoshinori K. Okuji * loader/i386/pc/linux.c (grub_rescue_cmd_linux): Compare the file size with GRUB_OS_AREA_SIZE as grub_size_t instead of grub_ssize_t. Reported by Jeff Chua . 2006-04-19 Roger Leigh * DISTLIST: Added `util/powerpc/ieee1275/grub-install.in'. 2006-04-19 Yoshinori K. Okuji * DISTLIST: Added include/grub/efi/console.h, include/grub/efi/time.h, include/grub/i386/efi/kernel.h, kern/efi/init.c, kern/efi/mm.c, and term/efi/console.c. * include/grub/efi/console.h: New file. * include/grub/efi/time.h: Likewise. * include/grub/i386/efi/kernel.h: Likewise. * kern/efi/init.c: Likewise. * kern/efi/mm.c: Likewise. * term/efi/console.c: Likewise. * kern/i386/efi/init.c: Do not include grub/machine/time.h. (grub_stop): Removed. (grub_get_rtc): Likewise. (grub_machine_init): Simply call grub_efi_init. (grub_machine_fini): Call grub_efi_fini. * kern/efi/efi.c: Include grub/machine/time.h and grub/term.h. (grub_efi_output_string): Removed. (grub_efi_stall): New function. (grub_stop): Likewise. (grub_get_rtc): Likewise. * include/grub/efi/efi.h (grub_efi_output_string): Removed. (grub_efi_stall): New prototype. (grub_efi_allocate_pages): Likewise. (grub_efi_free_pages): Likewise. (grub_efi_get_memory_map): Likewise. (grub_efi_mm_init): Likewise. (grub_efi_mm_fini): Likewise. (grub_efi_init): Likewise. (grub_efi_fini): Likewise. * include/grub/i386/efi/time.h: Do not include grub/symbol.h. Include grub/efi/time.h. (GRUB_TICKS_PER_SECOND): Removed. (grub_get_rtc): Likewise. * include/grub/efi/api.h (struct grub_efi_memory_descriptor): Added padding. The EFI spec is buggy. (GRUB_EFI_BLACK): New macro. (GRUB_EFI_BLUE): Likewise. (GRUB_EFI_GREEN): Likewise. (GRUB_EFI_CYAN): Likewise. (GRUB_EFI_RED): Likewise. (GRUB_EFI_MAGENTA): Likewise. (GRUB_EFI_BROWN): Likewise. (GRUB_EFI_LIGHTGRAY): Likewise. (GRUB_EFI_BRIGHT): Likewise. (GRUB_EFI_DARKGRAY): Likewise. (GRUB_EFI_LIGHTBLUE): Likewise. (GRUB_EFI_LIGHTGREEN): Likewise. (GRUB_EFI_LIGHTCYAN): Likewise. (GRUB_EFI_LIGHTRED): Likewise. (GRUB_EFI_LIGHTMAGENTA): Likewise. (GRUB_EFI_YELLOW): Likewise. (GRUB_EFI_WHITE): Likewise. (GRUB_EFI_BACKGROUND_BLACK): Likewise. (GRUB_EFI_BACKGROUND_BLUE): Likewise. (GRUB_EFI_BACKGROUND_GREEN): Likewise. (GRUB_EFI_BACKGROUND_CYAN): Likewise. (GRUB_EFI_BACKGROUND_RED): Likewise. (GRUB_EFI_BACKGROUND_MAGENTA): Likewise. (GRUB_EFI_BACKGROUND_BROWN): Likewise. (GRUB_EFI_BACKGROUND_LIGHTGRAY): Likewise. (GRUB_EFI_TEXT_ATTR): Likewise. * conf/i386-efi.rmk (kernel_mod_SOURCES): Added kern/efi/efi.c, kern/efi/init.c, kern/efi/mm.c, and term/efi/console.c. (kernel_mod_HEADERS): Added efi/time.h. 2006-04-18 Yoshinori K. Okuji * DISTLIST: Added conf/i386-efi.mk, conf/i386-efi.rmk, include/grub/efi/api.h, include/grub/efi/console_control.h, include/grub/efi/efi.h, include/grub/efi/pe32.h, include/grub/i386/efi/time.h, kern/efi/efi.c, kern/i386/efi/init.c, kern/i386/efi/startup.S, and util/i386/efi/grub-mkimage.c. * Makefile.in (RMKFILES): Added i386-efi.rmk. * genmk.rb (PModule#rule): Do not export symbols if #{prefix}_EXPORTS is set to "no". * conf/i386-efi.mk: New file. * conf/i386-efi.rmk: Likewise. * include/grub/efi/api.h: Likewise. * include/grub/efi/console_control.h: Likewise. * include/grub/efi/efi.h: Likewise. * include/grub/efi/pe32.h: Likewise. * include/grub/i386/efi/time.h: Likewise. * kern/efi/efi.c: Likewise. * kern/i386/efi/init.c: Likewise. * kern/i386/efi/startup.S: Likewise. * util/i386/efi/grub-mkimage.c: Likewise. 2006-04-17 Marco Gerards * include/grub/script.h: Include and "grub_script.tab.h". (struct grub_lexer_param): New struct. (struct grub_parser_param): Likewise. (grub_script_create_arglist): Pass the state in an argument. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdblock): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_arg_add): Likewise. (grub_script_lexer_ref): Likewise. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_malloc): Likewise. (grub_script_yylex): Likewise. (grub_script_yyparse): Likewise. (grub_script_yyerror): Likewise. (grub_script_yylex): Likewise. (grub_script_lexer_init): Return the state. * normal/lexer.c (grub_script_lexer_state): Removed variable. (grub_script_lexer_done): Likewise. (grub_script_lexer_getline): Likewise. (grub_script_lexer_refs): Likewise. (script): Likewise. (newscript): Likewise. (record): Likewise. (recording): Likewise. (recordpos): Likewise. (recordlen): Likewise. (grub_script_lexer_init): Return the state instead of setting global variables. (grub_script_lexer_ref): Use the newly added argument for state instead of globals. (grub_script_lexer_deref): Likewise. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex2): Likewise. (grub_script_yylex): Likewise. (grub_script_yyerror): Likewise. * normal/parser.y (func_mem): Removed variable. (menu_entry): Likewise. (err): Likewise. (%lex-param): New parser option. (%parse-param): Likewise. (script): Always return the AST. (argument): Pass the state around. (arguments): Likewise. (grubcmd): Likewise. (commands): Likewise. (function): Likewise. (menuentry): Likewise. (if_statement): Likewise. (if): Likewise. * normal/script.c (grub_script_memused): Removed variable. (grub_script_parsed): Likewise. (grub_script_malloc): Added a state argument. Use that instead of global variables. (grub_script_mem_record): Likewise. (grub_script_mem_record_stop): Likewise. (grub_script_arg_add): Likewise. (grub_script_add_arglist): Likewise. (grub_script_create_cmdline): Likewise. (grub_script_create_cmdif): Likewise. (grub_script_create_cmdmenu): Likewise. (grub_script_add_cmd): Likewise. (grub_script_parse): Setup the state before calling the parser. 2006-04-16 Marco Gerards * normal/command.c (grub_command_init): Remove the title command. * normal/lexer.c (grub_script_yylex): Renamed from this... (grub_script_yylex2): ... to this. (grub_script_yylex): New function. Temporary introduced to filter some tokens. (grub_script_yyerror): Print a newline. * normal/main.c (read_config_file): Output information about the lines that contain errors. Wait for a key after all lines have been processed. Don't return an empty menu. * normal/parser.y (func_mem): Don't initialize. (menu_entry): Likewise. (err): New variable. (script): Don't return anything when an error was encountered. (ws, returns): Removed rules. (argument): Disabled concatenated variable support. (arguments): Remove explicit separators. (grubcmd): Likewise. (function): Likewise. (menuentry): Likewise. (if): Likewise. (commands): Likewise. Add error handling. * normal/script.c (grub_script_create_cmdline): If `grub_script_parsed' is 0, assume the parser encountered an error. 2006-04-02 Yoshinori K. Okuji * configure.ac: Add support for EFI. Fix the typo BUILD_LDDFLAGS. Restore the LDFLAGS after testing. 2006-04-01 Vesa Jaaskelainen * util/unifont2pff.rb: Removed unnecessary byte ordering. Now foreign multibyte characters should be shown correctly. 2006-04-01 Vesa Jaaskelainen * normal/main.c (grub_normal_menu_addentry): Fixed menu size calculation. (read_config_file): Made it to close file before returning. 2006-03-31 Vesa Jaaskelainen * DISTLIST: Added include/grub/i386/pc/vbeblit.h, include/grub/i386/pc/vbefill.h, video/i386/pc/vbeblit.c, video/i386/pc/vbefill.c. * conf/i386-pc.rmk (vbe_mod_SOURCES): Added video/i386/pc/vbeblit.c, video/i386/pc/vbefill.c. * include/grub/video.h (grub_video_blit_format): New enum. (grub_video_mode_info): Added new member blit_format. (grub_video_get_blit_format): New function prototype. * include/grub/i386/pc/vbe.h (grub_video_vbe_get_video_ptr): New function prototype. (grub_video_vbe_map_rgb): Likewise. (grub_video_vbe_unmap_color): Likewise. * include/grub/i386/pc/vbeblit.h: New file. * include/grub/i386/pc/vbefill.h: New file. * video/video.c (grub_video_get_blit_format): New function. (grub_video_vbe_get_video_ptr): Re-declared as non-static. (grub_video_vbe_map_rgb): Likewise. (grub_video_vbe_unmap_color): Likewise. * video/i386/pc/vbe.c (grub_video_vbe_fill_rect): Changed to use more optimized fills. (grub_video_vbe_blit_render_target): Changed to use more optimized blits. (grub_video_vbe_setup): Added detection for optimized settings. (grub_video_vbe_create_render_target): Likewise. * video/i386/pc/vbeblit.c: New file. * video/i386/pc/vbefill.c: New file. 2006-03-30 Vesa Jaaskelainen * font/manager.c (grub_font_get_glyph): Removed font fixup from here... * util/unifont2pff.rb: ... and moved it to here. Improved argument parsing to support both hex and dec ranges. If filename was missing show usage information. 2006-03-14 Vesa Jaaskelainen * DISTLIST: Added include/grub/video.h, term/gfxterm.c, video/video.c, commands/videotest.c. Removed term/i386/pc/vesafb.c. * conf/i386-pc.rmk (pkgdata_MODULES): Added video.mod, gfxterm.mod, videotest.mod. Removed vga.mod, vesafb.mod. (video_mod_SOURCES): Added. (video_mod_CFLAGS): Likewise. (video_mod_LDFLAGS): Likewise. (gfxterm_mod_SOURCES): Likewise. (gfxterm_mod_CFLAGS): Likewise. (gfxterm_mod_LDFLAGS): Likewise. (videotest_mod_SOURCES): Likewise. (videotest_mod_CFLAGS): Likewise. (videotest_mod_LDFLAGS): Likewise. (vesafb_mod_SOURCES): Removed. (vesafb_mod_CFLAGS): Likewise. (vesafb_mod_LDFLAGS): Likewise. (vga_mod_SOURCES): Likewise. (vga_mod_CFLAGS): Likewise. (vga_mod_LDFLAGS): Likewise. * commands/videotest.c: New file. * font/manager.c (fill_with_default_glyph): Modified to use grub_font_glyph. (grub_font_get_glyph): Likewise. (fontmanager): Renamed from this... (font_manager): ... to this. * include/grub/font.h (grub_font_glyph): Added new structure. (grub_font_get_glyph): Modified to use grub_font_glyph. * include/grub/misc.h (grub_abs): Added as inline function. * include/grub/video.h: New file. * include/grub/i386/pc/vbe.h (GRUB_VBE_STATUS_OK): New macro. (GRUB_VBE_MEMORY_MODEL_PACKED_PIXEL): Likewise. (GRUB_VBE_MEMORY_MODEL_DIRECT_COLOR): Likewise. (grub_vbe_get_controller_info): Renamed from this... (grub_vbe_bios_get_controller_info): ... to this. (grub_vbe_get_mode_info): Renamed from this... (grub_vbe_bios_get_mode_info): ... to this. (grub_vbe_set_mode): Renamed from this... (grub_vbe_bios_set_mode): ... to this. (grub_vbe_get_mode): Renamed from this... (grub_vbe_bios_get_mode): ... to this. (grub_vbe_set_memory_window): Renamed from this... (grub_vbe_bios_set_memory_window): ... to this. (grub_vbe_get_memory_window): Renamed from this... (grub_vbe_bios_get_memory_window): ... to this. (grub_vbe_set_scanline_length): Renamed from this... (grub_vbe_set_scanline_length): ... to this. (grub_vbe_get_scanline_length): Renamed from this... (grub_vbe_bios_get_scanline_length): ... to this. (grub_vbe_set_display_start): Renamed from this... (grub_vbe_bios_set_display_start): ... to this. (grub_vbe_get_display_start): Renamed from this... (grub_vbe_bios_get_display_start): ... to this. (grub_vbe_set_palette_data): Renamed from this... (grub_vbe_bios_set_palette_data): ... to this. (grub_vbe_set_pixel_rgb): Removed. (grub_vbe_set_pixel_index): Likewise. * kern/i386/pc/startup.S (grub_vbe_get_controller_info): Renamed from this... (grub_vbe_bios_get_controller_info): ... to this. (grub_vbe_get_mode_info): Renamed from this... (grub_vbe_bios_get_mode_info): ... to this. (grub_vbe_set_mode): Renamed from this... (grub_vbe_bios_set_mode): ... to this. (grub_vbe_get_mode): Renamed from this... (grub_vbe_bios_get_mode): ... to this. (grub_vbe_set_memory_window): Renamed from this... (grub_vbe_bios_set_memory_window): ... to this. (grub_vbe_get_memory_window): Renamed from this... (grub_vbe_bios_get_memory_window): ... to this. (grub_vbe_set_scanline_length): Renamed from this... (grub_vbe_set_scanline_length): ... to this. (grub_vbe_get_scanline_length): Renamed from this... (grub_vbe_bios_get_scanline_length): ... to this. (grub_vbe_set_display_start): Renamed from this... (grub_vbe_bios_set_display_start): ... to this. (grub_vbe_get_display_start): Renamed from this... (grub_vbe_bios_get_display_start): ... to this. (grub_vbe_set_palette_data): Renamed from this... (grub_vbe_bios_set_palette_data): ... to this. (grub_vbe_bios_get_controller_info): Fixed problem with registers getting corrupted after calling it. Added more pushes and pops. (grub_vbe_bios_set_mode): Likewise. (grub_vbe_bios_get_mode): Likewise. (grub_vbe_bios_get_memory_window): Likewise. (grub_vbe_bios_set_scanline_length): Likewise. (grub_vbe_bios_get_scanline_length): Likewise. (grub_vbe_bios_get_display_start): Likewise. (grub_vbe_bios_set_palette_data): Likewise. * normal/cmdline.c (cl_set_pos): Refresh the screen. (cl_insert): Likewise. (cl_delete): Likewise. * term/gfxterm.c: New file. * term/i386/pc/vesafb.c: Removed file. * video/video.c: New file. * video/i386/pc/vbe.c (real2pm): Added new function. (grub_video_vbe_draw_pixel): Likewise. (grub_video_vbe_get_video_ptr): Likewise. (grub_video_vbe_get_pixel): Likewise (grub_video_vbe_init): Likewise. (grub_video_vbe_fini): Likewise. (grub_video_vbe_setup): Likewise. (grub_video_vbe_get_info): Likewise. (grub_video_vbe_set_palette): Likewise. (grub_video_vbe_get_palette): Likewise. (grub_video_vbe_set_viewport): Likewise. (grub_video_vbe_get_viewport): Likewise. (grub_video_vbe_map_color): Likewise. (grub_video_vbe_map_rgb): Likewise. (grub_video_vbe_map_rgba): Likewise. (grub_video_vbe_unmap_color): Likewise. (grub_video_vbe_fill_rect): Likewise. (grub_video_vbe_blit_glyph): Likewise. (grub_video_vbe_blit_bitmap): Likewise. (grub_video_vbe_blit_render_target): Likewise. (grub_video_vbe_scroll): Likewise. (grub_video_vbe_swap_buffers): Likewise. (grub_video_vbe_create_render_target): Likewise. (grub_video_vbe_delete_render_target): Likewise. (grub_video_vbe_set_active_render_target): Likewise. (grub_vbe_set_pixel_rgb): Remove function. (grub_vbe_set_pixel_index): Likewise. (index_color_mode): Remove static variable. (active_mode): Likewise. (framebuffer): Likewise. (bytes_per_scan_line): Likewise. (grub_video_vbe_adapter): Added new static variable. (framebuffer): Likewise. (render_target): Likewise. (initial_mode): Likewise. (mode_in_use): Likewise. (mode_list): Likewise. 2006-03-10 Marco Gerards * configure.ac (AC_INIT): Bumped to 1.93. * DISTLIST: Added `include/grub/hfs.h'. 2006-02-01 Yoshinori K. Okuji * boot/i386/pc/boot.S (general_error): Before looping, try INT 18H, which might help the BIOS falling back to next boot media. 2006-01-25 Yoshinori K. Okuji * util/i386/pc/grub-install.in: Escape a backslash. Reported by Poe Chen . 2006-01-17 Marco Gerards * include/grub/normal.h: Include . (grub_command_list): Removed struct. (grub_command_list_t): Removed type. (grub_menu_entry): Remove members `num' and `command_list'. Add members `commands' and `sourcecode'. * include/grub/script.h: Add inclusion guards. (grub_script_cmd_menuentry): New struct. (grub_script_execute_menuentry): New prototype. (grub_script_lexer_record_start): Likewise. (grub_script_lexer_record_stop): Likewise. * normal/execute.c (grub_script_execute_menuentry): New function. * normal/lexer.c (record, recording, recordpos, recordlen): New variables. (grub_script_lexer_record_start): New function. (grub_script_lexer_record_stop): Likewise. (recordchar): Likewise. (nextchar): Likewise. (grub_script_yylex): Use `nextchar' to fetch new characters. Use 2048 as the buffer size. Add the tokens `menuentry' and `@'. * normal/main.c: Include and (current_menu): New variable. (free_menu): Mainly rewritten. (grub_normal_menu_addentry): New function. (read_config_file): Rewritten. * normal/menu.c (run_menu_entry): Mainly rewritten. * normal/menu_entry.c (make_screen): Rewritten the code to insert the menu entry. (run): Mainly rewritten. * normal/parser.y (menu_entry): New variable. (GRUB_PARSER_TOKEN_MENUENTRY): New token. (menuentry): New rule. (command): Add `menuentry'. (if_statement): Allow additional returns before `fi'. * normal/script.c (grub_script_create_cmdmenu): New function. 2006-01-03 Marco Gerards * INSTALL: GNU Bison is required. * configure.ac: Rewritten the test to detect Bison. * Makefile.in (YACC): New variable. Reported by Xun Sun . 2006-01-03 Marco Gerards * fs/hfsplus.c (grub_hfsplus_read_block): Convert the offset of the HFS+ filesystem to filesystem blocks. (grub_hfsplus_iterate_dir): Cast the `fileinfo' assignment so a GCC warning is silenced. 2006-01-03 Marco Gerards * partmap/apple.c (apple_partition_map_iterate): Convert the data read from disk from big endian to host byte order. 2006-01-03 Hollis Blanchard * fs/hfs.c: Include . Added reference to the official documentation. (GRUB_HFS_EMBED_HFSPLUS_SIG): New macro. (grub_hfs_mount): Grammar fix in error. Make sure this is not an embedded HFS+ filesystem. (GRUB_HFS_MAGIC, grub_hfs_extent, grub_hfs_datarecord_t) (grub_hfs_sblock): Move from here... * include/grub/hfs.h: To here... New file. * fs/hfsplus.c: Include . Added reference to the official documentation. (GRUB_HFSPLUS_MAGIC, GRUB_HFSPLUSX_MAGIC, GRUB_HFSPLUS_SBLOCK): New macros. (grub_hfsplus_volheader): Change type of member `magic' to `grub_uint16_t'. (grub_hfsplus_data): Add new member `embedded_offset'. (grub_hfsplus_read_block): Add the HFS+ wrapper offset to the returned block. (grub_hfsplus_mount): Read the HFS+ wrapper if it exists. Calculate the offset. 2005-12-25 Yoshinori K. Okuji * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_DRP_ADDR): Removed. (GRUB_BOOT_MACHINE_DRP_SIZE): Likewise. 2005-12-25 Yoshinori K. Okuji * kern/env.c (grub_env_set): Check if ENV->VALUE instead of ENV->NAME is NULL after allocating ENV->VALUE. 2005-12-25 Marco Gerards * kern/env.c (grub_env_set): Rewritten the error handling code. 2005-12-25 Yoshinori K. Okuji * geninit.sh: Made more robust, and more portable. 2005-12-25 Marco Gerards Add support for Apple HFS+ filesystems. * fs/hfsplus.c: New file. * DISTLIST: Added `fs/hfsplus.c'. * conf/common.rmk (pkgdata_MODULES): Add `hfsplus.mod'. (hfsplus_mod_SOURCES): New variable. (hfsplus_mod_CFLAGS): Likewise. (hfsplus_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_setup_SOURCES): Add `fs/hfsplus.c'. (grub_setup_SOURCES): Likewise. (grub_mkdevicemap_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. * fs/fshelp.c (grub_fshelp_log2blksize): New function. * include/grub/fshelp.h (grub_fshelp_log2blksize): new prototype. 2005-12-25 Yoshinori K. Okuji * DISTLIST: Added geninitheader.sh, geninit.sh, commands/test.c, commands/i386/pc/play.c, conf/common.mk, conf/common.rmk, include/grub/parser.h, include/grub/script.h, kern/parser.c, kern/sparc64/cache.S, normal/execute.c, normal/function.c, normal/lexer.c, normal/parser.y, normal/script.c, and partmap/gpt.c. Removed kern/sparc64/cache.c. * conf/common.rmk (DISTCLEANFILES): Added grub_script.tab.c, grub_script.tab.h, grub_modules_init.lst, grub_modules_init.h, grub_emu_init.c. * configure.ac (AC_INIT): Bumped to 1.92. 2005-12-24 Vesa Jaaskelainen * kern/err.c (grub_error_push): Added new function to support error stacks. (grub_error_pop): Likewise. (grub_error_stack_items): New local variable to support error stacks. (grub_error_stack_pos): Likewise. (grub_error_stack_assert): Likewise. (GRUB_ERROR_STACK_SIZE): Added new define to configure maximum error stack depth. (grub_print_error): Added support to print errors from error stack. * include/grub/err.h (grub_error_push): Added function prototype. (grub_error_pop): Likewise. 2005-12-09 Hollis Blanchard * configure.ac: Accept `powerpc64' as host_cpu. (amd64): Rename to `biarch32'. * kern/powerpc/cache.S (grub_arch_sync_caches): Handle non-cacheline-aligned addresses. * kern/dl.c (grub_dl_load_core): Add grub_dprintf messages. (grub_dl_flush_cache): Likewise. Only call `grub_arch_sync_caches' if `size' is non-zero. 2005-12-03 Marco Gerards * conf/common.rmk (grub_modules_init.lst): Use `-printf "%P\n"' and `cd' to make sure the filename is not prefixed with a directory name. (pkgdata_MODULES): Add `gpt.mod'. (gpt_mod_SOURCES): New variable. (gpt_mod_CFLAGS): Likewise. (gpt_mod_LDFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `partmap/gpt.c'. * include/grub/pc_partition.h (GRUB_PC_PARTITION_TYPE_GPT_DISK): New macro. * partmap/gpt.c: New file. * partmap/pc.c (pc_partition_map_iterate): Don't continue when a GPT partition map is detected. 2005-12-03 Vincent Pelletier * commands/i386/pc/play.c: New file. * conf/i386-pc.rmk (pkgdata_MODULES): Added play.mod. (play_mod_SOURCES, play_mod_CFLAGS, play_mod_LDFLAGS): New macros. 2005-11-27 Marco Gerards * include/grub/dl.h (GRUB_MOD_INIT): Use `__attribute__ ((unused))' to silence gcc warning. 2005-11-26 Hollis Blanchard * configure.ac: Correct `AC_PROG_YACC' test. 2005-11-22 Hollis Blanchard * util/powerpc/ieee1275/grub-install.in: Run the mount point check before installing files. 2005-11-22 Mike Small * util/powerpc/ieee1275/grub-install.in (grubdir): Fixed partition number regex so multidigit numbers are recognized correctly. 2005-11-22 Mike Small * loader/powerpc/ieee1275/linux.c (grub_rescue_cmd_linux): Add a debugging message before attempting to claim memory. (grub_rescue_cmd_initrd): Add a claim debugging message and try multiple addresses in case of failure. 2005-11-22 Hollis Blanchard * term/tparm.c (get_space): Remove empty `if' statement. * fs/ufs.c (grub_ufs_find_file): Remove `grub_le_to_cpu32'. * kern/parser.c (check_varstate): Rename `state' to 's'. 2005-11-22 Hollis Blanchard * partmap/acorn.c: Change `unsigned' to `unsigned int'. Move all variable definitions to the beginning of each function. Sort stack variables by size. (find): Rename to `acorn_partition_map_find'. Cast `grub_disk_read' `buf' argument to `char *'. 2005-11-22 Hollis Blanchard * conf/powerpc-ieee1275.rmk: Include conf/common.mk. (pkgdata_MODULES): Removed fshelp.mod, fat.mod, ext2.mod, ufs.mod, minix.mod, hfs.mod, jfs.mod, xfs.mod, affs.mod, sfs.mod, hello.mod, boot.mod, terminal.mod, ls.mod, cmp.mod, cat.mod, help.mod, font.mod, terminfo.mod, amiga.mod, apple.mod, pc.mod, sun.mod, acorn.mod, loopback.mod, default.mod, timeout.mod, configfile.mod, search.mod, gzio.mod and test.mod. (symlist.c, grub_script.tab.c, grub_script.tab.h, kernel_syms.lst) (grub_modules_init.lst, grub_modules_init.h, grub_emu_init.c) (fshelp_mod_SOURCES, fshelp_mod_CFLAGS, fshelp_mod_LDFLAGS) (fat_mod_SOURCES, fat_mod_CFLAGS, fat_mod_LDFLAGS) (ext2_mod_SOURCES, ext2_mod_CFLAGS, ext2_mod_LDFLAGS) (ufs_mod_SOURCES, ufs_mod_CFLAGS, ufs_mod_LDFLAGS) (minix_mod_SOURCES, minix_mod_CFLAGS, minix_mod_LDFLAGS) (hfs_mod_SOURCES, hfs_mod_CFLAGS, hfs_mod_LDFLAGS, jfs_mod_SOURCES) (jfs_mod_CFLAGS, jfs_mod_LDFLAGS, iso9660_mod_SOURCES) (iso9660_mod_CFLAGS, iso9660_mod_LDFLAGS, xfs_mod_SOURCES) (xfs_mod_CFLAGS, xfs_mod_LDFLAGS, affs_mod_SOURCES) (affs_mod_CFLAGS, affs_mod_LDFLAGS, sfs_mod_SOURCES) (sfs_mod_CFLAGS, sfs_mod_LDFLAGS, hello_mod_SOURCES) (hello_mod_CFLAGS, hello_mod_LDFLAGS, boot_mod_SOURCES) (boot_mod_CFLAGS, boot_mod_LDFLAGS, terminal_mod_SOURCES) (terminal_mod_CFLAGS, terminal_mod_LDFLAGS, ls_mod_SOURCES) (ls_mod_CFLAGS, ls_mod_LDFLAGS, cmp_mod_SOURCES, cmp_mod_CFLAGS) (cmp_mod_LDFLAGS, cat_mod_SOURCES, cat_mod_CFLAGS, cat_mod_LDFLAGS) (help_mod_SOURCES, help_mod_CFLAGS, help_mod_LDFLAGS) (font_mod_SOURCES, font_mod_CFLAGS, font_mod_LDFLAGS) (terminfo_mod_SOURCES, terminfo_mod_CFLAGS, terminfo_mod_LDFLAGS) (amiga_mod_SOURCES, amiga_mod_CFLAGS, amiga_mod_LDFLAGS) (apple_mod_SOURCES, apple_mod_CFLAGS, apple_mod_LDFLAG): Removed. * conf/common.mk (grub_modules_init.lst): Use `find' instead of `grep --include'. (pkgdata_MODULES): Add test.mod. 2005-11-18 Timothy Baldwin * genmk.rb: Fixed list rules moved to Makefile.in. Recognise appending to variables with "+=". (PModule): Use full pathname to generate *.lst filenames. * Makefile.in: Fixed list rules moved from genmk.rb. (.DELETE_ON_ERROR): New special target. (RMKFILES): Add common.rmk and sparc64-ieee1275.rmk. * conf/i386-pc.rmk: Include conf/common.mk. (pkgdata_MODULES): Removed fshelp.mod, fat.mod, ext2.mod, ufs.mod, minix.mod, hfs.mod, jfs.mod, xfs.mod, affs.mod, sfs.mod, hello.mod, boot.mod, terminal.mod, ls.mod, cmp.mod, cat.mod, help.mod, font.mod, terminfo.mod, amiga.mod, apple.mod, pc.mod, sun.mod, acorn.mod, loopback.mod, default.mod, timeout.mod, configfile.mod, search.mod, gzio.mod and test.mod. (symlist.c, grub_script.tab.c, grub_script.tab.h, kernel_syms.lst) (grub_modules_init.lst, grub_modules_init.h, grub_emu_init.c) (fshelp_mod_SOURCES, fshelp_mod_CFLAGS, fshelp_mod_LDFLAGS) (fat_mod_SOURCES, fat_mod_CFLAGS, fat_mod_LDFLAGS) (ext2_mod_SOURCES, ext2_mod_CFLAGS, ext2_mod_LDFLAGS) (ufs_mod_SOURCES, ufs_mod_CFLAGS, ufs_mod_LDFLAGS) (minix_mod_SOURCES, minix_mod_CFLAGS, minix_mod_LDFLAGS) (hfs_mod_SOURCES, hfs_mod_CFLAGS, hfs_mod_LDFLAGS, jfs_mod_SOURCES) (jfs_mod_CFLAGS, jfs_mod_LDFLAGS, iso9660_mod_SOURCES) (iso9660_mod_CFLAGS, iso9660_mod_LDFLAGS, xfs_mod_SOURCES) (xfs_mod_CFLAGS, xfs_mod_LDFLAGS, affs_mod_SOURCES) (affs_mod_CFLAGS, affs_mod_LDFLAGS, sfs_mod_SOURCES) (sfs_mod_CFLAGS, sfs_mod_LDFLAGS, hello_mod_SOURCES) (hello_mod_CFLAGS, hello_mod_LDFLAGS, boot_mod_SOURCES) (boot_mod_CFLAGS, boot_mod_LDFLAGS, terminal_mod_SOURCES) (terminal_mod_CFLAGS, terminal_mod_LDFLAGS, ls_mod_SOURCES) (ls_mod_CFLAGS, ls_mod_LDFLAGS, cmp_mod_SOURCES, cmp_mod_CFLAGS) (cmp_mod_LDFLAGS, cat_mod_SOURCES, cat_mod_CFLAGS, cat_mod_LDFLAGS) (help_mod_SOURCES, help_mod_CFLAGS, help_mod_LDFLAGS) (font_mod_SOURCES, font_mod_CFLAGS, font_mod_LDFLAGS) (terminfo_mod_SOURCES, terminfo_mod_CFLAGS, terminfo_mod_LDFLAGS) (amiga_mod_SOURCES, amiga_mod_CFLAGS, amiga_mod_LDFLAGS) (apple_mod_SOURCES, apple_mod_CFLAGS, apple_mod_LDFLAG): Move from here... * conf/common.rmk: ... to here. New file. * conf/common.mk: New file. 2005-11-18 Yoshinori K. Okuji * conf/powerpc-ieee1275.rmk (grub_script.tab.h): Unified to ... (grub_script.tab.c): ... here. * conf/sparc64-ieee1275.rmk (grub_script.tab.h): Unified to ... (grub_script.tab.c): ... here. * conf/i386-pc.rmk (grub_script.tab.h): Unified to ... (grub_script.tab.c): ... here. * normal/command.c (grub_command_find): Fixed a memory leak of MODULE_NAME. Reported by Mike Small . 2005-11-13 Timothy Baldwin * include/grub/symbol.h: (FUNCTION): Use double quotes instead of "@" which marks the start of a comment on ARM. (VARIABLE): Likewise. 2005-11-13 Timothy Baldwin Add support for Linux/ADFS partition tables. * partmap/acorn.c: New file. * include/grub/acorn_filecore.h: Likewise. * DISTLIST: Added `partmap/acorn.c' and `include/grub/acorn_filecore.h'. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `partmap/acorn.c'. (pkgdata_MODULES): Add `acorn.mod'. (acorn_mod_SOURCES): New variable. (acorn_mod_CFLAGS): Likewise. * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Add `partmap/acorn.c'. (pkgdata_MODULES): Add `acorn.mod'. (acorn_mod_SOURCES): New variable. (acorn_mod_CFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `partmap/acorn.c'. (pkgdata_MODULES): Add `acorn.mod'. (acorn_mod_SOURCES): New variable. (acorn_mod_CFLAGS): Likewise. (acorn_mod_LDFLAGS): Likewise. * include/types.h (grub_disk_addr_t): New typedef. 2005-11-13 Marco Gerards * geninit.sh: New file. * geninitheader.sh: Likewise. * commands/boot.c (grub_boot_init, grub_boot_fini): Removed. * commands/cat.c (grub_cat_init, grub_cat_fini): Likewise. * commands/cmp.c (grub_cmp_init, grub_cmp_fini): Likewise. * commands/configfile.c (grub_configfile_init) (grub_configfile_fini): Likewise. * commands/default.c (grub_default_init, grub_default_fini): Likewise. * commands/help.c (grub_help_init, grub_help_fini): Likewise. * commands/ls.c (grub_ls_init, grub_ls_fini): Likewise. * commands/search.c (grub_search_init, grub_search_fini): Likewise. * commands/terminal.c (grub_terminal_init, grub_terminal_fini): Likewise. * commands/test.c (grub_test_init, grub_test_fini): Likewise. * commands/timeout.c (grub_timeout_init, grub_timeout_fini): Likewise. * commands/i386/pc/halt.c (grub_halt_init, grub_halt_fini): Likewise. * commands/ieee1275/halt.c (grub_halt_init, grub_halt_fini): Likewise. * commands/i386/pc/reboot.c (grub_reboot_init, grub_reboot_fini): Likewise. * commands/ieee1275/reboot.c (grub_reboot_init, grub_reboot_fini): Likewise. * disk/loopback.c (grub_loop_init, grub_loop_fini): Likewise. * fs/affs.c (grub_affs_init, grub_affs_fini): Likewise. * fs/ext2.c (grub_ext2_init, grub_ext2_fini): Likewise. * fs/fat.c (grub_fat_init, grub_fat_fini): Likewise. * fs/hfs.c (grub_hfs_init, grub_hfs_fini): Likewise. * fs/iso9660.c (grub_iso9660_init, grub_iso9660_fini): Likewise. * fs/jfs.c (grub_jfs_init, grub_jfs_fini): Likewise. * fs/minix.c (grub_minix_init, grub_minix_fini): Likewise. * fs/sfs.c (grub_sfs_init, grub_sfs_fini): Likewise. * fs/ufs.c (grub_ufs_init, grub_ufs_fini): Likewise. * fs/xfs.c (grub_xfs_init, grub_xfs_fini): Likewise. * normal/main.c (grub_normal_init, grub_normal_fini): Likewise. * partmap/amiga.c (grub_amiga_partition_map_init) (grub_amiga_partition_map_fini): Likewise. * partmap/apple.c (grub_apple_partition_map_init) (grub_apple_partition_map_fini): Likewise. * partmap/pc.c (grub_pc_partition_map_init) (grub_pc_partition_map_fini): Likewise. * partmap/sun.c (grub_sun_partition_map_init, grub_sun_partition_map_fini): Likewise. * term/terminfo.c (grub_terminal_init, grub_terminal_fini): Likewise. * util/grub-emu.c: Include . (main): Don't initialize and de-initialize any modules directly, use `grub_init_all' and `grub_fini_all' instead. * term/i386/pc/vesafb.c (grub_vesafb_init): Renamed to `grub_vesafb_mod_init'. (grub_vesafb_fini): Renamed to `grub_vesafb_mod_fini'. Updated all users. * term/i386/pc/vga.c (grub_vga_init): Renamed to `grub_vga_mod_init'. Updated all users. (grub_vga_fini): Renamed to `grub_vga_mod_fini'. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `grub_emu_init.c'. (grub_modules_init.lst, grub_modules_init.h, grub_emu_init.c): New rules. * include/grub/dl.h (GRUB_MOD_INIT): Add argument `name'. Generate a function to initialize the module in utilities. Updated all callers. (GRUB_MOD_FINI): Add argument `name'. Generate a function to initialize the module in utilities. Updated all callers. 2005-11-09 Hollis Blanchard * term/ieee1275/ofconsole.c (grub_ofconsole_cls): Use both the ANSI escape sequence and a literal ^L to clear the screen. * commands/ieee1275/suspend.c (grub_cmd_suspend): Clear the screen when returning from Open Firmware. 2005-11-09 Hollis Blanchard * term/ieee1275/ofconsole.c (grub_ofconsole_width): New variable. (grub_ofconsole_height): Likewise. (grub_ofconsole_putchar): If `grub_curr_x' exceeds console width, manually insert a '\n'. (grub_ofconsole_getwh): Set and return `grub_ofconsole_width' and `grub_ofconsole_height'. Return early if these are already set. 2005-11-07 Vincent Pelletier * conf/sparc64-ieee1275.rmk (grub_emu_SOURCES): Add `commands/test.c', `fs/affs.c', `fs/sfs.c', `fs/xfs.c', `normal/execute.c', `normal/lexer.c', `io/gzio.c', `kern/parser.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (normal_mod_SOURCES): `normal/execute.c', `normal/lexer.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (test_mod_SOURCES): New variable. (test_mod_CFLAGS): Likewise. (test_mod_LDFLAGS): Likewise. (pkgdata_MODULES): Add `test.mod'. (grub_script.tab.c): New rule. (grub_script.tab.h): Likewise. 2005-11-07 Marco Gerards * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `commands/test.c', `normal/execute.c', `normal/lexer.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (normal_mod_SOURCES): `normal/execute.c', `normal/lexer.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (test_mod_SOURCES): New variable. (test_mod_CFLAGS): Likewise. (pkgdata_MODULES): Add `test.mod'. (grub_script.tab.c): New rule. (grub_script.tab.h): Likewise. 2005-11-06 Marco Gerards Add initial scripting support. * commands/test.c: New file. * include/grub/script.h: Likewise. * normal/execute.c: Likewise. * normal/function.c: Likewise. * normal/lexer.c: Likewise. * normal/parser.y: Likewise. * normal/script.c: Likewise. * configure.ac: Add `AC_PROG_YACC' test. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `commands/test.c', `normal/execute.c', `normal/lexer.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (normal_mod_SOURCES): `normal/execute.c', `normal/lexer.c', `grub_script.tab.c', `normal/function.c' and `normal/script.c'. (test_mod_SOURCES, test_mod_CFLAGS, test_mod_LDFLAGS): New variables. (pkgdata_MODULES): Add `test.mod'. (grub_script.tab.c): New rule. (grub_script.tab.h): Likewise. * include/grub/err.h (grub_err_t): Add `GRUB_ERR_TEST_FAILURE'. * include/grub/normal.h (grub_test_init): New prototype. (grub_test_fini): Likewise. * normal/command.c: Include . (grub_command_execute): Rewritten. * util/grub-emu.c (main): Call `grub_test_init' and `grub_test_fini'. 2005-11-03 Hollis Blanchard * kern/powerpc/ieee1275/init.c (grub_get_rtc): Initialize `msecs' to 0. * term/ieee1275/ofconsole.c (grub_ofconsole_checkkey): Return -1 if there are no pending characters. 2005-11-03 Hollis Blanchard * kern/powerpc/ieee1275/openfw.c (grub_ieee1275_get_devname): Use `grub_strndup' to drop device arguments. Replace unnecessary `grub_strndup' with `grub_strdup'. 2005-11-03 Hollis Blanchard * kern/term.c (grub_cls): Do not call grub_cur_term->cls() if the `debug' environment variable has been set. 2005-11-02 Hollis Blanchard * Makefile.in (install-local): Use $(DATA). (uninstall): Likewise. * conf/powerpc-ieee1275.rmk (bin_UTILITIES): Move grub-mkimage... (sbin_UTILITIES): ... to here. (sbin_SCRIPTS): New variable. (grub_install_SOURCES): New variable. * util/powerpc/ieee1275/grub-install.in: New file. * util/powerpc/ieee1275/grub-mkimage.c (kernel_path): Remove variable. (add_segments): Call `grub_util_get_path'. 2005-10-28 Yoshinori K. Okuji From Timothy Baldwin: * commands/ls.c (grub_ls_list_files): Close FILE with grub_file_close. * kern/misc.c (grub_vsprintf): Terminate the string S with NUL. 2005-10-24 Marco Gerards * include/grub/parser.h: New file. * kern/parser.c: Likewise. * conf/i386-pc.rmk (kernel_img_SOURCES): Add `kern/parser.c'. (grub_setup_SOURCES): Likewise. (grub_probefs_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. (kernel_img_HEADERS): Add `parser.h'. * conf/powerpc-ieee1275.rmk (grubof_HEADERS): Add `parser.h'. (grub_emu_SOURCES): Add `kern/parser.c'. (grubof_SOURCES): Likewise. * conf/sparc64-ieee1275.rmk (grubof_HEADERS): Add `parser.h'. (grubof_SOURCES): Add `kern/parser.c'. * include/grub/misc.h (grub_split_cmdline): Removed prototype. * kern/misc.c (grub_split_cmdline): Removed function. * kern/rescue.c: Include . (grub_enter_rescue_mode): Use `grub_parser_split_cmdline' instead of `grub_split_cmdline'. * normal/command.c: Include . (grub_command_execute): Use `grub_parser_split_cmdline' instead of `grub_split_cmdline'. * normal/completion.c: Include . (cmdline_state): New variable. (iterate_dir): End the filename with a quote depending on the command line state. (get_state): new function. (grub_normal_do_completion): Use `grub_parser_split_cmdline' to split the arguments and determine the current argument. When the argument string is not quoted, escape all spaces. 2005-10-23 Vincent Pelletier * normal/sparc64/setjmp.S: New file. 2005-10-23 Vincent Pelletier * include/grub/sparc64/libgcc.h: New file. * conf/sparc64-ieee1275.rmk (COMMON_ASFLAGS): Remove -Av9. (normal_mod_SOURCES): Use normal/sparc64/setjmp.S instead of normal/sparc64/setjmp.c. 2005-10-23 Vincent Pelletier * kern/sparc64/dl.c: Rewritten for SPARCV9 ELF. * kern/sparc64/cache.S: New file. * kern/sparc64/cache.c: Removed. * conf/sparc64-ieee1275.rmk (COMMON_ASFLAGS): Add -Av9. (COMMON_CFLAGS): Add -mno-app-regs. Remove -mcpu=v9 and -mtune=ultrasparc. (COMMON_LDFLAGS): Add -melf64_sparc. (grubof_HEADERS): Add sparc64/libgcc.h and machine/kernel.h. (grubof_SOURCES): Use cache.S instead of cache.c. (grubof_LDFLAGS): Add -mno-app-regs. Replace "-Xlinker --oformat -Xlinker elf64-sparc" by "-Bstatic,-melf64_sparc". (pkgdata_MODULES): Uncomment. Leave linux.mod and _linux.mod commented though. (normal_mod_SOURCES): Add normal/completion.c and normal/misc.c. (_linux_mod_SOURCES, _linux_mod_CFLAGS, linux_mod_SOURCES) (linux_mod_CFLAGS): Commented out. (_linux_mod_LDFLAGS, linux_mod_LDFLAGS): New macro, commented out because module isn't built. (fshelp_mod_LDFLAGS, fat_mod_LDFLAGS, ext2_mod_LDFLAGS) (ufs_mod_LDFLAGS, minix_mod_LDFLAGS, hfs_mod_LDFLAGS) (jfs_mod_LDFLAGS, iso9660_mod_LDFLAGS, normal_mod_LDFLAGS) (hello_mod_LDFLAGS, boot_mod_LDFLAGS, terminal_mod_LDFLAGS) (ls_mod_LDFLAGS, cmp_mod_LDFLAGS, cat_mod_LDFLAGS) (font_mod_LDFLAGS, amiga_mod_LDFLAGS, apple_mod_LDFLAGS) (pc_mod_LDFLAGS, sun_mod_LDFLAGS, loopback_mod_LDFLAGS) (suspend_mod_LDFLAGS, reboot_mod_LDFLAGS, halt_mod_LDFLAGS) (help_mod_LDFLAGS, default_mod_LDFLAGS, timeout_mod_LDFLAGS) (configfile_mod_LDFLAGS, search_mod_LDFLAGS, xfs_mod_SOURCES) (xfs_mod_CFLAGS, xfs_mod_LDFLAGS, affs_mod_SOURCES) (affs_mod_CFLAGS, affs_mod_LDFLAGS, sfs_mod_SOURCES) (sfs_mod_CFLAGS, sfs_mod_LDFLAGS, gzio_mod_SOURCES) (gzio_mod_CFLAGS, gzio_mod_LDFLAGS): New macro. 2005-10-20 Yoshinori K. Okuji * util/i386/pc/grub-probefs.c (main): Call grub_xfs_init and grub_xfs_fini. Do not call grub_hfs_init or grub_hfs_fini any longer, because HFS should not be used on PC. 2005-10-20 Timothy Baldwin * io/gzio.c (grub_gzio_read): Use OFFSET instead of FILE->OFFSET consistently within the loop. 2005-10-15 Marco Gerards * fs/xfs.c (grub_xfs_iterate_dir): Detect an error if part of a directory can not be read. 2005-10-15 Yoshinori K. Okuji * configure.ac (AC_INIT): Increase the version number to 1.91. * DISTLIST: Added include/grub/terminfo.h, include/grub/tparm.h, include/grub/i386/pc/serial.h, term/terminfo.c, term/tparm.c and term/i386/pc/serial.c. 2005-10-15 Yoshinori K. Okuji * kern/file.c (grub_file_seek): Seeking to an offset equal to a file size must be permitted. * kern/i386/pc/startup.S (multiboot_trampoline): Fix a mistake between %ah and %al. 2005-10-15 Yoshinori K. Okuji * fs/xfs.c (grub_xfs_iterate_dir): Change the type of BLK to grub_uint64_t. Call the hook with a NUL-terminated filename. (grub_xfs_mount): Use grub_be_to_cpu32 instead of grub_cpu_to_be32. * kern/term.c (cursor_state): New variable. (grub_term_set_current): Reset the cursor state on a new terminal. (grub_setcursor): Rewritten to use CURSOR_STATE. (grub_getcursor): New function. * include/grub/term.h (grub_getcursor): New prototype. * io/gzio.c (test_header): Align BUF for accessing it as 32-bit integers on ARM. Reported by Timothy Baldwin . 2005-10-11 Marco Gerards * fs/sfs.c (grub_sfs_open): Don't free `data->label' if it is not allocated. (grub_sfs_dir): Likewise. 2005-10-09 Marco Gerards Add support for the SFS filesystem. * fs/sfs.c: New file. * DISTLIST: Added `fs/sfs.c'. * conf/i386-pc.rmk (grub_setup_SOURCES): Add `fs/sfs.c'. (grub_probefs_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add `sfs.mod'. (sfs_mod_SOURCES): New variable. (sfs_mod_CFLAGS): Likewise. (sfs_mod_LDFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `fs/sfs.c'. (pkgdata_MODULES): Add `sfs.mod'. (sfs_mod_SOURCES): New variable. (sfs_mod_CFLAGS): Likewise. * util/grub-emu.c (main): Call `grub_sfs_init' and `grub_sfs_fini'. * include/grub/fs.h (grub_sfs_init): New prototype. (grub_sfs_fini): Likewise. 2005-10-07 Marco Gerards Add support for the AFFS filesystem. * fs/affs.c: New file. * DISTLIST: Added `fs/affs.c'. * conf/i386-pc.rmk (grub_setup_SOURCES): Add `fs/affs.c'. (grub_probefs_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add `affs.mod'. (affs_mod_SOURCES): New variable. (affs_mod_CFLAGS): Likewise. (affs_mod_LDFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `fs/affs.c'. (pkgdata_MODULES): Add `affs.mod'. (affs_mod_SOURCES): New variable. (affs_mod_CFLAGS): Likewise. * util/grub-emu.c (main): Call `grub_affs_init' and `grub_affs_fini'. * include/grub/fs.h (grub_affs_init): New prototype. (grub_affs_fini): Likewise. 2005-10-01 Marco Gerards * fs/xfs.c (grub_xfs_iterate_dir): Add parentheses. 2005-10-01 Marco Gerards * configure.ac: Accept `x86_64' as host_cpu. In that case add `-m32' to CFLAGS. * genmk.rb (class PModule): Always use `$(#{prefix}_LDFLAGS)' when linking. * conf/i386-pc.rmk (COMMON_CFLAGS): Add `-m32'. (COMMON_LDFLAGS): New variable. (kernel_img_LDFLAGS): Include `COMMON_FLAGS'. (_chain_mod_LDFLAGS, fshelp_mod_LDFLAGS, fat_mod_LDFLAGS) (ext2_mod_LDFLAGS, ufs_mod_LDFLAGS, minix_mod_LDFLAGS) (hfs_mod_LDFLAGS, jfs_mod_LDFLAGS, iso9660_mod_LDFLAGS) (xfs_mod_LDFLAGS, _linux_mod_LDFLAGS, linux_mod_LDFLAGS) (normal_mod_LDFLAGS, hello_mod_LDFLAGS, boot_mod_LDFLAGS) (terminal_mod_LDFLAGS, ls_mod_LDFLAGS, cmp_mod_LDFLAGS) (cat_mod_LDFLAGS, help_mod_LDFLAGS, reboot_mod_LDFLAGS) (halt_mod_LDFLAGS, vga_mod_LDFLAGS, font_mod_LDFLAGS) (terminfo_mod_LDFLAGS, serial_mod_LDFLAGS, _multiboot_mod_LDFLAGS) (multiboot_mod_LDFLAGS, amiga_mod_LDFLAGS, apple_mod_LDFLAGS) (pc_mod_LDFLAGS, sun_mod_LDFLAGS, loopback_mod_LDFLAGS) (default_mod_LDFLAGS, timeout_mod_LDFLAGS, configfile_mod_LDFLAGS) (vbe_mod_LDFLAGS, vesafb_mod_LDFLAGS, vbeinfo_mod_LDFLAGS) (vbetest_mod_LDFLAGS, search_mod_LDFLAGS, gzio_mod_LDFLAGS): New variables. (normal_mod_ASFLAGS): Add `-m32'. * include/grub/types.h (grub_host_addr_t, grub_host_off_t) (grub_host_size_t, grub_host_ssize_t): New types. (grub_addr_t, grub_off_t, grub_size_t, grub_ssize_t): Make type dependent of `GRUB_CPU_SIZEOF_VOID_P' instead on `GRUB_HOST_SIZEOF_VOID_P'. * include/grub/kernel.h (struct grub_module_header): Type of member offset changed to `grub_host_off_t'. Type of member size changed to `grub_host_size_t'. (struct grub_module_info): Type of member offset changed to `grub_host_off_t'. Type of member size changed to `grub_host_size_t'. 2005-09-29 Yoshinori K. Okuji Make GRUB's kernel compliant to Multiboot Specification. * kern/i386/pc/startup.S (multiboot_header): New label. (multiboot_entry): Likewise. (multiboot_trampoline): Likewise. * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): Increased to 0x4A0. * fs/xfs.c (grub_xfs_iterate_dir): Fix a syntax error. You may not put parentheses after a question mark. [!GRUB_UTIL] (my_mod): New variable. * util/grub-emu.c (main): Call grub_xfs_init and grub_xfs_fini. 2005-09-28 Marco Gerards Adds support for the XFS filesystem. Btrees are not supported yet. * fs/xfs.c: New file. * DISTLIST: Added `fs/xfs.c'. * conf/i386-pc.rmk (grub_setup_SOURCES): Add `fs/xfs.c'. (grub_probefs_SOURCES): Likewise. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add `xfs.mod'. (xfs_mod_SOURCES): New variable. (xfs_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `fs/xfs.c'. (pkgdata_MODULES): Add `xfs.mod'. (xfs_mod_SOURCES): New variable. (xfs_mod_CFLAGS): Likewise. * util/grub-emu.c (main): Call `grub_xfs_init' and `grub_xfs_fini'. * include/grub/fs.h (grub_xfs_init): New prototype. (grub_xfs_fini): Likewise. 2005-09-18 Vesa Jaaskelainen * video/i386/pc/vbe.c (grub_vbe_set_video_mode): In indexed color modes, allow greater than 16 colors to be configured as a default palette. 2005-09-03 Yoshinori K. Okuji * normal/completion.c (complete_arguments): Add the qualifier const into OPTIONS. From Omniflux : * include/grub/terminfo.h: New file. * include/grub/tparm.h: Likewise. * include/grub/i386/pc/serial.h: Likewise. * term/terminfo.c: Likewise. * term/tparm.c: Likewise. * term/i386/pc/serial.c: Likewise. * conf/i386-pc.rmk (pkgdata_MODULES): Added terminfo.mod and serial.mod. (terminfo_mod_SOURCES): New variable. (terminfo_mod_CFLAGS): Likewise. (serial_mod_SOURCES): Likewise. (serial_mod_CFLAGS): Likewise. 2005-08-31 Yoshinori K. Okuji * DISTLIST: Replaced boot/powerpc/ieee1275/crt0.S and boot/powerpc/ieee1275/cmain.c with kern/powerpc/ieee1275/crt0.S and kern/powerpc/ieee1275/cmain.c, respectively. * boot/powerpc/ieee1275/crt0.S: Moved to ... * kern/powerpc/ieee1275/crt0.S: ... here. * boot/powerpc/ieee1275/cmain.c: Moved to ... * kern/powerpc/ieee1275/cmain.c: ... here. * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Use kern/powerpc/ieee1275/crt0.S and kern/powerpc/ieee1275/cmain.c instead of boot/powerpc/ieee1275/crt0.S and boot/powerpc/ieee1275/cmain.c, respectively. * boot/i386/pc/boot.S (lba_mode): Do not store the total number of sectors. It was not used anyway. 2005-08-30 Hollis Blanchard * term/ieee1275/ofconsole.c (grub_ofconsole_getcharwidth): Fix `unused parameter' warning. 2005-08-30 Hollis Blanchard * term/ieee1275/ofconsole.c (grub_ofconsole_getcharwidth): New function. (grub_ofconsole_term): Specify grub_ofconsole_getcharwidth as getcharwidth. 2005-08-28 Marco Gerards * include/grub/normal.h (enum grub_completion_type): Added `GRUB_COMPLETION_TYPE_ARGUMENT'. * normal/cmdline.c (print_completion): Handle the `GRUB_COMPLETION_TYPE_ARGUMENT' type. * normal/menu_entry.c (store_completion): Likewise. * normal/completion.c (complete_arguments): New function. (grub_normal_do_completion): Call `complete_arguments' when the current words start with a dash. 2005-08-27 Marco Gerards * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Fix typo (use `gzio.mod' instead of `io.mod'). 2005-08-22 Yoshinori K. Okuji * gendistlist.sh (EXTRA_DISTFILES): Added genfslist.sh. (DISTDIRS): Added io and video. Rewrite the search routine to make an output consistently. * DISTLIST: Added conf/sparc64-ieee1275.mk, conf/sparc64-ieee1275.rmk, include/grub/gzio.h, include/grub/ieee1275/ieee1275.h, include/grub/ieee1275/ofdisk.h, io/gzio.c, kern/sparc64/cache.c, kern/sparc64/dl.c, kern/sparc64/ieee1275/init.c, kern/sparc64/ieee1275/openfw.c and util/powerpc/ieee1275/misc.c. * include/grub/gzio.h: New file. * io/gzio.c: Likewise. * kern/file.c (grub_file_close): Call grub_device_close only if FILE->DEVICE is not NULL. * include/grub/mm.h [!NULL] (NULL): New macro. * include/grub/err.h (GRUB_ERR_BAD_GZIP_DATA): New constant. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Added io/gzip.c. (pkgdata_MODULES): Added gzio.mod. (gzio_mod_SOURCES): New variable. (gzio_mod_CFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Added io/gzip.c. (pkgdata_MODULES): Added gzio.mod. (gzio_mod_SOURCES): New variable. (gzio_mod_CFLAGS): Likewise. * commands/cat.c: Include grub/gzio.h. (grub_cmd_cat): Use grub_gzfile_open instead of grub_file_open. * commands/cmp.c: Include grub/gzio.h. (grub_cmd_cmp): Use grub_gzfile_open instead of grub_file_open. * loader/i386/pc/multiboot.c: Include grub/gzio.h. (grub_rescue_cmd_multiboot): Use grub_gzfile_open instead of grub_file_open. (grub_rescue_cmd_module): Likewise. 2005-08-21 Vincent Pelletier * conf/sparc64-ieee1275.rmk (grubof_SOURCES): The first file must be kern/sparc64/ieee1275/init.c because it contains _start. * conf/sparc64-ieee1275.mk: Generated from conf/sparc64-ieee1275.rmk. 2005-08-21 Vincent Pelletier * configure.ac: Add support for sparc64 host with ieee1275 firmware. * configure: Generated from configure.ac. * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Use grub_ssize_t instead of int. (grub_ofdisk_read): Likewise. (grub_ofdisk_open): Use %p to print pointer values, and cast the pointers as (void *) to remove a warning. (grub_ofdisk_close): Likewise. (grub_ofdisk_read): Likewise. * kern/ieee1275/ieee1275.c (grub_ieee1275_exit): This never returns, so make it return void to remove a warning. * include/grub/ieee1275/ieee1275.h (grub_ieee1275_exit): Corresponding prototype change. * kern/mm.c (grub_mm_init_region): Use %p to print pointer values, and cast the pointers as (void *) to remove a warning. (grub_mm_dump): Likewise. * conf/sparc64-ieee1275.mk: New file. * conf/sparc64-ieee1275.rmk: Likewise. * include/grub/sparc64/setjmp.h: Likewise. * include/grub/sparc64/types.h: Likewise. * include/grub/sparc64/ieee1275/console.h: Likewise. * include/grub/sparc64/ieee1275/ieee1275.h: Likewise. * include/grub/sparc64/ieee1275/kernel.h: Likewise. * include/grub/sparc64/ieee1275/time.h: Likewise. * kern/sparc64/cache.c: Likewise. * kern/sparc64/dl.c: Likewise. * kern/sparc64/ieee1275/init.c: Likewise. * kern/sparc64/ieee1275/openfw.c: Likewise. 2005-08-21 Yoshinori K. Okuji * util/console.c (grub_ncurses_putchar): If C is greater than 0x7f, set C to a question mark. (grub_ncurses_getcharwidth): New function. (grub_ncurses_term): Specify grub_ncurses_getcharwidth as getcharwidth. * normal/menu.c (print_entry): Made aware of Unicode. First, convert TITLE to UCS-4, and predict the cursor position by grub_getcharwidth. * include/grub/misc.h (grub_utf8_to_ucs4): Specify the qualifier const to SRC. * kern/misc.c (grub_utf16_to_utf8): Likewise. 2005-08-20 Yoshinori K. Okuji * loader/powerpc/ieee1275/linux.c (grub_rescue_cmd_linux): Specify the boot file by the option BOOT_IMAGE. Use grub_stpcpy instead of grub_strcat. * loader/i386/pc/linux.c (grub_rescue_cmd_linux): Specify the boot file by the option BOOT_IMAGE. Use grub_stpcpy instead of grub_strcpy and grub_strlen. Take it into account that a space character is inserted as a delimiter. 2005-08-20 Yoshinori K. Okuji * partmap/pc.c (pc_partition_map_iterate): Include the value of an invalid magic in the error. * commands/search.c: New file. * util/grub-emu.c (main): Call grub_search_init and grub_search_fini. * kern/rescue.c (grub_rescue_print_disks): Removed. (grub_rescue_print_devices): New function. (grub_rescue_cmd_ls): Use grub_device_iterate with grub_rescue_print_devices instead of grub_disk_dev_iterate with grub_rescue_print_disks. * kern/partition.c (grub_partition_iterate): Return the result of PARTMAP->ITERATE instead of GRUB_ERRNO. * kern/device.c: Include grub/partition.h. (grub_device_iterate): New function. * include/grub/partition.h (grub_partition_iterate): Return int instead of grub_err_t. * include/grub/normal.h [GRUB_UTIL] (grub_search_init): New prototype. [GRUB_UTIL] (grub_search_fini): Likewise. * include/grub/device.h (grub_device_iterate): New prototype. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Added commands/search.c. (pkgdata_MODULES): Added search.mod. (search_mod_SOURCES): New variable. (search_mod_CFLAGS): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Added commands/search.c. (pkgdata_MODULES): Added search.mod. (search_mod_SOURCES): New variable. (search_mod_CFLAGS): Likewise. * commands/ls.c (grub_ls_list_disks): Renamed to ... (grub_ls_list_devices): ... this, and use grub_device_iterate. All callers changed. * DISTLIST: Added commands/search.c. 2005-08-20 Yoshinori K. Okuji * kern/term.c (grub_putchar): Use grub_utf8_to_ucs4 for the conversion. (grub_getcharwidth): New function. * kern/misc.c (grub_utf8_to_ucs4): New function. * include/grub/term.h (struct grub_term): Added a new member "getcharwidth". (grub_getcharwidth): New prototype. * include/grub/misc.h (grub_utf8_to_ucs4): New prototype. * term/i386/pc/console.c (map_char): New function. Segregated from grub_console_putchar. (grub_console_putchar): Use map_char. (grub_console_getcharwidth): New function. (grub_console_term): Specified grub_console_getcharwidth as getcharwidth. * term/i386/pc/vga.c (grub_vga_getcharwidth): New function. (grub_vga_term): Specified grub_vga_getcharwidth as getcharwidth. * term/i386/pc/vesafb.c (grub_virtual_screen_setup): Return GRUB_ERRNO. (grub_vesafb_init): Do not use RC. Instead, use GRUB_ERRNO. Rely on grub_strtoul completely. (write_char): Declare local variables in the beginning of the function. (grub_vesafb_getcharwidth): New function. (grub_vesafb_term): Specified grub_vesafb_getcharwidth as getcharwidth. 2005-08-19 Yoshinori K. Okuji * DISTLIST: Replace commands/i386/pc/vbe_list_modes.c and commands/i386/pc/vbe_test.c with commands/i386/pc/vbeinfo.c and commands/i386/pc/vbetest.c. * video/i386/pc/vbe.c (grub_vbe_probe): If INFOBLOCK is not NULL, call grub_vbe_get_controller_info again, because the returned information is volatile. (grub_vbe_set_video_mode): Mostly rewritten. (grub_vbe_get_video_mode): Use grub_vbe_probe and use grub_vbe_status_t correctly. (grub_vbe_get_video_mode_info): Likewise. (grub_vbe_set_pixel_rgb): Use a switch statement rather than several if statements. * commands/i386/pc/vbe_list_modes.c: Renamed to ... * commands/i386/pc/vbeinfo.c: ... this. * commands/i386/pc/vbe_test.c: Renamed to ... * commands/i386/pc/vbetest.c: ... this. * commands/i386/pc/vbeinfo.c (grub_cmd_vbe_list_modes): Renamed to ... (grub_cmd_vbeinfo): ... this. Save video modes before iterating. Skip a video mode, if it is not available, not enough information is given or it is monochrome. Show the memory model. Leave the interpretation of MODEVAR to grub_strtoul completely. (GRUB_MOD_INIT): Rename vbe_list_modes to vbeinfo. (GRUB_MOD_FINI): Likewise. * commands/i386/pc/vbetest.c (grub_cmd_vbe_test): Renamed to ... (grub_cmd_vbetest): ... this. Don't print unnecessarily. Use grub_err_t instead of grub_uint32_t. Don't use SPTR. Remove a duplicated grub_env_get. Leave the interpretation of MODEVAR to grub_strtoul completely. (real2pm): Removed. (GRUB_MOD_INIT): Rename vbe_test to vbetest. (GRUB_MOD_FINI): Likewise. * normal/misc.c: Include grub/mm.h. * conf/i386-pc.rmk (pkgdata_MODULES): Replaced vbe_test.mod and vbe_list_modes with vbetest.mod and vbeinfo.mod. (vbe_list_modes_mod_SOURCES): Removed. (vbe_list_modes_mod_CFLAGS): Likewise. (vbe_test_mod_SOURCES): Likewise. (vbe_test_mod_CFLAGS): Likewise. (vbeinfo_mod_SOURCES): New variable. (vbeinfo_mod_CFLAGS): Likewise. (vbetest_mod_SOURCES): Likewise. (vbetest_mod_CFLAGS): Likewise. 2005-08-18 Yoshinori K. Okuji * normal/misc.c: New file. * DISTLIST: Added normal/misc.c. * partmap/amiga.c (amiga_partition_map_iterate): Add an argument DISK to HOOK. Call HOOK with DISK. * partmap/apple.c (apple_partition_map_iterate): Likewise. * partmap/pc.c (pc_partition_map_iterate): Likewise. * partmap/sun.c (sun_partition_map_iterate): Likewise. * normal/menu_entry.c (struct screen): Added a new member "completion_shown". (completion_buffer): New global variable. (make_screen): Set SCREEN->COMPLETION_SHOWN to zero. (store_completion): New function. (complete): Likewise. (clear_completions): Likewise. (grub_menu_entry_run): If SCREEN->COMPLETION_SHOWN is non-zero, call clear_completions and reset SCREEN->COMPLETION_SHOWN. If C is a tab, call complete. * normal/completion.c (disk_dev): Removed. (print_simple_completion): Likewise. (print_partition_completion): Likewise. (print_func): New global variable. (add_completion): Do not take the arguments WHAT or PRINT any longer. Added a new argument TYPE. Instead of printing directly, call PRINT_FUNC if not NULL. All callers changed. (complete_device): Use a local variable DEV instead of DISK_DEV. Do not move CURRENT_WORD to the end of a device name. (grub_normal_do_completion): Take a new argument HOOK. Do not initialize DISK_DEV. Initialize PRINT_FUNC to HOOK. If RET is an empty string, return NULL instead. All callers changed. * normal/cmdline.c (print_completion): New function. * kern/partition.c (grub_partition_iterate): Add an argument DISK to HOOK. All callers changed. * kern/disk.c (grub_print_partinfo): Removed. * include/grub/partition.h (struct grub_partition_map): Add a new argument DISK into HOOK of ITERATE. (grub_partition_iterate): Add a new argument DISK to HOOK. * include/grub/normal.h (enum grub_completion_type): New enum. (grub_completion_type_t): New type. (GRUB_COMPLETION_TYPE_COMMAND): New constant. (GRUB_COMPLETION_TYPE_DEVICE): Likewise. (GRUB_COMPLETION_TYPE_PARTITION): Likewise. (GRUB_COMPLETION_TYPE_FILE): Likewise. (grub_normal_do_completion): Added a new argument HOOK. (grub_normal_print_device_info): New prototype. * include/grub/disk.h (grub_print_partinfo): Removed. * conf/i386-pc.rmk (grub_emu_SOURCES): Added normal/misc.c. (normal_mod_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * commands/ls.c (grub_ls_list_disks): Use grub_normal_print_device_info instead of grub_print_partinfo. Free PNAME. (grub_ls_list_files): Use grub_normal_print_device_info instead of duplicating the code. 2005-08-16 Vesa Jaaskelainen * commands/i386/pc/vbe_list_modes.c: Update source formatting to follow GCS more precisely. * commands/i386/pc/vbe_test.c: Likewise. * include/grub/i386/pc/vbe.h: Likewise. * term/i386/pc/vesafb.c: Likewise. * video/i386/pc/vbe.c: Likewise. 2005-08-16 Vesa Jaaskelainen * DISTLIST: Added term/i386/pc/vesafb.c DISTLIST: Added video/i386/pc/vbe.c DISTLIST: Added commands/i386/pc/vbe_list_modes.c. DISTLIST: Added commands/i386/pc/vbe_test.c. * commands/i386/pc/vbe_list_modes.c: New file. * commands/i386/pc/vbe_test.c: Likewise. * term/i386/pc/vesafb.c: Likewise. * video/i386/pc/vbe.c: Likewise. * include/grub/i386/pc/vbe.h (GRUB_VBE_DEFAULT_VIDEO_MODE): Added define. (grub_vbe_probe) Added prototype. (grub_vbe_set_video_mode) Likewise. (grub_vbe_get_video_mode) Likewise. (grub_vbe_get_video_mode_info) Likewise. (grub_vbe_set_pixel_rgb) Likewise. (grub_vbe_set_pixel_index) Likewise. * conf/i386-pc.rmk (pkgdata_MODULES): Added vbe.mod. (pkgdata_MODULES): Added vesafb.mod. (pkgdata_MODULES): Added vbe_list_modes.mod. (pkgdata_MODULES): Added vbe_test.mod. (vbe_mod_SOURCES): Added. (vbe_mod_CFLAGS): Likewise. (vesafb_mod_SOURCES): Likewise. (vesafb_mod_CFLAGS): Likewise. (vbe_list_modes_mod_SOURCES): Likewise. (vbe_list_modes_mod_CFLAGS): Likewise. (vbe_test_mod_SOURCES): Likewise. (vbe_test_mod_CFLAGS): Likewise. 2005-08-14 Yoshinori K. Okuji * normal/command.c (grub_command_execute): If INTERACTIVE is false and GRUB_COMMAND_FLAG_NO_ECHO is not specified, print CMDLINE. Disable the pager if INTERACTIVE is true. All callers are changed. * normal/main.c (grub_normal_execute): Read command.lst and fs.lst before reading a config file. * normal/main.c (read_config_file): Even if a command is not found, register it if it is within an entry. * util/grub-emu.c: Include sys/types.h and unistd.h. (options): Added --hold. (struct arguments): Added a new member "hold". (parse_opt): If KEY is 'H', set ARGS->HOLD to ARG or -1 if ARG is missing. (main): Initialize ARGS.HOLD to zero. Wait until ARGS.HOLD is cleared by a debugger, if it is not zero. * include/grub/normal.h (grub_command_execute): Add an argument INTERACTIVE. 2005-08-14 Vesa Jaaskelainen * DISTLIST: Added include/grub/i386/pc/vbe.h. 2005-08-13 Yoshinori K. Okuji * aclocal.m4 (grub_I386_CHECK_REGPARM_BUG): Replace the test program with another one, because the old one didn't detect a bug in gcc-3.4. Always use regparm 2, because the new test is still not enough for gcc-4.0. Someone must investigate a simple test case which detects a bug in gcc-4.0. 2005-08-12 Yoshinori K. Okuji * DISTLIST: Added normal/completion.c. * normal/completion.c: New file. * term/i386/pc/console.c (grub_console_getwh): New function. (grub_console_term): Assign grub_console_getwh to getwh. * normal/cmdline.c (grub_tab_complete): Removed. Now the same function is defined in normal/completion.c as grub_normal_do_completion. (grub_cmdline_get): Use grub_normal_do_completion instead of grub_tab_complete. * kern/partition.c (grub_partition_map_iterate): Return 1 if HOOK returns non-zero, otherwise return 0. (grub_partition_iterate): First, probe the partition map. Then, call ITERATE only for this partition map. * kern/misc.c (grub_strncmp): Rewritten. * kern/disk.c (grub_disk_dev_iterate): Return 1 if P->ITERATE returns non-zero. Otherwise return 0. * include/grub/partition.h (grub_partition_map_iterate): Return int instead of void. * include/grub/normal.h (grub_normal_do_completion): New prototype. * include/grub/misc.h (grub_strncmp): Change the type of N to grub_size_t. * include/grub/disk.h (grub_disk_dev_iterate): Return int instead of void. * normal/menu.c (draw_border): Cast GRUB_TERM_BORDER_WIDTH to unsigned explicitly before comparing it with I. * kern/main.c (grub_env_write_root): Add the attribute unused into VAR. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Added normal/completion.c. (normal_mod_SOURCES): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. * normal/command.c (grub_iterate_commands): If ITERATE returns non-zero, return one immediately. 2005-08-09 Vesa Jaaskelainen * conf/i386-pc.rmk (kernel_img_HEADERS): Added machine/vbe.h. * kern/i386/pc/startup.S: Updated Global Descriptor table's descriptions. (grub_vbe_get_controller_info): New function. (grub_vbe_get_mode_info): Likewise. (grub_vbe_set_mode): Likewise. (grub_vbe_get_mode): Likewise. (grub_vbe_set_memory_window): Likewise. (grub_vbe_get_memory_window): Likewise. (grub_vbe_set_scanline_length): Likewise. (grub_vbe_get_scanline_length): Likewise. (grub_vbe_set_display_start): Likewise. (grub_vbe_get_display_start): Likewise. (grub_vbe_set_palette_data): Likewise. * include/grub/i386/pc/vbe.h: New file. 2005-08-08 Hollis Blanchard * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Replaced kern/ieee1275/of.c with kern/ieee1275/ieee1275.c. * DISTLIST: Likewise. * kern/ieee1275/of.c: Moved to ... * kern/ieee1275/ieee1275.c: ... here. 2005-08-08 Hollis Blanchard * term/ieee1275/ofconsole.c: Include . (grub_ofconsole_getwh): Cast -1 to type grub_ieee1275_ihandle_t. Pass 0 as `end' parameter to grub_strtoul(). 2005-08-08 Hollis Blanchard * include/grub/powerpc/ieee1275/console.h: Do not include . Do not include . Remove ASM_FILE ifdef. (grub_console_cur_color): Remove i386-specific prototype. (grub_console_real_putchar): Likewise. (grub_console_checkkey): Likewise. (grub_console_getkey): Likewise. (grub_console_getxy): Likewise. (grub_console_gotoxy): Likewise. (grub_console_cls): Likewise. (grub_console_setcursor): Likewise. * kern/powerpc/ieee1275/init.c: Don't include . Include . * term/ieee1275/ofconsole.c: Likewise. 2005-08-08 Yoshinori K. Okuji * Makefile.in (LIBLZO): New variable. * configure.ac: Check for LZO version 2. * util/i386/pc/grub-mkimage.c [HAVE_LZO_LZO1X_H]: Include lzo/lzo1x.h instead of lzo1x.h. * conf/i386-pc.rmk (grub_mkimage_LDFLAGS): Use $(LIBLZO) instead of -llzo. * util/i386/pc/grub-setup.c (main): Do not free PREFIX twice. Reported by Vladimir Serbinenko . * partmap/pc.c (pc_partition_map_probe): Restore P->DATA after copying the data from PARTITION to P. 2005-08-07 Yoshinori K. Okuji * kern/rescue.c (grub_rescue_cmd_rmmod): If the reference count is negative, unload the module. * util/i386/pc/grub-setup.c (setup): The name of the PC partition map is "pc_partition_map" but not "pc". (usage): Fix the description. The options are --boot-image and --core-image but not --boot-file or --core-file. (main): If not specified explicitly, make BOOT_FILE and CORE_FILE based on DEFAULT_BOOT_FILE and DEFAULT_CORE_FILE with DIR or DEFAULT_DIRECTORY. * util/i386/pc/grub-install.in: Do not specify --boot-file or --core-file. Specify INSTALL_DEVICE as an argument. * util/console.c: Include config.h. [HAVE_NCURSeS_CURSES_H]: Include ncurses/curses.h. [HAVE_NCURSES_H]: Include ncurses.h. [HAVE_CURSES_H]: Include curses.h. [!A_NORMAL] (A_NORMAL): Defined as zero. [!A_STANDOUT] (A_STANDOUT): Likewise. * conf/i386-pc.rmk (grub_emu_LDFLAGS): Use $(LIBCURSES) instead of -lncurses. * conf/powerpc-ieee1275.rmk (grub_emu_LDFLAGS): Likewise. * configure.ac: Check for curses libraries and headers. * Makefile.in (LIBCURSES): New variable. * genmk.rb (Script::rule): Set the executable bits. * util/i386/pc/biosdisk.c (grub_util_biosdisk_get_grub_dev): The name of the PC partition map is "pc_partition_map" but not "pc". 2005-08-07 Yoshinori K. Okuji * util/i386/pc/grub-install.in (grub_probefs): New variable. (modules): Likewise. (usage): Added descriptions for --modules and --grub-probefs. Handle --modules and --grub-probefs. Save the arguments in MODULES and GRUB_PROBEFS, respectively. Auto-detect a filesystem module against GRUBDIR. If the result is empty and modules are not specified explicitly, abort the installation. Add the result to MODULES. * DISTLIST: Removed boot/powerpc/ieee1275/ieee1275.c, disk/powerpc/ieee1275/ofdisk.c, include/grub/powerpc/ieee1275/init.h and term/powerpc/ieee1275/ofconsole.c. Added disk/ieee1275/ofdisk.c, kern/ieee1275/of.c and term/ieee1275/ofconsole.c. * include/grub/powerpc/ieee1275/console.h: Resurrected. * COPYING: Upgraded to the latest version. Only the address of the FSF office has changed. 2005-08-07 Yoshinori K. Okuji * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Replaced kern/ieee1275.c with kern/ieee1275/of.c. * kern/ieee1275.c: Moved to ... * kern/ieee1275/of.c: ... here. 2005-08-06 Yoshinori K. Okuji * conf/i386-pc.rmk (kernel_img_HEADERS): Reordered for readability. * config.guess: Updated to the latest version from gnulib. * config.sub: Likewise. * install.sh: Likewise. * mkinstalldirs: Likewise. * include/grub/console.h: Removed. This file is arch-specific. Do not put this in include/grub. * include/grub/i386/pc/console.h: Resurrected. * util/console.c: Include grub/machine/console.h instead of grub/console.h. * util/grub-emu.c: Likewise. 2005-08-04 Marco Gerards * kern/term.c (grub_putcode): Use `grub_getwh' instead of hardcoded value. From Vincent Pelletier * include/grub/term.h (GRUB_TERM_WIDTH, GRUB_TERM_HEIGHT): Redefined to use grub_getwh. (grub_term): New member named getwh. (grub_getwh): New prototype. * kern/term.c (grub_getwh): New function. * term/i386/pc/console.c (grub_console_getwh): New function. (grub_console_term): New member `getwh'. * term/i386/pc/vga.c (grub_vga_getwh): New function. (grub_vga_term): New member `getwh'. * term/ieee1275/ofconsole.c (grub_ofconsole_readkey): Use grub_ssize_t. (grub_ofconsole_getw): New function. (grub_ofconsole_init): Use grub_ssize_t and unsigned char. (grub_ofconsole_term): New field named getwh and new initial value. 2005-08-03 Hollis Blanchard * include/grub/powerpc/ieee1275/ieee1275.h: Move ... * include/grub/ieee1275/ieee1275.h: ... to here. All users updated. Move `abort', `grub_reboot', and `grub_halt' prototypes ... * include/grub/powerpc/ieee1275/kernel.h: ... to here. * commands/ieee1275/halt.c: Include instead of . * commands/ieee1275/reboot.c: Likewise. * boot/powerpc/ieee1275/ieee1275.c: Move ... * kern/ieee1275.c: ... to here. All users updated. Change all parameter structs to use new type `grub_ieee1275_cell_t'. * term/powerpc/ieee1275/ofconsole.c: Move ... * term/ieee1275/ofconsole.c: ... to here. All users updated. * disk/powerpc/ieee1275/ofdisk.c: Move ... * disk/ieee1275/ofdisk.c: ... to here. All users updated. * boot/powerpc/ieee1275/cmain.c: Change `grub_ieee1275_entry_fn' type to return int. * include/grub/i386/pc/console.h: Move to include/grub/console.h. Remove unused prototypes. All users updated. * include/grub/powerpc/ieee1275/console.h: Removed. * include/grub/powerpc/ieee1275/ieee1275.h: Define `grub_ieee1275_cell_t'. * kern/powerpc/ieee1275/openfw.c: Include . Cast comparisons with -1 to the correct type. * loader/powerpc/ieee1275/linux.c (kernel_entry_t): Change parameter type to match `grub_ieee1275_entry_fn'. 2005-08-01 Yoshinori K. Okuji * DISTLIST: Added util/i386/pc/grub-probefs.c. * conf/i386-pc.rmk (sbin_UTILITIES): Added grub-probefs. (grub_setup_SOURCES): Removed partmap/amiga.c, partmap/apple.c and partmap/sun.c. (grub_probefs_SOURCES): New variable. * util/i386/pc/grub-probefs.c: New file. * util/i386/pc/grub-setup.c (main): Call grub_pc_partition_map_init, grub_ufs_init, grub_minix_init, grub_hfs_init and grub_jfs_init to initialize the system. Call grub_ufs_fini, grub_minix_fini, grub_hfs_fini, grub_jfs_init and grub_pc_partition_map_fini to finish the system. 2005-07-31 Yoshinori K. Okuji * loader/i386/pc/multiboot.c (grub_multiboot_is_elf32): New function. (grub_multiboot_load_elf32): Likewise. (grub_multiboot_is_elf64): Likewise. (grub_multiboot_load_elf64): Likewise. (grub_multiboot_load_elf): Likewise. (grub_rescue_cmd_multiboot): Call grub_multiboot_load_elf to load an ELF32 or ELF64 file. This is based on a patch from Ruslan Nikolaev . From Serbinenko Vladimir : * kern/disk.c (grub_print_partinfo): Check if FS->LABEL is not NULL before calling FS->LABEL. * fs/fat.c (grub_fat_dir): Initialize DIRNAME to NULL. * commands/ls.c (grub_ls_list_files): Show labels, if possible. (grub_ls_list_disks): Check if FS and FS->LABEL are not NULL before calling FS->LABEL. 2005-07-26 Yoshinori K. Okuji * util/i386/pc/grub-install.in (datadir): New variable. (libdir): Removed. (pkgdatadir): New variable. (pkglibdir): Removed. 2005-07-24 Yoshinori K. Okuji * DISTLIST: Added util/i386/pc/grub-install.in. * util/i386/pc/grub-install.in: New file. * conf/i386-pc.rmk (sbin_SCRIPTS): New variable. (grub_install_SOURCES): Likewise. * genmk.rb: Added support for scripts. (Script): New class. (scripts): New variable. * Makefile.in (install-local): Install sbin_SCRIPTS by INSTALL_SCRIPT. (uninstall): Remove sbin_SCRIPTS. * util/i386/pc/grub-setup.c (main): If the argument is not a GRUB device, try to get a GRUB device by grub_util_biosdisk_get_grub_dev. Free DEST_DEV. * util/i386/pc/grub-mkdevicemap.c (usage): Remove a duplicated description for --device-map. 2005-07-20 Yoshinori K. Okuji Change the semantics of variable hooks. They now return strings instead of error values. * util/i386/pc/grub-setup.c: Include grub/env.h. (setup): Use grub_device_set_root instead of grub_env_set. * kern/rescue.c (grub_rescue_cmd_root): Use grub_env_set and grub_env_get instead of grub_device_set_root and grub_device_get_root, respectively. * kern/main.c (grub_env_write_root): New function. (grub_set_root_dev): Register grub_env_write_hook for "root". Use grub_env_set instead of grub_device_set_root. * kern/env.c (HASHSZ): Reduced to 13, because GRUB does not need many variables. (grub_env_set): Set ENV->VALUE to the result of ENV->WRITE_HOOK rather than calling ENV->WRITE_HOOK afterwards. (grub_env_get): Return the result of ENV->READ_HOOK rather than passing a pointer of a pointer. (grub_register_variable_hook): Change the types of "read_hook" and "write_hook" to grub_env_read_hook_t and grub_env_write_hook_t, respectively. Allocate the default empty string on the heap, because this string may be freed later. * kern/device.c: Include grub/env.h. (grub_device_set_root): Removed. (grub_device_get_root): Likewise. (grub_device_open): Use grub_env_get instead of grub_device_get_root. * include/grub/env.h (grub_env_read_hook_t): New type. (grub_env_write_hook_t): Likewise. (grub_env_var): Change the types of "read_hook" and "write_hook" to grub_env_read_hook_t and grub_env_write_hook_t, respectively. (grub_register_variable_hook): Likewise. * include/grub/device.h (grub_device_set_root): Removed. (grub_device_set_root): Likewise. * fs/fat.c (grub_fat_dir): Make a copy of PATH in DIRNAME, and make sure that DIRNAME terminates with '/', so that grub_fat_find_dir will fail if PATH is not a directory. * commands/ls.c (grub_ls_list_files): Remove the qualifier const from DIRNAME. Use the qualifier auto for print_files and print_files_long. If FS->DIR sets GRUB_ERRNO to GRUB_ERR_BAD_FILE_TYPE, try DIRNAME as a regular file. Put a newline only if there is no error. (grub_cmd_ls): Remove grub_ls_print_files, because this is not used. 2005-07-20 Yoshinori K. Okuji * kern/partition.c (grub_partition_probe): Initialize PART to NULL. Otherwise, when no partition map is registered, this returns a garbage. 2005-07-19 Yoshinori K. Okuji * partmap/apple.c (apple_partition_map_iterate): Check if POS equals GRUB_DISK_SECTOR_SIZE to see if the partition table is valid. 2005-07-18 Yoshinori K. Okuji * commands/ls.c (grub_ls_list_disks): Print the filesystem information on each device, if it does not have partitions. Print "Device" instead of "Disk", because this function is not specific to disk devices. * normal/main.c (grub_rescue_cmd_normal): Make the variable CONFIG static to ensure that it is put on the memory rather than a register. 2005-07-17 Yoshinori Okuji * commands/cat.c (GRUB_MOD_INIT): Use better documentation. (grub_cat_init): Likewise. * loader/i386/pc/chainloader_normal.c (GRUB_MOD_INIT): Likewise. (options): Likewise. * commands/configfile.c (GRUB_MOD_INIT): Likewise. (grub_configfile_init): Likewise. * font/manager.c (GRUB_MOD_INIT): Likewise. * commands/help.c (GRUB_MOD_INIT): Likewise. (grub_help_init): Likewise. * normal/command.c (grub_command_init): Likewise. * loader/i386/pc/linux_normal.c (GRUB_MOD_INIT): Likewise. * disk/loopback.c (grub_loop_init): Likewise. (GRUB_MOD_INIT): Likewise. * commands/ls.c (grub_ls_init): Likewise. (GRUB_MOD_INIT): Likewise. (options): Likewise. * commands/boot.c (grub_boot_init): Likewise. (GRUB_MOD_INIT): Likewise. * loader/i386/pc/multiboot_normal.c (GRUB_MOD_INIT): Likewise. * commands/i386/pc/reboot.c (grub_reboot_init): Likewise. (GRUB_MOD_INIT): Likewise. * commands/cmp.c (grub_cmp_init): Likewise. (GRUB_MOD_INIT): Likewise. * normal/arg.c: Use <> instead of "" to include header files. (SHORT_ARG_HELP): New macro. (SHORT_ARG_USAGE): Likewise. (help_options): Specify SHORT_ARG_HELP and SHORT_ARG_USAGE instead of 'h' and 'u' for help and usage, respectively. Use more GNU-like descriptions. (find_short): Check if C is 'h' or 'u' explicitly. (grub_arg_show_help): Use space characters instead of tabs. Treat SHORT_ARG_HELP and SHORT_ARG_USAGE exceptionally so that -h and -u are shown with --help and --usage only if they are not used for the command itself. (parse_option): Use SHORT_ARG_HELP and SHORT_ARG_USAGE instead of 'h' and 'u'. * include/grub/arg.h (struct grub_arg_option): Add the qualifier const into "longarg". Change the type of "shortarg" to int. 2005-07-17 Yoshinori Okuji * boot/i386/pc/boot.S (boot_drive_check): New label. * include/grub/i386/pc/boot.h (GRUB_BOOT_MACHINE_DRIVE_CHECK): New macro. * util/i386/pc/grub-setup.c (setup): Added a workaround for BIOSes which do not pass a boot drive correctly. Copied from GRUB Legacy. 2005-07-17 Yoshinori Okuji * kern/i386/pc/startup.S (gate_a20_try_system_control_port_a): When turning off Gate A20, skip the check and return immediately, because this is not fatal usually. 2005-07-17 Yoshinori Okuji * conf/i386-pc.rmk (pxeboot_img_LDFLAGS): The text address should be 0x7C00 instead of 0x8000. * boot/i386/pc/pxeboot.S: Rewritten. * kern/i386/pc/startup.S (gate_a20_try_bios): No need to specify EXT_C. (gate_a20_check_state): Read a byte from 0x108000. Invert the result. 2005-07-16 Yoshinori K. Okuji * kern/i386/pc/startup.S (grub_gate_a20): Rewritten for robustness. This routine now supports a BIOS call and System Control Port A to modify the gate A20. * include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): Increased to 0x440. 2005-07-12 Hollis Blanchard * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_open): dprintf the device path and resulting ihandle. (grub_ofdisk_close): dprintf the ihandle being closed. (grub_ofdisk_read): dprintf function parameters. * kern/mm.c (grub_mm_init_region): Likewise. * loader/powerpc/ieee1275/linux.c: Remove extra whitespace. (grub_linux_boot): dprintf the Linux entry point, initrd address and size, and boot arguments. (grub_rescue_cmd_linux): dprintf each ELF segment's address and size before loading into memory. (grub_rescue_cmd_initrd): dprintf the initrd's address and size before loading into memory. 2005-07-12 Yoshinori K. Okuji * kern/mm.c: Added much documentation. (GRUB_MM_ALIGN_LOG2): When GRUB_CPU_SIZEOF_VOID_P is 8, set to 5 instead of 8. 2005-07-10 Yoshinori Okuji * DISTLIST: Added util/i386/pc/grub-mkimage.c. * conf/i386-pc.rmk (sbin_UTILITIES): Added grub-mkdevicemap. (grub_mkdevicemap_SOURCES): New variable. * util/i386/pc/grub-mkdevicemap.c: New file. Mostly copied from lib/device.c of GRUB Legacy. 2005-07-10 Yoshinori Okuji * commands/ls.c (grub_ls_list_files): Check if *PATH is NUL instead of PATH is NULL. 2005-07-09 Vincent Pelletier * commands/cmp.c (BUFFER_SIZE): New macro. (grub_cmd_cmp): Close the right file at the right time. Compare only data just read. Don't report files of different size as identical. Dynamically allocate buffers. Move variable declarations at the beginning of function. 2005-07-09 Yoshinori Okuji * aclocal.m4 (grub_I386_CHECK_REGPARM_BUG): The return value was reverse. 2004-07-04 Vincent Pelletier * normal/cmdline.c (grub_cmdline_get): Don't fallback on ctrl-d when backspace is pressed at beginning of line. 2005-07-03 Yoshinori Okuji * DISTLIST: Added genfslist.sh. * normal/main.c (fs_module_list): New variable. (autoload_fs_module): New function. (read_fs_list): Likewise. (grub_normal_execute): Call read_fs_list. * kern/fs.c (grub_fs_autoload_hook): New variable. (grub_fs_probe): Added support for auto-loading. * include/grub/normal.h (struct grub_fs_module_list): New struct. (grub_fs_module_list_t): New type. * include/grub/fs.h (grub_fs_autoload_hook_t): New type. (grub_fs_autoload_hook): New prototype. * genfslist.sh: New file. * genmk.rb: Added a rule to generate a filesystem list. 2005-06-30 Marco Gerards * configure.ac: Fix the test for cross-compiling. * genmk.rb (Program): Use `$(CC)' instead of `$(BUILD_CC)'. Don't define GRUB_UTIL anymore. * util/powerpc/ieee1275/grub-mkimage.c (load_note): Endian fixes so this function works on other systems than just big endian. (load_modules): Likewise. (add_segments): Likewise. 2005-06-23 Hollis Blanchard * kern/misc.c (grub_vsprintf): Add `longfmt'. If format string contains `l' modifier, get a long from va_arg(). 2005-06-23 Yoshinori K. Okuji * kern/mm.c (grub_free): If the next free block which is being merged is the first free block, set the first block to the block being freed. Reported by Vincent Guffens . 2005-05-08 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (cmain): Initialize `grub_ieee1275_chosen'. 2005-05-08 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (module_info): Remove definition. (grub_ieee1275_chosen): New variable. (cmain): Initialize and use `grub_ieee1275_chosen' instead of `chosen'. * boot/powerpc/ieee1275/crt0.S (init_stack): Remove stack space. * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_get_property): Rename first argument to `phandle' for consistency. (grub_ieee1275_get_property_length): Likewise. (grub_ieee1275_next_property): Likewise. Change type of first argument to grub_ieee1275_phandle_t. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_entry_fn): Move export next to declaration. (grub_ieee1275_chosen): New variable. * include/grub/powerpc/ieee1275/kernel.h (GRUB_IEEE1275_MODULE_BASE): Correct cosmetic typo. * kern/powerpc/ieee1275/init.c (grub_set_prefix): Use `grub_ieee1275_chosen'. * kern/powerpc/ieee1275/openfw.c (grub_map): Likewise. * loader/powerpc/ieee1275/linux.c (grub_linux_boot): Likewise. (grub_rescue_cmd_linux): Set `initrd_addr' to 0. * term/powerpc/ieee1275/ofconsole.c (grub_ofconsole_refresh): Use `grub_ieee1275_chosen'. 2005-05-10 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (cmain): Remove code to parse /chosen/bootargs. * kern/powerpc/ieee1275/init.c (grub_machine_init): Parse /chosen/bootargs as "variable=value" pairs. 2005-05-08 Vincent Pelletier * include/grub/misc.h (grub_dprintf): New macro. (grub_real_dprintf): New prototype. (grub_strword): Likewise. (grub_iswordseparator): Likewise. * kern/misc.c (grub_real_dprintf): New function. (grub_strword): Likewise. (grub_iswordseparator): Likewise. 2005-04-30 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c: Don't include grub/machine/init.h. (roundup): Remove macro. (grub_ieee1275_flags): Make static. (grub_ieee1275_realmode): Remove. (grub_ieee1275_test_flag): New function. (grub_ieee1275_set_flag): Likewise. (find_options): Rename to `grub_ieee1275_find_options'; update callers. Set GRUB_IEEE1275_FLAG_REAL_MODE and GRUB_IEEE1275_FLAG_0_BASED_PARTITIONS. (cmain): New prototype. (cmain): Use `grub_ieee1275_set_flag' instead of accessing `grub_ieee1275_flags' directly. * conf/powerpc-ieee1275.rmk (grubof_HEADERS): Remove machine/biosdisk.h. * disk/powerpc/ieee1275/ofdisk.c: Include grub/machine/ofdisk.h. Don't include grub/machine/init.h. (grub_ofdisk_open): Call `grub_ieee1275_test_flag'. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_flags): Remove prototype. (grub_ieee1275_realmode): Likewise. (grub_ieee1275_flag): New enum. (grub_ieee1275_test_flag): New prototype. (grub_ieee1275_set_flag): New prototype. * include/grub/powerpc/ieee1275/init.h: Remove file. * include/grub/powerpc/ieee1275/ofdisk.h: New file. * kern/powerpc/ieee1275/init.c: Don't include grub/machine/init.h. Include grub/machine/console.h. Include grub/machine/ofdisk.h. (grub_machine_fini): Don't call `grub_ieee1275_release'. Remove comment. * kern/powerpc/ieee1275/openfw.c (grub_claimmap): Call `grub_ieee1275_test_flag'. (grub_ieee1275_encode_devname): Likewise. 2005-04-21 Hollis Blanchard * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_encode_devname): New prototype. (grub_ieee1275_get_filename): Likewise. * kern/powerpc/ieee1275/init.c (grub_translate_ieee175_path): New function. (grub_set_prefix): Likewise. (grub_machine_init): Call grub_set_prefix. * kern/powerpc/ieee1275/openfw.c: Fix typos. (grub_parse_type): New enum. (grub_ieee1275_get_devargs): New function. (grub_ieee1275_get_devname): Likewise. (grub_ieee1275_parse_args): Likewise. (grub_ieee1275_get_filename): Likewise. (grub_ieee1275_encode_devname): Likewise. 2005-03-30 Marco Gerards * kern/powerpc/ieee1275/init.c (grub_machine_fini): Don't call `grub_loader_unset'. 2005-03-26 Hollis Blanchard * commands/ieee1275/halt.c (grub_cmd_halt): Call grub_halt instead of grub_ieee1275_interpret. (grub_halt_init): New function. (grub_halt_fini): Likewise. (GRUB_MOD_INIT): Correct message grammar. * commands/ieee1275/reboot.c (grub_cmd_reboot): Call grub_reboot instead of grub_ieee1275_interpret. (grub_reboot_init): New function. (grub_reboot_fini): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Replace commands/i386/pc/halt.c, commands/i386/pc/reboot.c, and util/i386/pc/misc.c with commands/ieee1275/halt.c, commands/ieee1275/reboot.c, and util/powerpc/ieee1275/misc.c. * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_fini): New function. * include/grub/powerpc/ieee1275/console.h (grub_console_fini): Add prototype. * include/grub/powerpc/ieee1275/ieee1275.h (grub_reboot): Add prototype. (grub_halt): Likewise. * include/grub/powerpc/ieee1275/init.h: Remove inaccurate comment. (cmain): Remove __attribute__((unused)). * kern/powerpc/ieee1275/init.c (grub_heap_start): New variable. (grub_heap_len): Likewise. (grub_machine_fini): New function. * kern/powerpc/ieee1275/openfw.c (grub_reboot): New function. (grub_halt): Likewise. * term/powerpc/ieee1275/ofconsole.c (grub_console_fini): New function. * util/powerpc/ieee1275/misc.c: New file. 2005-03-19 Yoshinori K. Okuji * DISTLIST: New file. * gendistlist.sh: Likewise. * Makefile.in (COMMON_DISTFILES): Removed. (BOOT_DISTFILES): Likewise. (CONF_DISTFILES): Likewise. (DISK_DISTFILES): Likewise. (FS_DISTFILES): Likewise. (INCLUDE_DISTFILES): Likewise. (KERN_DISTFILES): Likewise. (LOADER_DISTFILES): Likewise. (TERM_DISTFILES): Likewise. (UTIL_DISTFILES): Likewise. (DISTFILES): Likewise. (uninstall): Uninstall files in $(pkgdata_DATA). (DISTLIST): New target. (distdir): Use the contents of the file DISTLIST to get a list of distributed files. 2005-03-18 Yoshinori K. Okuji * fs/fat.c (grub_fat_mount): Ignore the 3rd bit of a media descriptor. This is ported from GRUB Legacy. * gencmdlist.sh: Added an extra semicolon to make it work with old sed versions. Reported by Robert Bihlmeyer . 2005-03-08 Yoshinori Okuji Automatic loading of commands is supported. * normal/main.c (read_command_list): New function. (grub_normal_execute): Call read_command_list. * normal/command.c (grub_register_command): Return zero or CMD. Allocate CMD->NAME from the heap. Initialize CMD->MODULE_NAME to zero. Find the same name as well. If the same command is found and it is a dummy command, overwrite members. If it is not a dummy command, return zero. (grub_unregister_command): Free Q->NAME and Q->MODULE_NAME. (grub_command_find): If a dummy command is found, load a module and retry to find a command only once. * normal/cmdline.c (grub_tab_complete): Call grub_command_find to make sure that each command is loaded. * include/grub/normal.h (GRUB_COMMAND_FLAG_NOT_LOADED): New macro. (struct grub_command): Remove const from the member `name'. Add a new member `module_name'. (grub_register_command): Return grub_command_t. * commands/help.c (grub_cmd_help): Call grub_command_find to make sure that each command is loaded. * genmk.rb (PModule::rule): Specify a module name without the suffix ".mod" to gencmdlist.sh. 2005-03-02 Yoshinori K. Okuji * gencmdlist.sh: New file. * genmk.rb (PModule::rule): Generate a rule for a command list. Clean command.lst. Generate command.lst from $(COMMANDFILES). * Makefile.in (COMMON_DISTFILES): Added gencmdlist.sh. (DATA): Added $(pkgdata_DATA). (install-local): Install files in $(pkgdata_DATA). 2005-03-02 Yoshinori K. Okuji * term/i386/pc/vga.c (debug_command): Removed. (GRUB_MOD_INIT): Do not register the command "debug". From Hollis Blanchard: * commands/configfile.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Added commands/configfile.c. (pkgdata_MODULES): Added configfile.mod. (configfile_mod_SOURCES): New variable. (configfile_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Added commands/configfile.c. (pkgdata_MODULES): Added configfile.mod. (configfile_mod_SOURCES): New variable. (configfile_mod_CFLAGS): Likewise. * util/grub-emu.c (main): Call grub_configfile_init and grub_configfile_fini. * include/grub/normal.h [GRUB_UTIL] (grub_configfile_init): New prototype. [GRUB_UTIL] (grub_configfile_fini): Likewise. 2005-02-27 Yoshinori K. Okuji * normal/arg.c (grub_arg_show_help): Do not show the bug report address. * commands/help.c (grub_cmd_help): Do not print newlines after the last command in print_command_help. 2005-02-27 Yoshinori K. Okuji * commands/default.h: New file. * commands/timeout.h: Likewise. * normal/context.c: Likewise. * util/misc.c: Do not include sys/times.h. Include sys/time.h and grub/machine/time.h. (grub_get_rtc): Rewritten with gettimeofday. * util/grub-emu.c (main): Call grub_default_init and grub_timeout_init before grub_normal_init, and call grub_timeout_fini and grub_default_fini after grub_main. * util/console.c (grub_ncurses_checkkey): Return the read character or -1. * normal/menu.c (run_menu): Set MENU->TIMEOUT to -1 once it timeouts. * normal/main.c (read_config_file): Push MENU. If this fails, print an error and wait for a user input. Print an error only if GRUB_ERRNO is not GRUB_ERR_NONE. If a menu is empty or an error occurs, pop MENU. (grub_normal_execute): Pop and free MENU after grub_menu_run returns. * kern/loader.c (grub_loader_boot): Call grub_machine_fini. * include/grub/powerpc/ieee1275/time.h [GRUB_UTIL]: Do not include time.h. [GRUB_UTIL] (GRUB_TICKS_PER_SECOND): Use the same definition as without GRUB_UTIL. * include/grub/i386/pc/time.h [GRUB_UTIL]: Do not include time.h. [GRUB_UTIL] (GRUB_TICKS_PER_SECOND): Use the same definition as without GRUB_UTIL. * include/grub/normal.h (struct grub_menu_list): New struct. (grub_menu_list_t): New type. (struct grub_context): New struct. (grub_context_t): New type. (grub_register_command): Got rid of EXPORT_FUNC. (grub_unregister_command): Likewise. (grub_context_get): New prototype. (grub_context_get_current_menu): Likewise. (grub_context_push_menu): Likewise. (grub_context_pop_menu): Likewise. [GRUB_UTIL] (grub_default_init): Likewise. [GRUB_UTIL] (grub_default_fini): Likewise. [GRUB_UTIL] (grub_timeout_init): Likewise. [GRUB_UTIL] (grub_timeout_fini): Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Added commands/default.c, commands/timeout.c and normal/context.c. (pkgdata_MODULES): Added default.mod and timeout.mod. (normal_mod_SOURCES): Added normal/context.c. (default_mod_SOURCES): New variable. (default_mod_CFLAGS): Likewise. (timeout_mod_SOURCES): Likewise. (timeout_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Copied from conf/i386-pc.rmk. (pkgdata_MODULES): Added default.mod and timeout.mod. (normal_mod_SOURCES): Added normal/context.c. (default_mod_SOURCES): New variable. (default_mod_CFLAGS): Likewise. (timeout_mod_SOURCES): Likewise. (timeout_mod_CFLAGS): Likewise. * Makefile.in (all-local): Added $(MKFILES). 2005-02-21 Vincent Pelletier * conf/i386-pc.rmk (grub_setup_SOURCES): Add `partmap/sun.c'. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add `sun.mod'. (sun_mod_SOURCES, sun_mod_CFLAGS): New variables. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `partmap/sun.c'. (pkgdata_MODULES): Add `sun.mod'. (sun_mod_SOURCES, sun_mod_CFLAGS): New variables. * include/grub/partition.h (grub_sun_partition_map_init): New prototype. (grub_sun_partition_map_fini): Likewise. * partmap/sun.c: New file. * util/grub-emu.c (main): Initialize and de-initialize the sun partitionmap support. 2005-02-19 Yoshinori K. Okuji This implements an Emacs-like menu entry editor. * normal/menu_entry.c: New file. * util/console.c (grub_ncurses_putchar): Translate some Unicode characters to ASCII. (saved_char): New variable. (grub_ncurses_checkkey): Rewritten completely. (grub_ncurses_getkey): Likewise. (grub_ncurses_init): Call raw instead of cbreak. * normal/menu.c (print_entry): Do not put a space. (init_page): Renamed to ... (grub_menu_init_page): ... this. All callers changed. (edit_menu_entry): Removed. (run_menu): Call grub_menu_entry_run instead of edit_menu_entry. * normal/cmdline.c (grub_cmdline_run): Call grub_setcursor. * kern/misc.c (grub_vprintf): Call grub_refresh. * normal/menu.c (DISP_LEFT): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_LEFT): ... this. * normal/menu.c (DISP_UP): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_UP): ... this. * normal/menu.c (DISP_RIGHT): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_RIGHT): ... this. * normal/menu.c (DISP_DOWN): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_DOWN): ... this. * normal/menu.c (DISP_HLINE): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_HLINE): ... this. * normal/menu.c (DISP_VLINE): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_VLINE): ... this. * normal/menu.c (DISP_UL): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_UL): ... this. * normal/menu.c (DISP_UR): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_UR): ... this. * normal/menu.c (DISP_LL): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_LL): ... this. * normal/menu.c (DISP_LR): Renamed to ... * include/grub/term.h (GRUB_TERM_DISP_LR): ... this. * normal/menu.c (TERM_WIDTH): Renamed to ... * include/grub/term.h (GRUB_TERM_WIDTH): ... this. * normal/menu.c (TERM_HEIGHT): Renamed to ... * include/grub/term.h (GRUB_TERM_HEIGHT): ... this. * normal/menu.c (TERM_INFO_HEIGHT): Renamed to ... * include/grub/term.h (GRUB_TERM_INFO_HEIGHT): ... this. * normal/menu.c (TERM_MARGIN): Renamed to ... * include/grub/term.h (GRUB_TERM_MARGIN): ... this. * normal/menu.c (TERM_SCROLL_WIDTH): Renamed to ... * include/grub/term.h (GRUB_TERM_SCROLL_WIDTH): ... this. * normal/menu.c (TERM_TOP_BORDER_Y): Renamed to ... * include/grub/term.h (GRUB_TERM_TOP_BORDER_Y): ... this. * normal/menu.c (TERM_LEFT_BORDER_X): Renamed to ... * include/grub/term.h (GRUB_TERM_LEFT_BORDER_X): ... this. * normal/menu.c (TERM_BORDER_WIDTH): Renamed to ... * include/grub/term.h (GRUB_TERM_BORDER_WIDTH): ... this. * normal/menu.c (TERM_MESSAGE_HEIGHT): Renamed to ... * include/grub/term.h (GRUB_TERM_MESSAGE_HEIGHT): ... this. * normal/menu.c (TERM_BORDER_HEIGHT): Renamed to ... * include/grub/term.h (GRUB_TERM_BORDER_HEIGHT): ... this. * normal/menu.c (TERM_NUM_ENTRIES): Renamed to ... * include/grub/term.h (GRUB_TERM_NUM_ENTRIES): ... this. * normal/menu.c (TERM_FIRST_ENTRY_Y): Renamed to ... * include/grub/term.h (GRUB_TERM_FIRST_ENTRY_Y): ... this. * normal/menu.c (TERM_ENTRY_WIDTH): Renamed to ... * include/grub/term.h (GRUB_TERM_ENTRY_WIDTH): ... this. * normal/menu.c (TERM_CURSOR_X): Renamed to ... * include/grub/term.h (GRUB_TERM_CURSOR_X): ... this. All callers changed. * include/grub/normal.h: New prototype. * conf/i386-pc.rmk (grub_emu_SOURCES): Added normal/menu_entry.c. (normal_mod_SOURCES): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Likewise. (normal_mod_SOURCES): Likewise. 2005-02-15 Yoshinori K. Okuji * include/grub/normal.h (grub_halt_init): New prototype. (grub_halt_fini): Likewise. (grub_reboot_init): Likewise. (grub_reboot_fini): Likewise. * util/grub-emu.c: Include signal.h. (main_env): New global variable. (grub_machine_init): Ignore SIGINT. Otherwise grub-emu cannot catch C-c. (grub_machine_fini): New function. (main): Call grub_halt_init and grub_reboot_init before grub_main, and grub_reboot_fini and grub_halt_fini after it. Call setjmp with MAIN_ENV to go back afterwards. Call grub_machine_fini right before return. * include/grub/util/misc.h: Include setjmp.h. (main_env): New prototype. * include/grub/kernel.h (grub_machine_fini): New prototype. * include/grub/i386/pc/biosdisk.h (grub_biosdisk_fini): Likewise. * include/grub/i386/pc/console.h (grub_console_fini): Likewise. * disk/i386/pc/biosdisk.c (grub_biosdisk_fini): New function. * kern/i386/pc/init.c (grub_machine_fini): Likewise. * term/i386/pc/console.c (grub_console_fini): Likewise. * util/i386/pc/misc.c: New file. * conf/i386-pc.rmk (grub_emu_SOURCES): Added util/i386/pc/misc.c, commands/i386/pc/halt.c and commands/i386/pc/reboot.c. 2005-02-14 Guillem Jover * include/grub/dl.h (grub_dl_check_header): New prototype. (grub_arch_dl_check_header): Change return type to grub_err_t, remove size parameter and export function. Update all callers. * kern/dl.c (grub_dl_check_header): New function. (grub_dl_load_core): Use `grub_dl_check_header' instead of `grub_arch_dl_check_header'. Check ELF type. Check if sections are inside the core. * kern/i386/dl.c (grub_arch_dl_check_header): Remove arch independent ELF header checks. * kern/powerpc/dl.c (grub_arch_dl_check_header): Likewise. * loader/i386/pc/multiboot.c (grub_rescue_cmd_multiboot): Use `grub_dl_check_header' instead of explicit checks. Check for the ELF type. * loader/powerpc/ieee1275/linux.c (grub_rescue_cmd_linux): Use `grub_dl_check_header' instead of explicit checks. Remove arch specific ELF header checks. * util/grub-emu.c (grub_arch_dl_check_header): Remove the argument SIZE. 2005-02-13 Hollis Blanchard * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add ls.mod. * include/grub/powerpc/libgcc.h (__mulsf3): New prototype. 2005-02-12 Hollis Blanchard * kern/partition.c (grub_partition_probe): Clear `grub_errno' and return 0 if `grub_errno' is GRUB_ERR_BAD_PART_TABLE. (part_map_iterate): Clear `grub_errno' and return 0 if `partmap->iterate' returns GRUB_ERR_BAD_PART_TABLE. * partmap/amiga.c (amiga_partition_map_iterate): Return GRUB_ERR_BAD_PART_TABLE if no partition map magic is found. * partmap/apple.c (apple_partition_map_iterate): Likewise. 2005-02-01 Guillem Jover * loader/i386/pc/multiboot_normal.c (GRUB_MOD_INIT): Fix module help info. 2005-01-31 Marco Gerards * include/grub/powerpc/ieee1275/loader.h (grub_load_linux): Removed prototype. (grub_rescue_cmd_linux): New prototype. (grub_rescue_cmd_initrd): Likewise. * powerpc/ieee1275/linux.c (grub_linux_boot): Remove struct `bi_rec'. (grub_linux_release_mem): Release the memory for the initrd. (grub_load_linux): Renamed from this... (grub_rescue_cmd_linux): ...To this. Changed all callers. Changed `entry' not to be static. Loop over memory regions to find another one when the default fails. (grub_rescue_cmd_initrd): New function. (grub_linux_init): Remove function. (grub_linux_fini): Likewise. (GRUB_MOD_INIT): Register `initrd'. (GRUB_MOD_FINI): Unregister `initrd'. * powerpc/ieee1275/linux_normal.c (grub_linux_normal_init): Function removed. (grub_linux_normal_fini): Likewise. (GRUB_MOD_INIT): Register `initrd'. (GRUB_MOD_FINI): Unregister `initrd'. 2005-01-31 Marco Gerards * commands/help.c: New file. * normal/arg.c (show_help): Renamed to... (grub_arg_show_help): ... this. * commands/i386/pc/halt.c: New file. * commands/i386/pc/reboot.c: Likewise. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `commands/help.c'. (pkgdata_MODULES): Add `reboot.mod', `halt.mod' and `help.mod'. (help_mod_SOURCES, help_mod_CFLAGS, reboot_mod_SOURCES) (reboot_mod_CFLAGS, halt_mod_SOURCES, halt_mod_CFLAGS): New variables. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `commands/help.c'. (pkgdata_MODULES): Add `help.mod'. (help_mod_SOURCES, help_mod_CFLAGS): New variables. * grub/i386/pc/init.h (grub_reboot): New prototype. (grub_halt): Likewise. * include/grub/normal.h (grub_arg_show_help): New prototype. (grub_help_init): Likewise. (grub_help_fini): Likewise. * util/grub-emu.c (main): Initialize and deinitialize the help command. * normal/cmdline.c (grub_cmdline_get): Doc fix. * normal/command.c (grub_command_init): Fixed the description of the `set' and `unset' commands. 2005-01-31 Marco Gerards * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_interpret): New function. * commands/ieee1275/halt.c: New file. * commands/ieee1275/reboot.c: Likewise. * commands/ieee1275/suspend.c (grub_cmd_suspend): Use `__attribute__ ((unused))'. Some GCS related fixed. (grub_suspend_init) [GRUB_UTIL]: Function removed. (grub_suspend_fini): Likewise. * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add `reboot.mod' and `halt.mod'. (reboot_mod_SOURCES, reboot_mod_CFLAGS, halt_mod_SOURCES) (halt_mod_CFLAGS): New variables. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_interpret): New prototype. 2005-01-29 Yoshinori K. Okuji * include/grub/misc.h (memmove): New prototype. (memcpy): Likewise. 2005-01-22 Hollis Blanchard * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_open): Don't initialize `devpath' to 0. Use `name' instead of `devpath' with `grub_strndup'. 2005-01-22 Marco Gerards * kern/misc.c (grub_strndup): Function rewritten. 2005-01-22 Vincent Pelletier * normal/menu.c (TERM_WIDTH): Macro redefined. (TERM_TOP_BORDER_Y): Likewise. (draw_border): Replaced while-loop by a for-loop. Make the number of lines consistent with the number of lines displayed in print_entries. Added a margin below the rectangle. (print_entry): Make the entry fit in the rectangle. (print_entries): Display the scroll arrows next to the right border. 2005-01-21 Marco Gerards * fs/minix.c (grub_minix_find_file): Reserve more space for `fpath' so the \0 can be stored. Use `grub_strcpy' instead of `grub_strncpy' to copy `path' into it. 2005-01-21 Marco Gerards Add the loopback device, a device via which files can be accessed as devices. * conf/i386-pc.rmk (grub_emu_SOURCES): Add `disk/loopback.c'. (pkgdata_MODULES): Add loopback.mod. (loopback_mod_SOURCES): New variable. (loopback_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add `disk/loopback.c'. (pkgdata_MODULES): Add loopback.mod. (loopback_mod_SOURCES): New variable. (loopback_mod_CFLAGS): Likewise. * disk/loopback.c: new file. * include/grub/normal.h (grub_loop_init): New prototype. (grub_loop_fini): New prototype. * util/grub-emu.c (main): Initialize and de-initialize loopback support. * include/grub/disk.h (grub_disk_dev_id): Add `GRUB_DISK_DEVICE_LOOPBACK_ID'. 2005-01-20 Hollis Blanchard * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_enter): New function. * conf/powerpc-ieee1275.rmk (pkgdata_MODULES): Add suspend.mod. (suspend_mod_SOURCES): New variable. (suspend_mod_CFLAGS): Likewise. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_enter): New prototype. * commands/ieee1275/suspend.c: New file. 2005-01-20 Timothy Baldwin * include/grub/dl.h (GRUB_MOD_INIT): Changed `__attribute__ ((unused))' to `__attribute__ ((used))'. (GRUB_MOD_FINI): Likewise. * kern/dl.c (grub_dl_load_file): Fix null pointer dereference. * genmk.rb (PModule): Assign space to common symbols when linking modules. 2005-01-20 Marco Gerards * include/grub/mm.h (grub_mm_init_region): Change the type of the `unsigned' arguments to `grub_size_t'. (grub_malloc): Likewise. (grub_realloc): Likewise. (grub_memalign): Likewise. * kern/i386/dl.c (grub_arch_dl_check_header): Likewise. * kern/powerpc/dl.c (grub_arch_dl_check_header): Likewise. * util/misc.c (grub_malloc): Likewise. (grub_realloc): Likewise. * kern/mm.c (get_header_from_pointer): Change the casts to `unsigned' into a cast to `grub_size_t'. * fs/fshelp.c (grub_fshelp_find_file): The `oldnode' should always point to `currnode' when `currnode' is changed. * util/grub-emu.c (main): Initialize `progname'. Reported by Nico Schottelius . 2005-01-09 Hollis Blanchard * util/powerpc/ieee1275/grub-mkimage.c: Include . (note_path): Remove variable. (GRUB_IEEE1275_NOTE_NAME): New macro. (GRUB_IEEE1275_NOTE_TYPE): Likewise. (grub_ieee1275_note_hdr): New structure. (grub_ieee1275_note_desc): Likewise. (grub_ieee1275_note): Likewise. (load_note): Remove `dir' argument. All callers updated. Remove `note_img' and `path'. Do not load a file from `note_path'. Initialize a struct grub_ieee1275_note and write that to `out'. Use GRUB_IEEE1275_MODULE_BASE instead of MODULE_BASE. 2005-01-05 Marco Gerards * util/misc.c (grub_util_read_image): Revert last change. It called `grub_util_read_at', which seeks from the beginning of the file. 2005-01-04 Hollis Blanchard * TODO: Add note about endianness in grub-mkimage. * boot/powerpc/ieee1275/crt0.S (note): Remove unused .note section. * conf/powerpc-ieee1275.rmk (bin_UTILITIES): Add grub-mkimage. (grub_mkimage_SOURCES): New target. * include/grub/kernel.h (grub_start_addr): Remove variable. (grub_end_addr): Likewise. (grub_total_module_size): Likewise. (grub_kernel_image_size): Likewise. (GRUB_MODULE_MAGIC): New constant. (grub_module_info): New structure. (grub_arch_modules_addr): New prototype. (grub_get_end_addr): Remove prototype. * include/grub/i386/pc/kernel.h (grub_end_addr): New prototype. * include/grub/powerpc/ieee1275/kernel.h: New file. * include/grub/util/misc.h (grub_util_get_fp_size): New prototype. (grub_util_read_at): Likewise. (grub_util_write_image_at): Likewise. * kern/main.c (grub_get_end_addr): Remove function. (grub_load_modules): Call grub_arch_modules_addr instead of using grub_end_addr. Look for a grub_module_info struct in memory. Use the grub_module_info fields instead of calling grub_get_end_addr as loop conditions. Move grub_add_unused_region code here. (grub_add_unused_region): Remove function. * kern/i386/pc/init.c: Include grub/cache.h. (grub_machine_init): Remove call to grub_get_end_addr. Remove one call to add_mem_region. (grub_arch_modules_addr): New function. * kern/powerpc/ieee1275/init.c (grub_end_addr): Remove variable. (grub_total_module_size): Likewise. Include grub/machine/kernel.h. (grub_arch_modules_addr): New function. * util/grub-emu.c (grub_end_addr): Remove variable. (grub_total_module_size): Likewise. (grub_arch_modules_addr): New function. * util/misc.c: Include unistd.h. (grub_util_get_fp_size): New function. (grub_util_read_at): Likewise. (grub_util_write_image_at): Likewise. (grub_util_read_image): Call grub_util_read_at. (grub_util_write_image): Call grub_util_write_image_at. * util/i386/pc/grub-mkimage.c (generate_image): Allocate additional memory in kernel_img for a struct grub_module_info. Fill in that grub_module_info. * util/powerpc/ieee1275/grub-mkimage.c: New file. 2005-01-03 Hollis Blanchard * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_milliseconds): New function. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_milliseconds): New prototype. * include/grub/powerpc/ieee1275/time.h (GRUB_TICKS_PER_SECOND): Change to 1000. * kern/powerpc/ieee1275/init.c (grub_get_rtc): Call grub_ieee1275_milliseconds. 2005-01-03 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (grub_ieee1275_realmode): New variable. (find_options): New function. (cmain): Call find_options. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_realmode): New extern variable. * kern/powerpc/ieee1275/openfw.c (grub_claimmap): Only call grub_map if grub_ieee1275_realmode is false. 2004-12-29 Marco Gerards * normal/cmdline.c (grub_cmdline_get): Redone logic so no empty lines are inserted and make it work like readline. Reported by Vincent Pelletier . 2004-12-28 Marco Gerards * boot/powerpc/ieee1275/crt0.S (_start): Don't set up the stack. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCE): Remove `kern/powerpc/cache.S'. 2004-12-27 Marco Gerards * genmk.rb: Handle the `Program' class in the main loop. Written by Johan Rydberg . (Program): New class. (programs): New variable. * boot/powerpc/ieee1275/cmain.c: Include instead of "grub/machine/ieee1275.h". Include instead of "grub/kernel.h". Include . (help_arch): Function removed. * conf/powerpc-ieee1275.rmk (grubof_HEADERS): Add `powerpc/libgcc.h' and `loader.h'. (pkgdata_PROGRAMS): New variable. (sbin_UTILITIES): Variable removed. (grub_emu_SOURCES): Added kern/powerpc/cache.S. (grubof_SOURCES): Variable re-defined so it only includes the core functionality. (grubof_CFLAGS): Remove `-DGRUBOF'. (pkgdata_MODULES, fshelp_mod_SOURCES, fshelp_mod_CFLAGS, (fat_mod_SOURCES, fat_mod_CFLAGS, ext2_mod_SOURCES) (ext2_mod_CFLAGS, ufs_mod_SOURCES, ufs_mod_CFLAGS) (minix_mod_SOURCES, minix_mod_CFLAGS, hfs_mod_SOURCES) (hfs_mod_CFLAGS, jfs_mod_SOURCES, jfs_mod_CFLAGS) (iso9660_mod_SOURCES, iso9660_mod_CFLAGS, _linux_mod_SOURCES) (_linux_mod_CFLAGS, linux_mod_SOURCES, linux_mod_CFLAGS) (normal_mod_SOURCES, normal_mod_CFLAGS, normal_mod_ASFLAGS) (hello_mod_SOURCES, hello_mod_CFLAGS, boot_mod_SOURCES) (boot_mod_CFLAGS, terminal_mod_SOURCES, terminal_mod_CFLAGS) (ls_mod_SOURCES, ls_mod_CFLAGS, cmp_mod_SOURCES, cmp_mod_CFLAGS) (cat_mod_SOURCES, cat_mod_CFLAGS, font_mod_SOURCES) (font_mod_CFLAGS, amiga_mod_SOURCES, amiga_mod_CFLAGS) (apple_mod_SOURCES, apple_mod_CFLAGS, pc_mod_SOURCES) (pc_mod_CFLAGS): New variables. * disk/powerpc/ieee1275/ofdisk.c: Include . (grub_ofdisk_iterate): Add a prototype for `dev_iterate'. * include/grub/dl.h (grub_arch_dl_sync_caches): New prototype. * include/grub/loader.h (grub_os_area_addr, grub_os_area_size): Moved from here... * include/grub/i386/pc/init.h (grub_os_area_addr) (rub_os_area_size): ... to here. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_entry_fn): Export symbol. * include/grub/powerpc/ieee1275/init.h: New file. * include/grub/powerpc/libgcc.h: Likewise. * include/grub/cache.h: Likewise. * kern/powerpc/cache.S: Likewise. Written by Hollis Blanchard . * kern/dl.c: Include . (grub_dl_flush_cache): New function. (grub_dl_load_core): Call `grub_dl_flush_cache' to flush the cache for this module. * kern/powerpc/ieee1275/init.c (grub_ofdisk_init) (grub_console_init): Removed prototypes. (grub_machine_init): Don't initialize the modules anymore. * kern/powerpc/ieee1275/openfw.c (grub_map): Make the function static. * include/grub/powerpc/types.h (GRUB_HOST_WORDS_LITTLEENDIAN): Macro undef removed. (GRUB_HOST_WORDS_BIGENDIAN): New macro. * kern/powerpc/dl.c (grub_arch_dl_relocate_symbols): Add relocation `R_PPC_REL32'. Return an error when the relocation is unknown. * Makefile.in (DATA): Add `$(pkgdata_PROGRAMS)'. * kern/i386/pc/init.c (grub_arch_sync_caches): New function. * util/misc.c (grub_arch_sync_caches): Likewise. 2004-12-19 Marco Gerards * conf/powerpc-ieee1275.rmk (MOSTLYCLEANFILES): Remove `symlist.c', add `grubof_symlist.c'. (symlist.c): Variable removed. (grubof_HEADERS): Variable added. (grubof_symlist.c): New target. (kernel_syms.lst): Use `grubof_HEADERS' instead of `kernel_img_HEADERS'. (grubof_SOURCES): Add `kern/powerpc/dl.c' and `grubof_symlist.c'. * kern/powerpc/dl.c: New file. * kern/powerpc/ieee1275/init.c (grub_arch_dl_check_header): Function removed. (grub_arch_dl_relocate_symbols): Likewise. (grub_register_exported_symbols): Likewise. 2004-12-13 Marco Gerards * fs/ext2.c (grub_ext2_open): Don't use data after freeing it. (grub_ext2_dir): Likewise. Don't return in case of an error, jump to fail instead. Reported by Vincent Pelletier . * fs/fshelp.c (grub_fshelp_find_file): Don't free `oldnode' when it is not allocated. Reported by Vincent Pelletier . * normal/cmdline.c (grub_tab_complete): Add a blank line to the output so the output looks better. 2004-12-04 Marco Gerards Modulize the partition map support and add support for the amiga partition map. * commands/ls.c: Include instead of . * kern/disk.c: Likewise. * kern/rescue.c: Likewise. * loader/i386/pc/chainloader.c: Likewise. * normal/cmdline.c: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. (grub_machine_init): Call `grub_pc_partition_map_init', `grub_amiga_partition_map_init' and `grub_apple_partition_map_init'. * conf/i386-pc.rmk (kernel_img_SOURCES): Remove `disk/i386/pc/partition.c'. Add `kern/partition.c'. (kernel_img_HEADERS): Remove `machine/partition.h'. Add `partition.h' and `pc_partition.h'. (grub_setup_SOURCES): Remove `disk/i386/pc/partition.c'. Add `kern/partition.c', `partmap/amiga.c', `partmap/apple.c' and `partmap/pc.c'. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add `amiga.mod', `apple.mod' and `pc.mod'. (amiga_mod_SOURCES, amiga_mod_CFLAGS, apple_mod_SOURCES) (apple_mod_CFLAGS, pc_mod_SOURCES, pc_mod_CFLAGS): New variables. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Remove `disk/powerpc/ieee1275/partition.c'. Add `kern/partition.c', `partmap/amiga.c', `partmap/apple.c' and `partmap/pc.c'. (grubof_SOURCES): Likewise. * disk/i386/pc/partition.c: File removed. * disk/powerpc/ieee1275/partition.c: Likewise. * include/grub/powerpc/ieee1275/partition.h: Likewise. * include/grub/i386/pc/partition.h: Likewise. * kern/partition.c: New file. * partmap/amiga.c: Likewise. * partmap/apple.c: Likewise. * partmap/pc.c: Likewise. * include/grub/partition.h: Likewise.. * include/grub/pc_partition.h: Likewise. * util/grub-emu.c: Include instead of . (main): Call `grub_pc_partition_map_init', `grub_amiga_partition_map_init' and `grub_apple_partition_map_init' and deinitialize afterwards. * util/i386/pc/biosdisk.c: Include `#include ' and `include ' instead of `'. * util/i386/pc/grub-setup.c: Likewise. * util/i386/pc/biosdisk.c: Likewise. (grub_util_biosdisk_get_grub_dev): Only access the PC specific partition information in case of a PC partition. * util/i386/pc/grub-setup.c: Include `#include ' and `include ' instead of `'. (setup): Only access the PC specific partition information in case of a PC partition. 2004-11-17 Hollis Blanchard * kern/powerpc/ieee1275/init.c (grub_setjmp): Remove function. (grub_longjmp): Likewise. * include/grub/powerpc/setjmp.h (grub_jmp_buf): Set array size to 20. * normal/powerpc/setjmp.S: New file. * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Add `normal/powerpc/setjmp.S'. (grubof_CFLAGS): Add `-DGRUBOF'. * include/grub/setjmp.h [GRUB_UTIL]: Changed condition to [GRUB_UTIL && !GRUBOF]. 2004-11-16 Marco Gerards * kern/powerpc/ieee1275/openfw.c (grub_devalias_iterate): Skip any property named `name'. Correctly handle the error returned by `grub_ieee1275_finddevice' if a device can not be opened. 2004-11-02 Hollis Blanchard * term/powerpc/ieee1275/ofconsole.c (grub_ofconsole_readkey): Test `actual' for negativity. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Remove kern/fshelp.c. 2004-11-01 Marco Gerards * term/i386/pc/vga.c (VGA_HEIGHT): Changed to 350. (PAGE_OFFSET): New macro. (CRTC_ADDR_PORT): Likewise. (CRTC_DATA_PORT): Likewise. (START_ADDR_HIGH_REGISTER): Likewise. (START_ADDR_LOW_REGISTER): Likewise. (GRAPHICS_ADDR_PORT): Likewise. (GRAPHICS_DATA_PORT): Likewise. (READ_MAP_REGISTER): Likewise. (INPUT_STATUS1_REGISTER): Likewise. (INPUT_STATUS1_VERTR_BIT): Likewise. (page): New variable. (wait_vretrace): New function. (set_read_map): Likewise. (set_start_address): Likewise. (grub_vga_init): Use mode 0x10 instead of mode 0x12. Switch to the right page. (check_vga_mem): Take the page into account. (write_char): Likewise. (write_cursor): Likewise. (scroll_up): Likewise. Copy the page to the page that is not shown and switch between both pages. (grub_vga_putchar): Fix off by one error. (grub_vga_cls): Wait for the vertical retrace. Take the page into account. 2004-11-01 Marco Gerards Add support for iso9660 (including rockridge). * conf/i386-pc.rmk (grub_emu_SOURCES): Add fs/iso9660.c. (iso9660_mod_SOURCES): New variable. (iso9660_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add fs/iso9660.c. * include/grub/fs.h (grub_iso9660_init): New prototype. * util/grub-emu.c (main): Call `grub_iso9660_init'. * fs/iso9660.c: New file. * include/grub/misc.h (grub_strncat): New prototype. * kern/misc.c (grub_strncat): New function. * fs/hfs.c (grub_hfs_mount): Translate the error `GRUB_ERR_OUT_OF_RANGE' to `GRUB_ERR_BAD_FS'. * fs/jfs.c (grub_jfs_mount): Likewise. * fs/ufs.c (grub_ufs_mount): Likewise. 2004-10-28 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (cmain): Remove asm statements which initialized BAT registers. * boot/powerpc/ieee1275/ieee1275.c (IEEE1275_CALL_ENTRY_FN, grub_ieee1275_common_hdr, INIT_IEEE1275_COMMON): Move from here... * include/grub/powerpc/ieee1275/ieee1275.h (IEEE1275_CALL_ENTRY_FN, grub_ieee1275_common_hdr, INIT_IEEE1275_COMMON): ... to here. * kern/powerpc/ieee1275/openfw.c (grub_map): New function. (grub_mapclaim): Likewise. * loader/powerpc/ieee1275/linux.c (grub_load_linux): Use grub_mapclaim instead of grub_ieee1275_claim. Assign linux_addr by hand. 2004-10-19 Hollis Blanchard * conf/powerpc-ieee1275.rmk (COMMON_ASFLAGS): Remove -fno-builtin. (COMMON_CFLAGS): Remove -fno-builtin and -D__ASSEMBLY__. Add -ffreestanding and -msoft-float. 2004-10-15 Hollis Blanchard * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_open): Do not append ":0" to devpath if the GRUB_IEEE1275_NO_PARTITION_0 flag is set in grub_ieee1275_flags. 2004-10-14 Hollis Blanchard * include/grub/powerpc/ieee1275/ieee1275.h (abort): Add function prototype. * kern/powerpc/ieee1275/init.c (grub_machine_init): Call grub_console_init first. Change the memory range used for grub_ieee1275_claim and grub_mm_init_region. Print an error message if the claim fails. Include . 2004-10-13 Hollis Blanchard * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_iterate): Call grub_children_iterate for device nodes of type `scsi', `ide', or `ata'. (grub_ofdisk_open): Remove manual device alias resolution. Fix memory leak when device cannot be opened. * include/grub/powerpc/ieee1275/ieee1275.h (grub_children_iterate): New prototype. * kern/powerpc/ieee1275/openfw.c (grub_children_iterate): New function. * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_get_property): Return -1 if args.size was -1. 2004-10-11 Hollis Blanchard * boot/powerpc/ieee1275/cmain.c (grub_ieee1275_flags): New global. (cmain): Accept 3 parameters. Test for 0xdeadbeef, indicating Old World Macintosh. If Old Wold, set flag in grub_ieee1275_flags; claim Open Firmware's memory for it; claim memory from _start to _end. * boot/powerpc/ieee1275/crt0.S (__bss_start): New extern. (_end): New extern. (_start): Zero BSS from __bss_start to _end. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_flags): New extern. (GRUB_IEEE1275_NO_PARTITION_0): New #define. 2004-10-11 Hollis Blanchard * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_claim): Return -1 if args.base was -1. 2004-10-08 Hollis Blanchard * term/powerpc/ieee1275/ieee1275.c (grub_ofconsole_cls): Use an ANSI escape sequence instead of a literal ^L. Also call grub_ofconsole_gotoxy. 2004-10-03 Hollis Blanchard * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_claim): change void * arguments to grub_addr_t. All callers updated. Also make the `result' argument optional. (grub_ieee1275_release): change void * arguments to grub_addr_t. All callers updated. 2004-09-22 Hollis Blanchard * commands/ls.c (grub_ls_list_files): Use the string following the initial ')', if present, as the filesystem path. * kern/rescue.c (grub_rescue_cmd_ls): Likewise. * conf/powerpc-ieee1275.rmk (grubof_SOURCES): List crt0.S first. 2004-09-18 Yoshinori K. Okuji Make the source code of the menu interface more readable. * normal/menu.c: Include grub/mm.h. (TERM_WIDTH): New macro. (TERM_HEIGHT): Likewise. (TERM_INFO_HEIGHT): Likewise. (TERM_MARGIN): Likewise. (TERM_SCROLL_WIDTH): Likewise. (TERM_TOP_BORDER_Y): Likewise. (TERM_LEFT_BORDER_X): Likewise. (TERM_BORDER_WIDTH): Likewise. (TERM_MESSAGE_HEIGHT): Likewise. (TERM_BORDER_HEIGHT): Likewise. (TERM_NUM_ENTRIES): Likewise. (TERM_FIRST_ENTRY_Y): Likewise. (TERM_ENTRY_WIDTH): Likewise. (TERM_CURSOR_X): Likewise. (draw_border): Use macros instead of magic numbers. (print_entry): Likewise. (print_entries): Likewise. (run_menu): Likewise. Also, handle the key 'e'. (run_menu_entry): Ignore empty command lines. (print_message): Added a new argument EDIT. If EDIT is true, print a different message. (init_page): Likewise. (edit_menu_entry): New function. Not implemented yet. 2004-09-17 Marco Gerards Add `linux.mod' and `multiboot.mod' so linux and multiboot kernels can be loaded from normal mode. * conf/i386-pc.rmk (pkgdata_MODULES): Add `linux.mod' and `multiboot.mod'. (linux_mod_SOURCES, linux_mod_CFLAGS, multiboot_mod_SOURCES) (multiboot_mod_CFLAGS): New variables. * loader/i386/pc/linux_normal.c: New file. * loader/i386/pc/multiboot_normal.c: Likewise. * loader/i386/pc/linux.c (grub_rescue_cmd_initrd): Don't use the attribute `unused'. * fs/ext2.c (grub_ext2_iterate_dir): Fix typos in inode type. Use `fdiro' to read the mode information from instead of `diro'. * fs/fshelp.c (grub_fshelp_find_file): Set type to foundtype after looking up a symlink. * include/grub/normal.h (GRUB_COMMAND_FLAG_NO_ARG_PARSE): New macro. * normal/command.c (grub_command_execute): Don't parse the arguments when `GRUB_COMMAND_FLAG_NO_ARG_PARSE' is set in the flags of the command. * normal/menu.c (grub_menu_run): Fix typo. 2004-09-14 Hollis Blanchard * kern/powerpc/ieee1275/init.c (abort): Trap into Open Firmware. * term/powerpc/ieee1275/ofconsole.c (grub_ofconsole_gotoxy): Use `y + 1' instead of `y - 1'. * conf/powerpc-ieee1275.rmk (grubof_LDFLAGS): Add `-N' and `-S'. 2004-09-14 Yoshinori K. Okuji From Hollis Blanchard : * kern/misc.c (memmove): New alias for grub_memmove. (memcmp): New alias for grub_memcmp. (memset): New alias for grub_memset. * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_get_property): Change "int handle" to "grub_ieee1275_phandle_t handle". * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_get_property): Likewise. 2004-09-12 Tomas Ebenlendr Added normal mode command `chainloader' as module chain.mod, which depends on normal.mod and _chain.mod. * conf/i386-pc.rmk (pkgdata_MODULES): Add `chain.mod'. (chain_mod_SOURCES, chain_mod_CFLAGS): Variables added. * include/grub/i386/pc/loader.h (grub_rescue_cmd_chainloader): Deleted prototype. * loader/i386/pc/chainloader.c (grub_rescue_cmd_chainloader): All but arguments parsing moved to ... (grub_chainloader_cmd): ... here. New function. * include/grub/i386/pc/chainloader.h: New file. * loader/i386/pc/chainloader_normal.c: Likewise. 2004-09-11 Marco Gerards * conf/i386-pc.rmk (kernel_img_SOURCES): Added kern/fshelp.c. (grub_mkimage_LDFLAGS): Likewise. (grub_emu_SOURCES): Likewise. (kernel_img_HEADERS): Added fshelp.h. * fs/ext2.c: Include . (FILETYPE_REG): New macro. (FILETYPE_INO_REG): Likewise. (grub_ext_sblock): Renamed to `grub_ext2_sblock'. Changed all users. (ext2_block_group): Renamed to `grub_ext2_block_group'. Changed all users. (grub_fshelp_node): New struct. (grub_ext2_data): Added member `diropen'. Changed member `inode' to a pointer. (grub_ext2_get_file_block): Removed function. (grub_ext2_read_block): New function. (grub_ext2_read_file): Replaced parameter `data' by `node'. This function was written. (grub_ext2_mount): Read the root inode. Create a diropen struct. (grub_ext2_find_file): Removed function. (grub_ext2_read_symlink): New function. (grub_ext2_iterate_dir): Likewise. (grub_ext2_open): Rewritten. (grub_ext2_dir): Rewritten. * include/grub/fshelp.h: New file. * fs/fshelp.c: Likewise. 2004-09-10 Yoshinori K. Okuji * normal/menu.c: Include grub/loader.h and grub/machine/time.h. (print_message): Add a missing newline. (run_menu): Added timeout support. (run_menu_entry): New local function. (grub_menu_run): Added support for booting. * kern/loader.c (grub_loader_is_loaded): New function. * include/grub/powerpc/ieee1275/time.h: Include grub/symbol.h. (grub_get_rtc): Exported. * include/grub/i386/pc/time.h: Include grub/symbol.h. (grub_get_rtc): Exported. * include/grub/normal.h (struct grub_command_list): Remove constant from the member `command'. * include/grub/loader.h (grub_loader_is_loaded): Declared. * include/grub/err.h (GRUB_ERR_INVALID_COMMAND): New constant. * conf/i386-pc.rmk (kernel_img_HEADERS): Added machine/time.h. 2004-08-28 Marco Gerards Add support for the JFS filesystem. * fs/jfs.c: New file. * include/grub/fs.h (grub_jfs_init): New prototype. (grub_jfs_fini): New prototype. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/jfs.c. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add jfs.mod. (jfs_mod_SOURCES): New variable. (jfs_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add fs.jfs.c. (grubof_SOURCES): Likewise. * util/grub-emu.c (main): Initialize and deinitialize JFS support. * fs/fat.c (grub_fat_find_dir): Convert the filename little endian to the host endian. (grub_fat_utf16_to_utf8): Move function from there... * kern/misc.c (grub_utf16_to_utf8): ...to here. Do not convert the endianness of the source string anymore. * include/grub/misc.h (grub_utf16_to_utf8): New prototype. 2004-08-24 Marco Gerards * commands/boot.c (grub_boot_init) [GRUB_UTIL]: Make conditional. (grub_boot_fini) [GRUB_UTIL]: Likewise. (GRUB_MOD_INIT) [!GRUB_UTIL]: Likewise. (GRUB_MOD_FINI) [!GRUB_UTIL]: Likewise. * fs/hfs.c (grub_hfs_find_node): Add a prototype for `node_found'. (grub_hfs_iterate_dir): Make the function static. Add prototypes for `node_found' and `it_dir'. (grub_hfs_dir): Add prototype for `dir_hook'. * fs/minix.c (grub_minix_get_file_block): Add prototype for `grub_get_indir'. Rename `indir' in two blocks to `indir16' and `indir32' to silence a gcc warning. * include/grub/fs.h (grub_hfs_init): New prototype. (grub_hfs_fini): Likewise. 2004-08-21 Yoshinori K. Okuji Each disk device has its own id now. This is useful to make use of multiple disk devices. * include/grub/disk.h (grub_disk_dev_id): New enum. (GRUB_DISK_DEVICE_BIOSDISK_ID): New constant. (GRUB_DISK_DEVICE_OFDISK_ID): Likewise. * disk/i386/pc/biosdisk.c (grub_biosdisk_dev): Specify GRUB_DISK_DEVICE_BIOSDISK_ID as an id. * disk/powerpc/ieee1275/ofdisk.c (grub_ofdisk_dev): Specify GRUB_DISK_DEVICE_OFDISK_ID as an id. * util/i386/pc/biosdisk.c (grub_util_biosdisk_dev): Specify GRUB_DISK_DEVICE_BIOSDISK_ID as an id. * include/grub/disk.h (struct grub_disk_dev): Added a new member "id" which is used by the cache manager. * normal/main.c (grub_normal_init_page): Use "GNU GRUB" instead of just "GRUB". 2004-08-18 Marco Gerards * fs/hfs.c: New file. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/hfs.c. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add hfs.mod. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add fs/hfs.c. (grubof_SOURCES): Likewise. * util/grub-emu.c (main): Initialize and deinitialize HFS support. * include/grub/misc.h (grub_strncasecmp): Add prototype. * kern/misc.c (grub_strncasecmp): Add function. 2004-08-14 Marco Gerards * include/grub/arg.h (GRUB_ARG_OPTION_OPTIONAL): Surround macro with parentheses. * fs/ext2.c (FILETYPE_UNKNOWN): New macro. (grub_ext2_dir): In case the directory entry type is unknown, read it from the inode. 2004-08-02 Peter Bruin * loader/powerpc/ieee1275/linux.c (grub_linux_init): Pass grub_load_linux instead of grub_rescue_cmd_linux as second argument of grub_rescue_register_command. * Makefile.in (RMKFILES): Add conf/powerpc-ieee1275.rmk. 2004-07-27 Marco Gerards * boot/powerpc/ieee1275/ieee1275.c (grub_ieee1275_release): New function. * commands/boot.c: Remove the check for `GRUB_UTIL'. * conf/powerpc-ieee1275.rmk (grubof_SOURCES): Add `loader/powerpc/ieee1275/linux.c', `loader/powerpc/ieee1275/linux_normal.c' and `commands/boot.c'. * include/grub/powerpc/ieee1275/ieee1275.h (grub_ieee1275_release): New prototype. * include/grub/powerpc/ieee1275/loader.h: Rewritten. * kern/powerpc/ieee1275/init.c (grub_machine_init): Initialize normal, boot, linux and linux_normal. * loader/powerpc/ieee1275/linux.c: New file. * loader/powerpc/ieee1275/linux_normal.c: Likewise. 2004-07-12 Marco Gerards * normal/arg.c (grub_arg_parse): Correct error handling after reallocating the argumentlist (check if `argl' is not null instead of checking if `args' is not null). * kern/mm.c (grub_realloc): Return the same pointer when using the same region, instead of returning the header address. 2004-07-11 Marco Gerards * disk/powerpc/ieee1275/partition.c (grub_partition_iterate): Skip one block instead of two when looking for the initial partition. (grub_partition_probe): Initialize the local variable `p' with 0. Use base 10 for the grub_strtoul call. * kern/misc.c (grub_strncpy): Fix off by one bug. Eliminated the need for one local variable. (grub_strtoul): Don't add the new value to `num', instead of that just assign it. 2004-07-11 Marco Gerards * conf/i386-pc.rmk (pkgdata_IMAGE): Add pxeboot.img. (pxeboot_img_SOURCES): New variable. (pxeboot_img_ASFLAGS): Likewise. (pxeboot_img_LDFLAGS): Likewise. * boot/i386/pc/pxeboot.S: New file. Based on pxeloader.S from GRUB Legacy and boot.S. Adopted for GRUB 2 by lode leroy . 2004-06-27 Tomas Ebenlendr * kern/rescue.c (grub_enter_rescue_mode): Don't continue when there was no input. 2004-06-27 Tomas Ebenlendr * normal/cmdline.c (grub_set_history): Fix off by one bug. Fixed the history buffer logic. 2004-06-27 Tomas Ebenlendr * fs/ext2.c (FILETYPE_INO_MASK, FILETYPE_INO_DIRECTORY) (FILETYPE_INO_SYMLINK): New macros. (grub_ext2_find_file): Check if the node is a directory using the inode stat information instead of using the filetype in the dirent. Exclude the first character of an absolute symlink. (grub_ext2_dir): Mask out the filetype part of the mode member of the inode. 2004-05-24 Marco Gerards Add support for UFS version 1 and 2. Add support for the minix filesystem version 1 and 2, both the variants with 14 and 30 long filenames. * conf/i386-pc.rmk (grub_setup_SOURCES): Add fs/ufs.c and fs/minix.c. (grub_emu_SOURCES): Likewise. (pkgdata_MODULES): Add ufs.mod and minix.mod. (ufs_mod_SOURCES): New variable. (ufs_mod_CFLAGS): Likewise. (minix_mod_SOURCES): Likewise. (minix_mod_CFLAGS): Likewise. * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add fs/ufs.c and fs/minix.c. (grubof_SOURCES): Likewise. * fs/ufs.c: New file. * fs/minix.c: New file. * include/grub/fs.h (grub_ufs_init): New prototype. (grub_ufs_fini): Likewise. (grub_minix_init): Likewise. (grub_minix_fini): Likewise. * util/grub-emu.c (main): Initialize and deinitialize UFS and minix fs. 2004-04-30 Jeroen Dekkers * conf/powerpc-ieee1275.rmk (grub_emu_SOURCES): Add normal/arg.c, commands/ls.c, commands/terminal.c, commands/boot.c, commands/cmp.c and commands/cat.c. (grubof_LDFLAGS): Add -nostdlib -static-libgcc -lgcc. * kern/powerpc/ieee1275/init.c: Include "grub/env.h" instead of "env.h" 2004-04-04 Yoshinori K. Okuji All symbols prefixed with PUPA_ and pupa_ are renamed to GRUB_ and grub_, respectively. Because the conversion is trivial and mechanical, I omit the details here. Please refer to the CVS if you need more information. 2004-04-04 Yoshinori K. Okuji * include/pupa: Renamed to ... * include/grub: ... this. * util/i386/pc/pupa-mkimage.c: Renamed to ... * util/i386/pc/grub-mkimage.c: ... this. * util/i386/pc/pupa-setup.c: Renamed to ... * util/i386/pc/grub-setup.c: ... this. * util/pupa-emu.c: Renamed to ... * util/grub-emu.c: ... this. 2004-03-29 Marco Gerards Add support for the newworld apple macintosh (PPC). This has been tested on the powerbook 2000 only. It only adds support for generic ieee1275 functions, console and disk support. This should be easy to port to other architectures with support for Open Firmware. * configure.ac: Accept the powerpc as host_cpu. In the case of the powerpc cpu set the host_vendor to ieee1275. Make sure the i386 specific tests are only executed while building for the i386. Inverse test for crosscompile. * genmk.rb (Utility): Allow assembler files. * normal/cmdline.c (pupa_tab_complete): Reset pupa_errno. * conf/powerpc-ieee1275.rmk: New file. * disk/powerpc/ieee1275/ofdisk.c: Likewise. * disk/powerpc/ieee1275/partition.c: Likewise. * include/pupa/powerpc/ieee1275/biosdisk.h: Likewise. * include/pupa/powerpc/ieee1275/console.h: Likewise. * include/pupa/powerpc/ieee1275/partition.h: Likewise. * include/pupa/powerpc/ieee1275/time.h: Likewise. * include/pupa/powerpc/ieee1275/util/biosdisk.h: Likewise. * include/pupa/powerpc/ieee1275/multiboot.h: Likewise. * include/pupa/powerpc/ieee1275/loader.h * include/pupa/powerpc/setjmp.h: Likewise. * include/pupa/powerpc/types.h: Likewise. * kern/powerpc/ieee1275/init.c: Likewise. * kern/powerpc/ieee1275/openfw.c: Likewise. * term/powerpc/ieee1275/ofconsole.c: Likewise. These files were written by Johan Rydberg (jrydberg@night.trouble.net) and I only modified them slightly. * boot/powerpc/ieee1275/cmain.c: New file. * boot/powerpc/ieee1275/crt0.S: Likewise. * boot/powerpc/ieee1275/ieee1275.c: Likewise. * include/pupa/powerpc/ieee1275/ieee1275.h: Likewise. 2004-03-14 Jeroen Dekkers * Makefile.in: Update copyright. * genmodsrc.sh: Likewise. * gensymlist.sh: Likewise. * term/i386/pc/vga.c: Indent correctly. * util/i386/pc/pupa-mkimage.c (usage): Use PACKAGE_BUGREPORT as bugreporting address. * util/i386/pc/pupa-setup.c (usage): Likewise, (main): Call pupa_ext2_init and pupa_ext2_fini. * fs/fat.c (log2): Renamed to ... (fat_log2): ... this. All callers changed. * kern/misc.c (memcpy): Alias to pupa_memmove. * loader/i386/pc/multiboot.c (pupa_rescue_cmd_multiboot): Fix lvalue cast. * util/console.c (pupa_ncurses_fini): Return 0. * util/i386/pc/biosdisk.c (pupa_util_biosdisk_open)[__linux__]: Move fail label here. [__GNU__]: Don't warn when using stat. (open_device)[!__linux__]: Check if FD < 0 instead of !FD. (pupa_util_biosdisk_get_pupa_dev)[__GNU__]: Change type of N to long int. Use strtol instead of strtoul. 2004-03-14 Marco Gerards * commands/boot.c: New file. * commands/cat.c: Likewise. * commands/cmp.c: Likewise. * commands/ls.c: Likewise. * commands/terminal.c: Likewise. * normal/command.c: Include and . (pupa_register_command): Changed interface to match the new argument parser. (pupa_command_execute): Changed (almost rewritten) so it uses pupa_split_command. Added support for setting variables using the syntax `foo=bar'. (rescue_command): Changed to work with the new argument parser. (terminal_command): Moved from here to commands/terminal.c. (set_command): New function. (unset_command): New function. (insmod_command): New function. (rmmod_command): New function. (lsmod_command): New function. (pupa_command_init): Don't initialize the command terminal anymore. Initialize the commands set, unset, insmod, rmmod and lsmod. * conf/i386-pc.rmk (kernel_img_SOURCES): Add kern/env.c. (kernel_img_HEADERS): Add arg.h and env.h. (pupa_mkimage_LDFLAGS): Add kern/env.c. (pupa_emu_SOURCES): Add kern/env.c, commands/ls.c, commands/terminal.c commands/boot.c commands/cmp.c commands/cat.c, normal/arg.c. (pkgdata_MODULES): Add ls.mod, boot.mod, cmp.mod, cat.mod and terminal.mod. (normal_mod_SOURCES): Add normal/arg.c and normal/arg.c. (boot_mod_SOURCES): New variable. (terminal_mod_SOURCES): Likewise. (ls_mod_SOURCES): Likewise. (cmp_mod_SOURCES): Likewise. (cat_mod_SOURCES): Likewise. * normal/arg.c: New file. * kern/env.c: Likewise. * include/pupa/arg.h: Likewise. * include/pupa/env.h: Likewise. * font/manager.c (font_command): Changed to match argument parsing interface changes. (PUPA_MOD_INIT): Likewise. * hello/hello.c (pupa_cmd_hello): Likewise. (PUPA_MOD_INIT): Likewise. * include/pupa/disk.h: Include . (pupa_print_partinfo): New prototype. * include/pupa/dl.h (pupa_dl_set_prefix): Prototype removed. (pupa_dl_get_prefix): Likewise. * include/pupa/misc.h: Include . (pupa_isgraph): New prototype. (pupa_isdigit): Likewise. (pupa_split_cmdline): Likewise. * include/pupa/normal.h: Include . (pupa_command): Changed the prototype of the member `func' to match the argument parsing interface. Added member `options'. (pupa_register_command): Updated to match function. (pupa_arg_parse): New prototype. (pupa_hello_init) [PUPA_UTIL]: New prototype. (pupa_hello_fini) [PUPA_UTIL]: Likewise. (pupa_ls_init) [PUPA_UTIL]: Likewise. (pupa_ls_fini) [PUPA_UTIL]: Likewise. (pupa_cat_init) [PUPA_UTIL]: Likewise. (pupa_cat_fini) [PUPA_UTIL]: Likewise. (pupa_boot_init) [PUPA_UTIL]: Likewise. (pupa_boot_fini) [PUPA_UTIL]: Likewise. (pupa_cmp_init) [PUPA_UTIL]: Likewise. (pupa_cmp_fini) [PUPA_UTIL]: Likewise. (pupa_terminal_init) [PUPA_UTIL]: Likewise. (pupa_terminal_fini) [PUPA_UTIL]: Likewise. * kern/disk.c: Include . (pupa_print_partinfo): New function. * kern/dl.c: Include . (pupa_dl_dir): Variable removed. (pupa_dl_load): Use the environment variable `prefix' instead of the variable pupa_dl_dir. (pupa_dl_set_prefix): Function removed. (pupa_dl_get_prefix): Likewise. * kern/i386/pc/init.c: Include . (pupa_machine_init): Use the environment variable `prefix' instead of using pupa_dl_set_prefix to set the prefix. * kern/main.c: Include . (pupa_set_root_dev): Use the environment variable `prefix' instead of using pupa_dl_get_prefix to get the prefix. * kern/misc.c: Include . (pupa_isdigit): New function. (pupa_isgraph): Likewise. (pupa_ftoa): Likewise. (pupa_vsprintf): Added support for printing values of the type `double'. Make it possible to format variable output when using formatting like `%1.2%f'. (pupa_split_cmdline): New function. * kern/rescue.c: Include . (next_word): Removed function. (pupa_rescue_cmd_prefix): Likewise. (pupa_rescue_cmd_set): New function. (pupa_rescue_cmd_unset): New function. (pupa_enter_rescue_mode): Use the `pupa_split_cmdline' function to split the command line instead of splitting it here. Added support for setting variables using the syntax `foo=bar'. Don't initialize the prefix command anymore. Initialized the set and unset commands. * normal/cmdline.c: Include . (pupa_tab_complete): Added prototypes for print_simple_completion, print_partition_completion, add_completion, iterate_commands, iterate_dev, iterate_part and iterate_dir. Moved code to print partition information from here to kern/disk.c. (pupa_cmdline_run): Don't check if the function exists anymore. * normal/main.c: Include . (pupa_rescue_cmd_normal): Use the environment variable `prefix' instead of using pupa_dl_get_prefix to get the prefix. * term/i386/pc/vga.c: Include . (check_vga_mem): Cast pointers to `void *' to silence a gcc warning. (pupa_vga_putchar) [! DEBUG_VGA]: Removed for this case. (pupa_vga_setcolor): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. (pupa_vga_setcolor): Likewise. (debug_command): Changed to match argument parsing interface changes. * util/pupa-emu.c: Include . (options): Added 0's for unused fields to silence a gcc warning. (argp): Likewise. (main): Use the environment variable `prefix' instead of using pupa_dl_set_prefix to set the prefix. Initialize the commands ls, boot, cmp, cat and terminal. Finish the commands boot, cmp, cat and terminal. * util/i386/pc/getroot.c: Include . * util/misc.c: Include . (pupa_malloc): Rewritten so errors are correctly reported. (pupa_realloc): Likewise. (pupa_memalign): Likewise. (pupa_mm_init_region): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. * normal/i386/setjmp.S: Remove tab at the end of the file to silence a gcc warning. * loader/i386/pc/linux.c (pupa_rescue_cmd_initrd): Declare unused variables with `__attribute__ ((unused))' to silence a gcc warning. * loader/i386/pc/multiboot.c (pupa_multiboot_unload): Make the local variable i unsigned to silence a gcc warning. * kern/term.c: Include . (pupa_more_lines): New variable. (pupa_more): Likewise. (pupa_putcode): When the pager is active pause at the end of every screen. (pupa_set_more): New function. * include/pupa/term.h (pupa_set_more): New prototype. 2004-03-07 Yoshinori K. Okuji Now this project is GRUB 2 rather than PUPA. The location of the CVS repository was moved to GRUB's. * configure.ac: Use bug-grub as the reporting address. Use GRUB instead of PUPA. Change the version number to 1.90. 2004-02-24 Yoshinori K. Okuji * genkernsyms.sh: Updated copyright information. * genmk.rb: Likewise. * genmodsrc.sh: Likewise. * gensymlist.sh: Likewise. * boot/i386/pc/boot.S: Likewise. * boot/i386/pc/diskboot.S: Likewise. * disk/i386/pc/biosdisk.c: Likewise. * disk/i386/pc/partition.c: Likewise. * font/manager.c: Likewise. * fs/ext2.c: Likewise. * fs/fat.c: Likewise. * include/pupa/boot.h: Likewise. * include/pupa/device.h: Likewise. * include/pupa/disk.h: Likewise. * include/pupa/dl.h: Likewise. * include/pupa/elf.h: Likewise. * include/pupa/err.h: Likewise. * include/pupa/file.h: Likewise. * include/pupa/font.h: Likewise. * include/pupa/fs.h: Likewise. * include/pupa/kernel.h: Likewise. * include/pupa/loader.h: Likewise. * include/pupa/misc.h: Likewise. * include/pupa/mm.h: Likewise. * include/pupa/net.h: Likewise. * include/pupa/normal.h: Likewise. * include/pupa/rescue.h: Likewise. * include/pupa/setjmp.h: Likewise. * include/pupa/symbol.h: Likewise. * include/pupa/term.h: Likewise. * include/pupa/types.h: Likewise. * include/pupa/i386/setjmp.h: Likewise. * include/pupa/i386/types.h: Likewise. * include/pupa/i386/pc/biosdisk.h: Likewise. * include/pupa/i386/pc/boot.h: Likewise. * include/pupa/i386/pc/console.h: Likewise. * include/pupa/i386/pc/init.h: Likewise. * include/pupa/i386/pc/kernel.h: Likewise. * include/pupa/i386/pc/linux.h: Likewise. * include/pupa/i386/pc/loader.h: Likewise. * include/pupa/i386/pc/memory.h: Likewise. * include/pupa/i386/pc/multiboot.h: Likewise. * include/pupa/i386/pc/partition.h: Likewise. * include/pupa/i386/pc/time.h: Likewise. * include/pupa/i386/pc/vga.h: Likewise. * include/pupa/i386/pc/util/biosdisk.h: Likewise. * include/pupa/util/getroot.h: Likewise. * include/pupa/util/misc.h: Likewise. * include/pupa/util/resolve.h: Likewise. * kern/device.c: Likewise. * kern/disk.c: Likewise. * kern/dl.c: Likewise. * kern/err.c: Likewise. * kern/file.c: Likewise. * kern/fs.c: Likewise. * kern/loader.c: Likewise. * kern/main.c: Likewise. * kern/misc.c: Likewise. * kern/mm.c: Likewise. * kern/rescue.c: Likewise. * kern/term.c: Likewise. * kern/i386/dl.c: Likewise. * kern/i386/pc/init.c: Likewise. * kern/i386/pc/lzo1x.S: Likewise. * kern/i386/pc/startup.S: Likewise. * loader/i386/pc/chainloader.c: Likewise. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/multiboot.c: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/i386/setjmp.S: Likewise. * term/i386/pc/console.c: Likewise. * term/i386/pc/vga.c: Likewise. * util/console.c: Likewise. * util/genmoddep.c: Likewise. * util/misc.c: Likewise. * util/pupa-emu.c: Likewise. * util/resolve.c: Likewise. * util/unifont2pff.rb: Likewise. * util/i386/pc/biosdisk.c: Likewise. * util/i386/pc/getroot.c: Likewise. * util/i386/pc/pupa-mkimage.c: Likewise. * util/i386/pc/pupa-setup.c: Likewise. 2004-02-15 Jeroen Dekkers * fs/ext2.c (pupa_ext2_read_file): Correct the value of BLOCKEND when it is EXT2_BLOCK_SIZE (data). New argument READ_HOOK, all callers changed. Set DATA->DISK->READ_HOOK to READ_HOOK before reading and reset it after reading. (pupa_ext2_close): Return PUPA_ERR_NONE. * include/pupa/i386/pc/linux.h (PUPA_LINUX_INITRD_MAX_ADDRESS): Correct value. (struct linux_kernel_header): Add kernel_version and initrd_addr_max. * loader/i386/pc/linux.c (pupa_rescue_cmd_linux): Check whether pupa_file_read succeeds. (pupa_rescue_cmd_initrd): Implement. 2003-12-03 Marco Gerards * fs/ext2.c (pupa_ext2_label): New function. (pupa_ext2_fs): Added label. * fs/fat.c (pupa_fat_label): New function. (pupa_fat_fs): Added label. * include/pupa/fs.h (struct pupa_fs): Added prototype label. * kern/misc.c (pupa_strndup): New function. * include/pupa/misc.h (pupa_strndup): New prototype. * include/pupa/normal.h: Include . (pupa_set_history): New prototype. (pupa_iterate_commands): New prototype. * normal/cmdline.c: Include , , . (hist_size): New variable. (hist_lines): Likewise. (hist_end): Likewise. (hist_used): Likewise. (pupa_set_history): New function. (pupa_history_get): Likewise. (pupa_history_add): Likewise. (pupa_history_replace): Likewise. (pupa_tab_complete): Likewise. (pupa_cmdline_run): Added tab completion and history buffer. Tab completion shows partitionnames while completing partitions, this feature was suggested by Jeff Bailey. * normal/command.c (pupa_iterate_commands): New function. * normal/main.c (PUPA_DEFAULT_HISTORY_SIZE): New macro. (pupa_normal_init): Initialize history buffer. (PUPA_MOD_INIT): Likewise. (pupa_normal_fini): Free the history buffer. (PUPA_MOD_FINI): Likewise. * util/console.c (pupa_ncurses_getkey): Accept 127 as backspace key. * aclocal.m4 (pupa_I386_CHECK_REGPARM_BUG): New DEFUN. * configure.ac [i386]: Check for regparam bug. (NESTED_FUNC_ATTR) [! i386]: Defined. 2003-11-17 Marco Gerards * conf/i386-pc.rmk (sbin_UTILITIES): Added pupa-emu. (pupa_setup_SOURCES): Added util/i386/pc/getroot.c. (pupa_emu_SOURCES): New variable. (pupa_emu_LDFLAGS): Likewise. * include/pupa/fs.h (pupa_ext2_init) [PUPA_UTIL]: New prototype. (pupa_ext2_fini) [PUPA_UTIL]: Likewise. * include/pupa/normal.h (pupa_normal_init) [PUPA_UTIL]: Likewise. (pupa_normal_fini) [PUPA_UTIL]: Likewise. * include/pupa/setjmp.h [PUPA_UTIL]: Include . (pupa_jmp_buf): New typedef. (pupa_setjmp) [PUPA_UTIL]: New macro. (pupa_longjmp) [PUPA_UTIL]: Likewise. * include/pupa/term.h (struct pupa_term): New member `refresh'. (pupa_refresh): New prototype. * include/pupa/util/getroot.h: New file. * kern/misc.c (pupa_vsprintf): Refresh the screen after updating it. * kern/rescue.c (pupa_rescue_get_command_line): Likewise. (pupa_rescue_cmd_cat): Likewise. (pupa_rescue_cmd_ls): Likewise. (pupa_rescue_cmd_testload): Likewise. (pupa_rescue_cmd_lsmod): Likewise. * normal/cmdline.c (pupa_cmdline_get): Likewise. * normal/menu.c (run_menu): Likewise. * kern/term.c (pupa_cls): Likewise. (pupa_refresh): New function. * normal/normal.c (pupa_normal_init) [PUPA_UTIL]: New function. (pupa_normal_fini) [PUPA_UTIL]: Likewise. * util/console.c: New file. * util/i386/pc/getroot.c: New file. * util/i386/pc/pupa-setup.c: Include . (pupa_putchar): New function. (pupa_refresh): Likewise. (xgetcwd): Function moved to ... (strip_extra_slashes): Likewise. (get_prefix): Likewise. * util/i386/pc/getroot.c: ... here. (find_root_device): Function moved and renamed to... * util/i386/pc/getroot.c (pupa_find_root_device): ... here. Changed all callers. * util/i386/pc/pupa-setup.c (guess_root_device): Function moved and renamed to... * util/i386/pc/getroot.c (pupa_guess_root_device): ... here. Changed all callers. * util/misc.c (pupa_memalign): New function. (pupa_mm_init_region): Likewise. (pupa_register_exported_symbols): Likewise. (pupa_putchar): Function removed. * util/pupa-emu.c: New file. 2003-11-16 Jeroen Dekkers * conf/i386-pc.rmk (pkgdata_MODULES): Add _multiboot.mod. (_multiboot_mod_SOURCES): New variable. (_multiboot_mod_CFLAGS): Likewise. * loader/i386/pc/multiboot.c: New file. * include/pupa/i386/pc/multiboot.h: Likewise. * kern/i386/pc/startup.S: Include pupa/machine/multiboot.h. (pupa_multiboot_real_boot): New function. * include/pupa/i386/pc/loader.h: Include pupa/machine/multiboot.h. (pupa_multiboot_real_boot): New prototype. (pupa_rescue_cmd_multiboot): Likewise (pupa_rescue_cmd_module): Likewise. * kern/loader.c (pupa_loader_set): Continue when pupa_loader_unload_func() fails. (pupa_loader_unset): New function. * include/pupa/loader.h (pupa_loader_unset): New prototype. * kern/misc.c (pupa_stpcpy): New function. * include/pupa/misc.h (pupa_stpcpy): New prototype. 2003-11-12 Marco Gerards * disk/i386/pc/biosdisk.c (pupa_biosdisk_open): Correctly check for available extensions. * include/pupa/i386/pc/time.h: New file. * kern/disk.c: Include . (PUPA_CACHE_TIMEOUT): New macro. (pupa_last_time): New variable. (pupa_disk_open): Flush the cache when there was a timeout. (pupa_disk_close): Reset the timer. * kern/i386/pc/startup.S (pupa_get_rtc): Renamed from pupa_currticks. * util/misc.c: Include (pupa_get_rtc): New function. 2003-11-09 Jeroen Dekkers * fs/ext2.c (struct pupa_ext2_inode): Declare struct datablocks as blocks. (pupa_ext2_get_file_block): Use blocks member. * fs/ext2.c (pupa_ext2_read_file): Only set skipfirst for the first block. Return -1 instead of pupa_errno on error. 2003-10-27 Marco Gerards * README: In the pupa-mkimage example use _chain instead of chain and ext2 instead of fat. * TODO: Replace ext2fs with jfs as an example. Add an item for adding journal playback for ext2fs. * conf/i386-pc.rmk (pupa_setup_SOURCES): Added fs/ext2.c. (pkgdata_MODULES): Added ext2.mod. (ext2_mod_SOURCES): New variable. (ext2_mod_CFLAGS): Likewise. * include/pupa/err.h (pupa_err_t): Added PUPA_ERR_SYMLINK_LOOP. * include/pupa/misc.h (pupa_strncpy): New prototype. (pupa_strcat): Likewise. (pupa_strncmp): Likewise. * kern/misc.c (pupa_strcat): Enable function. (pupa_strncpy): New function. (pupa_strncmp): Likewise. * fs/ext2.c: New file. * kern/disk.c (pupa_disk_read): Set pupa_errno to PUPA_ERR_NONE when the read failed before retrying. * util/i386/pc/biosdisk.c (_LARGEFILE_SOURCE): Removed. (_FILE_OFFSET_BITS): Likewise. * configure.ac: Added AC_SYS_LARGEFILE. 2003-09-25 Yoshinori K. Okuji * genmk.rb (PModule#rule): Make sure to get only symbol names from the output of nm. Reported by Robert Millan . 2003-09-25 Yoshinori K. Okuji I forgot to check in these changes for a long time. This adds incomplete support for VGA console, and this is still very buggy. Also, a lot of consideration is required for I18N, UNICODE, and VGA font issues. Therefore, assume that this is such that "better than nothing". * font/manager.c: New file. * include/pupa/font.h: Likewise. * include/pupa/i386/pc/vga.h: Likewise. * term/i386/pc/vga.c: Likewise. * util/unifont2pff.rb: Likewise. * conf/i386-pc.rmk (kernel_img_HEADERS): Added machine/vga.h. (pkgdata_MODULES): Added vga.mod and font.mod. (vga_mod_SOURCES): New variables. (vga_mod_CFLAGS): Likewise. (font_mod_SOURCES): Likewise. (font_mod_CFLAGS): Likewise. * include/pupa/err.h (PUPA_ERR_BAD_FONT): New constant. * include/pupa/term.h: Include pupa/err.h. (struct pupa_term): Added init and fini. Changed the argument of putchar to pupa_uint32_t. * include/pupa/i386/pc/console.h: Include pupa/symbol.h. (pupa_console_real_putchar): New prototype. (pupa_console_putchar): Removed. (pupa_console_checkkey): Exported. (pupa_console_getkey): Likewise. * kern/misc.c (pupa_vsprintf): Add support for UNICODE characters. * kern/term.c (pupa_term_set_current): Rewritten. (pupa_putchar): Likewise. (pupa_putcode): New function. * kern/i386/pc/startup.S (pupa_console_putchar): Renamed to ... (pupa_console_real_putchar): ... this. (pupa_vga_set_mode): New function. (pupa_vga_get_font): Likewise. * normal/command.c: Include pupa/term.h. (terminal_command): New function. (pupa_command_init): Register the command "terminal". * normal/menu.c (DISP_LEFT): Changed to a UNICODE value. (DISP_UP): Likewise. (DISP_RIGHT): Likewise. (DISP_DOWN): Likewise. (DISP_HLINE): Likewise. (DISP_VLINE): Likewise. (DISP_UL): Likewise. (DISP_UR): Likewise. (DISP_LL): Likewise. (DISP_LR): Likewise. * term/i386/pc/console.c (pupa_console_putchar): New function. 2003-02-08 NIIBE Yutaka * util/resolve.c (pupa_util_resolve_dependencies): BUG FIX. Reverse the path_list. * include/pupa/normal.h: Export pupa_register_command and pupa_unregister_command. * hello/hello.c (pupa_cmd_hello): New module. * conf/i386-pc.rmk: Added hello.mod. 2003-01-31 Yoshinori K. Okuji * kern/i386/pc/lzo1x.S: New file. * util/i386/pc/pupa-mkimage.c: Include lzo1x.h. (compress_kernel): New variable. (generate_image): Heavily modified to support compressing a large part of the core image. * util/misc.c (pupa_util_read_image): Fix a file descriptor leak. (pupa_util_load_image): New function. * kern/i386/pc/startup.S: Include pupa/machine/kernel.h. (pupa_compressed_size): New variable. (codestart): Enable Gate A20 here. Decompress the compressed part of the core image. Rearrange the code to put functions and variables which are required for initialization in the non-compressed part. Include lzo1x.S. * kern/i386/pc/init.c (pupa_machine_init): Don't enable Gate A20 here. * include/pupa/util/misc.h (pupa_util_write_image): Declared. * include/pupa/i386/pc/kernel.h (PUPA_KERNEL_MACHINE_COMPRESSED_SIZE): New macro. (PUPA_KERNEL_MACHINE_INSTALL_DOS_PART): Increased by 4. (PUPA_KERNEL_MACHINE_INSTALL_BSD_PART): Likewise. (PUPA_KERNEL_MACHINE_PREFIX): Likewise. (PUPA_KERNEL_MACHINE_RAW_SIZE): New macro. * conf/i386-pc.rmk (pupa_mkimage_LDFLAGS): New variable. * genmk.rb (Image#rule): Put LDFLAGS at the end of a line. (Utility#rule): Likewise. * configure.ac: Check if LZO is available. 2003-01-20 Yoshinori K. Okuji * include/pupa/normal.h: New file. * include/pupa/setjmp.h: Likewise. * include/pupa/i386/setjmp.h: Likewise. * normal/cmdline.c: Likewise. * normal/command.c: Likewise. * normal/main.c: Likewise. * normal/menu.c: Likewise. * normal/i386/setjmp.S: Likewise. * loader/i386/pc/linux.c (pupa_rescue_cmd_linux): Made global. (pupa_rescue_cmd_initrd): Likewise. * loader/i386/pc/chainloader.c (pupa_rescue_cmd_chainloader): Likewise. * kern/i386/pc/startup.S (translation_table): New variable. (translate_keycode): New function. (pupa_console_getkey): Call translate_keycode. * kern/rescue.c (attempt_normal_mode): New function. (pupa_enter_rescue_mode): Attempt to execute the normal mode. If it failed, print a message. * kern/mm.c (pupa_real_malloc): Print more information when a free magic is broken. (pupa_free): If the first free header is not free actually, set it to P. * kern/main.c (pupa_load_normal_mode): Just load the module "normal". (pupa_main): Don't print the message "Entering into rescue mode..." here. * include/pupa/i386/pc/loader.h (pupa_rescue_cmd_initrd): Declared. (pupa_rescue_cmd_initrd): Likewise. (pupa_rescue_cmd_initrd): Likewise. * include/pupa/symbol.h (FUNCTION): Specify the type. (VARIABLE): Likewise. * include/pupa/err.h (pupa_err_t): Added PUPA_ERR_UNKNOWN_COMMAND. * include/pupa/dl.h (pupa_dl_set_prefix): Exported. (pupa_dl_get_prefix): Likewise. * conf/i386-pc.rmk (pkgdata_MODULES): Added normal.mod. Added _chain.mod and _linux.mod instead of chain.mod and linux.mod. (chain_mod_SOURCES): Renamed to ... (_chain_mod_SOURCES): ... this. (chain_mod_CFLAGS): Renamed to ... (_chain_mod_CFLAGS): ... this. (linux_mod_SOURCES): Renamed to ... (_linux_mod_SOURCES): ... this. (linux_mod_CFLAGS): Renamed to ... (_linux_mod_CFLAGS): ... this. (normal_mod_SOURCES): New variable. (normal_mod_CFLAGS): Likewise. (normal_mod_ASFLAGS): Likewise. 2003-01-18 Yoshinori K. Okuji * kern/rescue.c (pupa_rescue_cmd_rmmod): Call pupa_dl_unload, if possible. * kern/dl.c (pupa_dl_ref): Refer depending modules recursively. (pupa_dl_unref): Unrefer depending modules recursively. Don't call pupa_dl_unload implicitly, because PUPA can crash if a module is unloaded before one depending on that module is unloaded. (pupa_dl_unload): Unload depending modules explicitly, if possible. 2003-01-17 Yoshinori K. Okuji * include/pupa/i386/pc/linux.h: New file. * loader/i386/pc/linux.c: Likewise. * loader/i386/pc/chainloader.c (pupa_chainloader_boot_sector): Removed. (pupa_chainloader_unload): Return PUPA_ERR_NONE. (pupa_rescue_cmd_chainloader): Read the image to 0x7C00 instead of PUPA_CHAINLOADER_BOOT_SECTOR. * kern/i386/pc/startup.S: Include pupa/machine/linux.h. (pupa_linux_prot_size): New variable. (pupa_linux_tmp_addr): Likewise. (pupa_linux_real_addr): Likewise. (pupa_linux_boot_zimage): New function. (pupa_linux_boot_bzimage): Likewise. * kern/i386/pc/init.c (struct mem_region): New structure. (MAX_REGIONS): New macro. (mem_regions): New variable. (num_regions): Likewise. (pupa_os_area_addr): Likewise. (pupa_os_area_size): Likewise. (pupa_lower_mem): Likewise. (pupa_upper_mem): Likewise. (add_mem_region): New function. (compact_mem_regions): Likewise. (pupa_machine_init): Set PUPA_LOWER_MEM and PUPA_UPPER_MEM to the size of the conventional memory and that of so-called upper memory (before the first memory hole). Instead of adding each found region to free memory, use add_mem_region and add them after removing overlaps. Also, add only 1/4 of the upper memory to free memory. The rest is used for loading OS images. Maybe this is ad hoc, but this makes it much easier to relocate OS images when booting. * kern/rescue.c (pupa_rescue_cmd_module): Removed. (pupa_enter_rescue_mode): Don't register initrd and module. * kern/mm.c: Include pupa/dl.h. * kern/main.c: Include pupa/file.h and pupa/device.h. * kern/loader.c (pupa_loader_load_module_func): Removed. (pupa_loader_load_module): Likewise. * kern/dl.c (pupa_dl_load): Use the suffix ``.mod'' instead of ``.o''. * include/pupa/i386/pc/loader.h (pupa_linux_prot_size): Declared. (pupa_linux_tmp_addr): Likewise. (pupa_linux_real_addr): Likewise. (pupa_linux_boot_zimage): Likewise. (pupa_linux_boot_bzimage): Likewise. * include/pupa/i386/pc/init.h (pupa_lower_mem): Declared. (pupa_upper_mem): Likewise. (pupa_gate_a20): Don't export, because turning off Gate A20 in a module is too dangerous. * include/pupa/loader.h (pupa_os_area_addr): Declared. (pupa_os_area_size): Likewise. (pupa_loader_set): Remove the first argument. Loader doesn't manage modules or initrd any longer. (pupa_loader_load_module): Removed. * conf/i386-pc.rmk (pkgdata_MODULES): Added linux.mod. (linux_mod_SOURCES): New variable. (linux_mod_CFLAGS): Likewise. 2003-01-07 Yoshinori K. Okuji * util/i386/pc/pupa-setup.c (setup): Convert the endianness of the length of a blocklist correctly. * util/i386/pc/biosdisk.c (pupa_util_biosdisk_open) [__linux__]: Use ioctl only if the OS file is a block device. (pupa_util_biosdisk_open): Don't use ST.ST_BLOCKS, because it is not very useful for normal files. * kern/main.c (pupa_set_root_dev): New function. (pupa_load_normal_mode): Likewise. (pupa_main): Call those above. * include/pupa/types.h (pupa_swap_bytes16): Cast the result to pupa_uint16_t. * include/pupa/kernel.h (pupa_enter_normal_mode): Removed. 2003-01-06 Yoshinori K. Okuji * util/i386/pc/pupa-setup.c: Include pupa/machine/kernel.h. (setup): Configure the installed partition information and the dl prefix. * loader/i386/pc/chainloader.c (my_mod): New variable. (pupa_chainloader_unload): New function. (pupa_rescue_cmd_chainloader): Refer itself. (PUPA_MOD_INIT): Save its own module in MY_MOD. * kern/i386/pc/startup.S (install_partition): Removed. (version_string): Likewise. (config_file): Likewise. (pupa_install_dos_part): New variable. (pupa_install_bsd_part): Likewise. (pupa_prefix): Likewise. (pupa_chainloader_real_boot): Call pupa_dl_unload_all. * kern/i386/pc/init.c: Include pupa/machine/kernel.h, pupa/dl.h and pupa/misc.h. (make_install_device): New function. (pupa_machine_init): Set the dl prefix. * kern/rescue.c: Include pupa/rescue.h and pupa/dl.h. (buf): Renamed to ... (linebuf): ... this. (pupa_rescue_cmd_prefix): New function. (pupa_rescue_cmd_insmod): Likewise. (pupa_rescue_cmd_rmmod): Likewise. (pupa_rescue_cmd_lsmod): Likewise. (pupa_enter_rescue_mode): Register new commands: prefix, insmod, rmmod and lsmod. * kern/mm.c (pupa_memalign): If failed even after invalidating disk caches, unload unneeded modules and retry. * kern/misc.c (pupa_memmove): New function. (pupa_memcpy): Removed. (pupa_strcpy): New function. (pupa_itoa): Made static. * kern/dl.c (pupa_dl_iterate): New function. (pupa_dl_ref): Likewise. (pupa_dl_unref): Likewise. (pupa_dl_unload): Return if succeeded or not. (pupa_dl_unload_unneeded): New function. (pupa_dl_unload_all): Likewise. (pupa_dl_init): Renamed to ... (pupa_dl_set_prefix): ... this. (pupa_dl_get_prefix): New function. * include/pupa/i386/pc/kernel.h: Include pupa/types.h. (PUPA_KERNEL_MACHINE_INSTALL_DOS_PART): New macro. (PUPA_KERNEL_MACHINE_INSTALL_BSD_PART): Likewise. (PUPA_KERNEL_MACHINE_PREFIX): Likewise. (pupa_install_dos_part): Declared. (pupa_install_bsd_part): Likewise. (pupa_prefix): Likewise. (pupa_boot_drive): Likewise. * include/pupa/types.h: Fix a typo. * include/pupa/misc.h (pupa_memcpy): New macro. Just an alias to pupa_memmove. (pupa_memmove): Declared. (pupa_strcpy): Likewise. * include/pupa/dl.h (PUPA_MOD_INIT): Change the prototype. Now pupa_mod_init takes one argument, its own module. (pupa_dl_unload_unneeded): Declared. (pupa_dl_unload_all): Likewise. (pupa_dl_ref): Likewise. (pupa_dl_unref): Likewise. (pupa_dl_iterate): Likewise. (pupa_dl_init): Renamed to ... (pupa_dl_set_prefix): ... this. (pupa_dl_get_prefix): Declared. * fs/fat.c [!PUPA_UTIL] (my_mod): New variable. (pupa_fat_dir) [!PUPA_UTIL]: Prevent the fat module from being unloaded. (pupa_fat_open) [!PUPA_UTIL]: Refer itself if succeeded. (pupa_fat_close) [!PUPA_UTIL]: Unrefer itself. * configure.ac (tmp_CFLAGS): Added -Wshadow, -Wpointer-arith, -Wmissing-prototypes, -Wundef and -Wstrict-prototypes. 2003-01-03 Yoshinori K. Okuji * util/i386/pc/pupa-setup.c (setup): Define the internal function find_first_partition_start at the top level, because GCC 3.0.x cannot compile internal functions in deeper scopes correctly. (find_root_device): Use lstat instead of stat. Don't follow symbolic links. Fix the path-constructing code. * util/i386/pc/biosdisk.c [__linux__] (BLKFLSBUF): New macro. (pupa_util_biosdisk_open) [__linux__]: Get the size of a device by a BLKGETSIZE ioctl first, because block devices don't fill the member st_mode of the structure stat on Linux. [__linux__] (linux_find_partition): Use a temporary buffer REAL_DEV for the working space. Copy it to DEV before returning. (open_device) [__linux__]: Call ioctl with BLKFLSBUF to make the buffer cache consistent. (get_os_disk) [__linux__]: Use the length 5 instead of 4 for strncmp. The previous value was merely wrong. (pupa_util_biosdisk_get_pupa_dev): Use stat instead of lstat. * fs/fat.c (pupa_fat_read_data): Shift 4 instead of 12 when the FAT size is 12. The previous value was merely wrong. * kern/main.c (pupa_main): Don't split the starting message from newlines. * kern/term.c (pupa_putchar): Put CR after LF instead of before LF, because BIOS goes crazy about character attributes in this case. 2003-01-03 Yoshinori K. Okuji * include/i386/pc/util/biosdisk.h: New file. * util/i386/pc/biosdisk.c: Likewise. * util/i386/pc/pupa-setup.c: Likewise. * Makefile.in (INCLUDE_DISTFILES): Added include/pupa/i386/pc/util/biosdisk.h. (UTIL_DISTFILES): Added biosdisk.c and pupa-setup.c under the directory util/i386/pc. (install-local): Added a rule for sbin_UTILITIES. (uninstall): Likewise. * util/i386/pc/pupa-mkimage.c (usage): Fix a typo in the doc. * util/misc.c (xrealloc): New function. (pupa_malloc): Likewise. (pupa_free): Likewise. (pupa_realloc): Likewise. (pupa_stop): Likewise. (pupa_putchar): Likewise. * kern/disk.c (pupa_disk_read): Prevent L from underflowing. * include/pupa/util/misc.h (xrealloc): Declared. * include/pupa/i386/pc/boot.h (PUPA_BOOT_MACHINE_BPB_START): New macro. (PUPA_BOOT_MACHINE_BPBEND): Renamed to ... (PUPA_BOOT_MACHINE_BPB_END): ... this. * include/pupa/fs.h [PUPA_UTIL] (pupa_fat_init): Declared. [PUPA_UTIL] (pupa_fat_fini): Likewise. * fs/fat.c [PUPA_UTIL] (pupa_fat_init): Defined. Maybe a better way should be implemented. [PUPA_UTIL] (pupa_fat_fini): Likewise. * disk/i386/pc/biosdisk.c (pupa_biosdisk_call_hook): Increase the size of NAME for safety. (pupa_biosdisk_iterate): Search hard disks to 0x90 instead of 0x88. * conf/i386-pc.rmk (sbin_UTILITIES): New variable. (pupa_setup_SOURCES): Likewise. * genmk.rb (Utility#rule): Add $(BUILD_CFLAGS) into the rules. 2002-12-28 Yoshinori K. Okuji * kern/i386/pc/startup.S (push_get_mmap_entry): Revert to a bunch of pushl's from pusha, because this destroys the return value. 2002-12-28 Yoshinori K. Okuji Use -mrtd and -mregparm=3 to reduce the generated code sizes. This means that any missing prototypes could be fatal. Also, you must take care when writing assembly code. See the comments at the beginning of startup.S, for more details. * kern/i386/pc/startup.S (pupa_halt): Modified for the new compilation mechanism. (pupa_chainloader_real_boot): Likewise. (pupa_biosdisk_rw_int13_extensions): Likewise. (pupa_biosdisk_rw_standard): Likewise. (pupa_biosdisk_check_int13_extensions): Likewise. (pupa_biosdisk_get_diskinfo_int13_extensions): Likewise. (pupa_biosdisk_get_diskinfo_standard): Likewise. (pupa_get_memsize): Likewise. (pupa_get_mmap_entry): Likewise. (pupa_console_putchar): Likewise. (pupa_console_setcursor): Likewise. (pupa_getrtsecs): Use pushl instead of push. * kern/i386/pc/init.c (pupa_machine_init): Use the scratch memory instead of the stack for a mmap entry, because some BIOSes may ignore the maximum size and overflow. * conf/i386-pc.rmk (COMMON_CFLAGS): Added -mrtd and -mregparm=3. * genmk.rb (PModule#rule): Compile automatically generated sources with module-specific CFLAGS as well as other sources. 2002-12-27 Yoshinori K. Okuji * configure.ac: Check ld. Replace CFLAGS and CPPFLAGS with BUILD_CFLAGS and BUILD_CPPFLAGS respectively, before checking endianness and sizes. * Makefile.in (LD): New variable. 2002-12-27 Yoshinori K. Okuji * Makefile.in (BUILD_CC): CC -> BUILD_CC. 2002-12-27 Yoshinori K. Okuji * Changelog: New file. M 644 inline docs/grub.texi data 166308 \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename grub.info @include version.texi @settitle GNU GRUB Manual @value{VERSION} @c Unify all our little indices for now. @syncodeindex fn cp @syncodeindex vr cp @syncodeindex ky cp @syncodeindex pg cp @syncodeindex tp cp @c %**end of header @footnotestyle separate @paragraphindent 3 @finalout @copying This manual is for GNU GRUB (version @value{VERSION}, @value{UPDATED}). Copyright @copyright{} 1999,2000,2001,2002,2004,2006,2008,2009,2010 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections. @end quotation @end copying @dircategory Kernel @direntry * GRUB: (grub). The GRand Unified Bootloader * grub-install: (grub)Invoking grub-install. Install GRUB on your drive * grub-mkconfig: (grub)Invoking grub-mkconfig. Generate GRUB configuration * grub-mkpasswd-pbkdf2: (grub)Invoking grub-mkpasswd-pbkdf2. * grub-mkrescue: (grub)Invoking grub-mkrescue. Make a GRUB rescue image @end direntry @setchapternewpage odd @titlepage @sp 10 @title the GNU GRUB manual @subtitle The GRand Unified Bootloader, version @value{VERSION}, @value{UPDATED}. @author Gordon Matzigkeit @author Yoshinori K. Okuji @author Colin Watson @author Colin D. Bennett @c The following two commands start the copyright page. @page @vskip 0pt plus 1filll @insertcopying @end titlepage @c Output the table of contents at the beginning. @contents @finalout @headings double @ifnottex @node Top @top GNU GRUB manual This is the documentation of GNU GRUB, the GRand Unified Bootloader, a flexible and powerful boot loader program for a wide range of architectures. This edition documents version @value{VERSION}. @insertcopying @end ifnottex @menu * Introduction:: Capturing the spirit of GRUB * Naming convention:: Names of your drives in GRUB * Installation:: Installing GRUB on your drive * Booting:: How to boot different operating systems * Configuration:: Writing your own configuration file * Theme file format:: Format of GRUB theme files * Network:: Downloading OS images from a network * Serial terminal:: Using GRUB via a serial line * Vendor power-on keys:: Changing GRUB behaviour on vendor power-on keys * Images:: GRUB image files * Filesystem:: Filesystem syntax and semantics * Interface:: The menu and the command-line * Environment:: GRUB environment variables * Commands:: The list of available builtin commands * Security:: Authentication and authorisation * Supported kernels:: The list of supported kernels * Troubleshooting:: Error messages produced by GRUB * Invoking grub-install:: How to use the GRUB installer * Invoking grub-mkconfig:: Generate a GRUB configuration file * Invoking grub-mkpasswd-pbkdf2:: Generate GRUB password hashes * Invoking grub-mkrescue:: Make a GRUB rescue image * Obtaining and Building GRUB:: How to obtain and build GRUB * Reporting bugs:: Where you should send a bug report * Future:: Some future plans on GRUB * Internals:: Hacking GRUB * Copying This Manual:: Copying This Manual * Index:: @end menu @node Introduction @chapter Introduction to GRUB @menu * Overview:: What exactly GRUB is and how to use it * History:: From maggot to house fly * Changes from GRUB Legacy:: Differences from previous versions * Features:: GRUB features * Role of a boot loader:: The role of a boot loader @end menu @node Overview @section Overview Briefly, a @dfn{boot loader} is the first software program that runs when a computer starts. It is responsible for loading and transferring control to an operating system @dfn{kernel} software (such as Linux or GNU Mach). The kernel, in turn, initializes the rest of the operating system (e.g. a GNU system). GNU GRUB is a very powerful boot loader, which can load a wide variety of free operating systems, as well as proprietary operating systems with chain-loading@footnote{@dfn{chain-load} is the mechanism for loading unsupported operating systems by loading another boot loader. It is typically used for loading DOS or Windows.}. GRUB is designed to address the complexity of booting a personal computer; both the program and this manual are tightly bound to that computer platform, although porting to other platforms may be addressed in the future. One of the important features in GRUB is flexibility; GRUB understands filesystems and kernel executable formats, so you can load an arbitrary operating system the way you like, without recording the physical position of your kernel on the disk. Thus you can load the kernel just by specifying its file name and the drive and partition where the kernel resides. When booting with GRUB, you can use either a command-line interface (@pxref{Command-line interface}), or a menu interface (@pxref{Menu interface}). Using the command-line interface, you type the drive specification and file name of the kernel manually. In the menu interface, you just select an OS using the arrow keys. The menu is based on a configuration file which you prepare beforehand (@pxref{Configuration}). While in the menu, you can switch to the command-line mode, and vice-versa. You can even edit menu entries before using them. In the following chapters, you will learn how to specify a drive, a partition, and a file name (@pxref{Naming convention}) to GRUB, how to install GRUB on your drive (@pxref{Installation}), and how to boot your OSes (@pxref{Booting}), step by step. @node History @section History of GRUB GRUB originated in 1995 when Erich Boleyn was trying to boot the GNU Hurd with the University of Utah's Mach 4 microkernel (now known as GNU Mach). Erich and Brian Ford designed the Multiboot Specification (@pxref{Top, Multiboot Specification, Motivation, multiboot, The Multiboot Specification}), because they were determined not to add to the large number of mutually-incompatible PC boot methods. Erich then began modifying the FreeBSD boot loader so that it would understand Multiboot. He soon realized that it would be a lot easier to write his own boot loader from scratch than to keep working on the FreeBSD boot loader, and so GRUB was born. Erich added many features to GRUB, but other priorities prevented him from keeping up with the demands of its quickly-expanding user base. In 1999, Gordon Matzigkeit and Yoshinori K. Okuji adopted GRUB as an official GNU package, and opened its development by making the latest sources available via anonymous CVS. @xref{Obtaining and Building GRUB}, for more information. Over the next few years, GRUB was extended to meet many needs, but it quickly became clear that its design was not keeping up with the extensions being made to it, and we reached the point where it was very difficult to make any further changes without breaking existing features. Around 2002, Yoshinori K. Okuji started work on PUPA (Preliminary Universal Programming Architecture for GNU GRUB), aiming to rewrite the core of GRUB to make it cleaner, safer, more robust, and more powerful. PUPA was eventually renamed to GRUB 2, and the original version of GRUB was renamed to GRUB Legacy. Small amounts of maintenance continued to be done on GRUB Legacy, but the last release (0.97) was made in 2005 and at the time of writing it seems unlikely that there will be another. By around 2007, GNU/Linux distributions started to use GRUB 2 to limited extents, and by the end of 2009 multiple major distributions were installing it by default. @node Changes from GRUB Legacy @section Differences from previous versions GRUB 2 is a rewrite of GRUB (@pxref{History}), although it shares many characteristics with the previous version, now known as GRUB Legacy. Users of GRUB Legacy may need some guidance to find their way around this new version. @itemize @bullet @item The configuration file has a new name (@file{grub.cfg} rather than @file{menu.lst} or @file{grub.conf}), new syntax (@pxref{Configuration}) and many new commands (@pxref{Commands}). Configuration cannot be copied over directly, although most GRUB Legacy users should not find the syntax too surprising. @item @file{grub.cfg} is typically automatically generated by @command{grub-mkconfig} (@pxref{Simple configuration}). This makes it easier to handle versioned kernel upgrades. @item Partition numbers in GRUB device names now start at 1, not 0 (@pxref{Naming convention}). @item The configuration file is now written in something closer to a full scripting language: variables, conditionals, and loops are available. @item A small amount of persistent storage is available across reboots, using the @command{save_env} and @command{load_env} commands in GRUB and the @command{grub-editenv} utility. This is not available in all configurations (@pxref{Environment block}). @item GRUB 2 has more reliable ways to find its own files and those of target kernels on multiple-disk systems, and has commands (@pxref{search}) to find devices using file system labels or Universally Unique Identifiers (UUIDs). @item GRUB 2 is available for several other types of system in addition to the PC BIOS systems supported by GRUB Legacy: PC EFI, PC coreboot, PowerPC, SPARC, and MIPS Lemote Yeeloong are all supported. @item Many more file systems are supported, including but not limited to ext4, HFS+, and NTFS. @item GRUB 2 can read files directly from LVM and RAID devices. @item A graphical terminal and a graphical menu system are available. @item GRUB 2's interface can be translated, including menu entry names. @item The image files (@pxref{Images}) that make up GRUB have been reorganised; Stage 1, Stage 1.5, and Stage 2 are no more. @item GRUB 2 puts many facilities in dynamically loaded modules, allowing the core image to be smaller, and allowing the core image to be built in more flexible ways. @end itemize @node Features @section GRUB features The primary requirement for GRUB is that it be compliant with the @dfn{Multiboot Specification}, which is described in @ref{Top, Multiboot Specification, Motivation, multiboot, The Multiboot Specification}. The other goals, listed in approximate order of importance, are: @itemize @bullet{} @item Basic functions must be straightforward for end-users. @item Rich functionality to support kernel experts and designers. @item Backward compatibility for booting FreeBSD, NetBSD, OpenBSD, and Linux. Proprietary kernels (such as DOS, Windows NT, and OS/2) are supported via a chain-loading function. @end itemize Except for specific compatibility modes (chain-loading and the Linux @dfn{piggyback} format), all kernels will be started in much the same state as in the Multiboot Specification. Only kernels loaded at 1 megabyte or above are presently supported. Any attempt to load below that boundary will simply result in immediate failure and an error message reporting the problem. In addition to the requirements above, GRUB has the following features (note that the Multiboot Specification doesn't require all the features that GRUB supports): @table @asis @item Recognize multiple executable formats Support many of the @dfn{a.out} variants plus @dfn{ELF}. Symbol tables are also loaded. @item Support non-Multiboot kernels Support many of the various free 32-bit kernels that lack Multiboot compliance (primarily FreeBSD, NetBSD, OpenBSD, and Linux). Chain-loading of other boot loaders is also supported. @item Load multiples modules Fully support the Multiboot feature of loading multiple modules. @item Load a configuration file Support a human-readable text configuration file with preset boot commands. You can also load another configuration file dynamically and embed a preset configuration file in a GRUB image file. The list of commands (@pxref{Commands}) are a superset of those supported on the command-line. An example configuration file is provided in @ref{Configuration}. @item Provide a menu interface A menu interface listing preset boot commands, with a programmable timeout, is available. There is no fixed limit on the number of boot entries, and the current implementation has space for several hundred. @item Have a flexible command-line interface A fairly flexible command-line interface, accessible from the menu, is available to edit any preset commands, or write a new boot command set from scratch. If no configuration file is present, GRUB drops to the command-line. The list of commands (@pxref{Commands}) are a subset of those supported for configuration files. Editing commands closely resembles the Bash command-line (@pxref{Command Line Editing, Bash, Command Line Editing, features, Bash Features}), with @key{TAB}-completion of commands, devices, partitions, and files in a directory depending on context. @item Support multiple filesystem types Support multiple filesystem types transparently, plus a useful explicit blocklist notation. The currently supported filesystem types are @dfn{Amiga Fast FileSystem (AFFS)}, @dfn{AtheOS fs}, @dfn{BeFS}, @dfn{cpio}, @dfn{Linux ext2/ext3/ext4}, @dfn{DOS FAT12/FAT16/FAT32}, @dfn{HFS}, @dfn{HFS+}, @dfn{ISO9660}, @dfn{JFS}, @dfn{Minix fs}, @dfn{nilfs2}, @dfn{NTFS}, @dfn{ReiserFS}, @dfn{Amiga Smart FileSystem (SFS)}, @dfn{tar}, @dfn{UDF}, @dfn{BSD UFS/UFS2}, and @dfn{XFS}. @xref{Filesystem}, for more information. @item Support automatic decompression Can decompress files which were compressed by @command{gzip} or @command{xz}@footnote{Only CRC32 data integrity check is supported (xz default is CRC64 so one should use --check=crc32 option). LZMA BCJ filters are supported.}. This function is both automatic and transparent to the user (i.e. all functions operate upon the uncompressed contents of the specified files). This greatly reduces a file size and loading time, a particularly great benefit for floppies.@footnote{There are a few pathological cases where loading a very badly organized ELF kernel might take longer, but in practice this never happen.} It is conceivable that some kernel modules should be loaded in a compressed state, so a different module-loading command can be specified to avoid uncompressing the modules. @item Access data on any installed device Support reading data from any or all floppies or hard disk(s) recognized by the BIOS, independent of the setting of the root device. @item Be independent of drive geometry translations Unlike many other boot loaders, GRUB makes the particular drive translation irrelevant. A drive installed and running with one translation may be converted to another translation without any adverse effects or changes in GRUB's configuration. @item Detect all installed @sc{ram} GRUB can generally find all the installed @sc{ram} on a PC-compatible machine. It uses an advanced BIOS query technique for finding all memory regions. As described on the Multiboot Specification (@pxref{Top, Multiboot Specification, Motivation, multiboot, The Multiboot Specification}), not all kernels make use of this information, but GRUB provides it for those who do. @item Support Logical Block Address mode In traditional disk calls (called @dfn{CHS mode}), there is a geometry translation problem, that is, the BIOS cannot access over 1024 cylinders, so the accessible space is limited to at least 508 MB and to at most 8GB. GRUB can't universally solve this problem, as there is no standard interface used in all machines. However, several newer machines have the new interface, Logical Block Address (@dfn{LBA}) mode. GRUB automatically detects if LBA mode is available and uses it if available. In LBA mode, GRUB can access the entire disk. @item Support network booting GRUB is basically a disk-based boot loader but also has network support. You can load OS images from a network by using the @dfn{TFTP} protocol. @item Support remote terminals To support computers with no console, GRUB provides remote terminal support, so that you can control GRUB from a remote host. Only serial terminal support is implemented at the moment. @end table @node Role of a boot loader @section The role of a boot loader The following is a quotation from Gordon Matzigkeit, a GRUB fanatic: @quotation Some people like to acknowledge both the operating system and kernel when they talk about their computers, so they might say they use ``GNU/Linux'' or ``GNU/Hurd''. Other people seem to think that the kernel is the most important part of the system, so they like to call their GNU operating systems ``Linux systems.'' I, personally, believe that this is a grave injustice, because the @emph{boot loader} is the most important software of all. I used to refer to the above systems as either ``LILO''@footnote{The LInux LOader, a boot loader that everybody uses, but nobody likes.} or ``GRUB'' systems. Unfortunately, nobody ever understood what I was talking about; now I just use the word ``GNU'' as a pseudonym for GRUB. So, if you ever hear people talking about their alleged ``GNU'' systems, remember that they are actually paying homage to the best boot loader around@dots{} GRUB! @end quotation We, the GRUB maintainers, do not (usually) encourage Gordon's level of fanaticism, but it helps to remember that boot loaders deserve recognition. We hope that you enjoy using GNU GRUB as much as we did writing it. @node Naming convention @chapter Naming convention The device syntax used in GRUB is a wee bit different from what you may have seen before in your operating system(s), and you need to know it so that you can specify a drive/partition. Look at the following examples and explanations: @example (fd0) @end example First of all, GRUB requires that the device name be enclosed with @samp{(} and @samp{)}. The @samp{fd} part means that it is a floppy disk. The number @samp{0} is the drive number, which is counted from @emph{zero}. This expression means that GRUB will use the whole floppy disk. @example (hd0,msdos2) @end example Here, @samp{hd} means it is a hard disk drive. The first integer @samp{0} indicates the drive number, that is, the first hard disk, the string @samp{msdos} indicates the partition scheme, while the second integer, @samp{2}, indicates the partition number (or the @sc{pc} slice number in the BSD terminology). The partition numbers are counted from @emph{one}, not from zero (as was the case in previous versions of GRUB). This expression means the second partition of the first hard disk drive. In this case, GRUB uses one partition of the disk, instead of the whole disk. @example (hd0,msdos5) @end example This specifies the first @dfn{extended partition} of the first hard disk drive. Note that the partition numbers for extended partitions are counted from @samp{5}, regardless of the actual number of primary partitions on your hard disk. @example (hd1,msdos1,bsd1) @end example This means the BSD @samp{a} partition on first @sc{pc} slice number of the second hard disk. Of course, to actually access the disks or partitions with GRUB, you need to use the device specification in a command, like @samp{set root=(fd0)} or @samp{parttool (hd0,msdos3) hidden-}. To help you find out which number specifies a partition you want, the GRUB command-line (@pxref{Command-line interface}) options have argument completion. This means that, for example, you only need to type @example set root=( @end example followed by a @key{TAB}, and GRUB will display the list of drives, partitions, or file names. So it should be quite easy to determine the name of your target partition, even with minimal knowledge of the syntax. Note that GRUB does @emph{not} distinguish IDE from SCSI - it simply counts the drive numbers from zero, regardless of their type. Normally, any IDE drive number is less than any SCSI drive number, although that is not true if you change the boot sequence by swapping IDE and SCSI drives in your BIOS. Now the question is, how to specify a file? Again, consider an example: @example (hd0,msdos1)/vmlinuz @end example This specifies the file named @samp{vmlinuz}, found on the first partition of the first hard disk drive. Note that the argument completion works with file names, too. That was easy, admit it. Now read the next chapter, to find out how to actually install GRUB on your drive. @node Installation @chapter Installation In order to install GRUB as your boot loader, you need to first install the GRUB system and utilities under your UNIX-like operating system (@pxref{Obtaining and Building GRUB}). You can do this either from the source tarball, or as a package for your OS. After you have done that, you need to install the boot loader on a drive (floppy or hard disk). There are two ways of doing that - either using the utility @command{grub-install} (@pxref{Invoking grub-install}) on a UNIX-like OS, or by running GRUB itself from a floppy. These are quite similar, however the utility might probe a wrong BIOS drive, so you should be careful. Also, if you install GRUB on a UNIX-like OS, please make sure that you have an emergency boot disk ready, so that you can rescue your computer if, by any chance, your hard drive becomes unusable (unbootable). GRUB comes with boot images, which are normally put in the directory @file{/usr/lib/grub/i386-pc}. Hereafter, the directory where GRUB images are initially placed (normally @file{/usr/lib/grub/i386-pc}) will be called the @dfn{image directory}, and the directory where the boot loader needs to find them (usually @file{/boot/grub}) will be called the @dfn{boot directory}. @menu * Installing GRUB using grub-install:: * Making a GRUB bootable CD-ROM:: * Device map:: * BIOS installation:: @end menu @node Installing GRUB using grub-install @section Installing GRUB using grub-install @strong{Caution:} This procedure is definitely less safe, because there are several ways in which your computer can become unbootable. For example, most operating systems don't tell GRUB how to map BIOS drives to OS devices correctly---GRUB merely @dfn{guesses} the mapping. This will succeed in most cases, but not always. Therefore, GRUB provides you with a map file called the @dfn{device map}, which you must fix if it is wrong. @xref{Device map}, for more details. For information on where GRUB should be installed on PC BIOS platforms, @pxref{BIOS installation}. If you still do want to install GRUB under a UNIX-like OS (such as @sc{gnu}), invoke the program @command{grub-install} (@pxref{Invoking grub-install}) as the superuser (@dfn{root}). The usage is basically very simple. You only need to specify one argument to the program, namely, where to install the boot loader. The argument can be either a device file (like @samp{/dev/hda}) or a partition specified in GRUB's notation. For example, under Linux the following will install GRUB into the MBR of the first IDE disk: @example # @kbd{grub-install /dev/hda} @end example Likewise, under GNU/Hurd, this has the same effect: @example # @kbd{grub-install /dev/hd0} @end example But all the above examples assume that GRUB should use images under the root directory. If you want GRUB to use images under a directory other than the root directory, you need to specify the option @option{--root-directory}. The typical usage is that you create a GRUB boot floppy with a filesystem. Here is an example: @example @group # @kbd{mke2fs /dev/fd0} # @kbd{mount -t ext2 /dev/fd0 /mnt} # @kbd{grub-install --root-directory=/mnt fd0} # @kbd{umount /mnt} @end group @end example Another example is when you have a separate boot partition which is mounted at @file{/boot}. Since GRUB is a boot loader, it doesn't know anything about mountpoints at all. Thus, you need to run @command{grub-install} like this: @example # @kbd{grub-install --root-directory=/boot /dev/hda} @end example By the way, as noted above, it is quite difficult to guess BIOS drives correctly under a UNIX-like OS. Thus, @command{grub-install} will prompt you to check if it could really guess the correct mappings, after the installation. The format is defined in @ref{Device map}. Please be quite careful. If the output is wrong, it is unlikely that your computer will be able to boot with no problem. Some BIOSes have a bug of exposing the first partition of a USB drive as a floppy instead of exposing the USB drive as a hard disk (they call it ``USB-FDD'' boot). In such cases, you need to install like this: @example # @kbd{losetup /dev/loop0 /dev/sdb1} # @kbd{mount /dev/loop0 /mnt/usb} # @kbd{grub-install --boot-directory=/mnt/usb/bugbios --force --allow-floppy /dev/loop0} @end example This install doesn't conflict with standard install as long as they are in separate directories. Note that @command{grub-install} is actually just a shell script and the real task is done by @command{grub-mkimage} and @command{grub-setup}. Therefore, you may run those commands directly to install GRUB, without using @command{grub-install}. Don't do that, however, unless you are very familiar with the internals of GRUB. Installing a boot loader on a running OS may be extremely dangerous. @node Making a GRUB bootable CD-ROM @section Making a GRUB bootable CD-ROM GRUB supports the @dfn{no emulation mode} in the El Torito specification@footnote{El Torito is a specification for bootable CD using BIOS functions.}. This means that you can use the whole CD-ROM from GRUB and you don't have to make a floppy or hard disk image file, which can cause compatibility problems. For booting from a CD-ROM, GRUB uses a special image called @file{cdboot.img}, which is concatenated with @file{core.img}. The @file{core.img} used for this should be built with at least the @samp{iso9660} and @samp{biosdisk} modules. Your bootable CD-ROM will usually also need to include a configuration file @file{grub.cfg} and some other GRUB modules. To make a simple generic GRUB rescue CD, you can use the @command{grub-mkrescue} program (@pxref{Invoking grub-mkrescue}): @example $ @kbd{grub-mkrescue -o grub.iso} @end example You will often need to include other files in your image. To do this, first make a top directory for the bootable image, say, @samp{iso}: @example $ @kbd{mkdir iso} @end example Make a directory for GRUB: @example $ @kbd{mkdir -p iso/boot/grub} @end example If desired, make the config file @file{grub.cfg} under @file{iso/boot/grub} (@pxref{Configuration}), and copy any files and directories for the disc to the directory @file{iso/}. Finally, make the image: @example $ @kbd{grub-mkrescue -o grub.iso iso} @end example This produces a file named @file{grub.iso}, which then can be burned into a CD (or a DVD), or written to a USB mass storage device. The root device will be set up appropriately on entering your @file{grub.cfg} configuration file, so you can refer to file names on the CD without needing to use an explicit device name. This makes it easier to produce rescue images that will work on both optical drives and USB mass storage devices. @node Device map @section The map between BIOS drives and OS devices The @command{grub-mkdevicemap} program can be used to create the @dfn{device map file}. It is often run automatically by tools such as @command{grub-install} if the device map file does not already exist. The file name @file{/boot/grub/device.map} is preferred. If the device map file exists, the GRUB utilities (@command{grub-probe}, @command{grub-setup}, etc.) read it to map BIOS drives to OS devices. This file consists of lines like this: @example @var{device} @var{file} @end example @var{device} is a drive specified in the GRUB syntax (@pxref{Device syntax}), and @var{file} is an OS file, which is normally a device file. Historically, the device map file was used because GRUB device names had to be used in the configuration file, and they were derived from BIOS drive numbers. The map between BIOS drives and OS devices cannot always be guessed correctly: for example, GRUB will get the order wrong if you exchange the boot sequence between IDE and SCSI in your BIOS. Unfortunately, even OS device names are not always stable. Modern versions of the Linux kernel may probe drives in a different order from boot to boot, and the prefix (@file{/dev/hd*} versus @file{/dev/sd*}) may change depending on the driver subsystem in use. As a result, the device map file required frequent editing on some systems. GRUB avoids this problem nowadays by using UUIDs or file system labels when generating @file{grub.cfg}, and we advise that you do the same for any custom menu entries you write. If the device map file does not exist, then the GRUB utilities will assume a temporary device map on the fly. This is often good enough, particularly in the common case of single-disk systems. However, the device map file is not entirely obsolete yet, and there are still some situations that require it to exist. If necessary, you may edit the file if @command{grub-mkdevicemap} makes a mistake. You can put any comments in the file if needed, as the GRUB utilities assume that a line is just a comment if the first character is @samp{#}. @node BIOS installation @section BIOS installation @heading MBR The partition table format traditionally used on PC BIOS platforms is called the Master Boot Record (MBR) format; this is the format that allows up to four primary partitions and additional logical partitions. With this partition table format, there are two ways to install GRUB: it can be embedded in the area between the MBR and the first partition (called by various names, such as the "boot track", "MBR gap", or "embedding area", and which is usually at least 31 KiB), or the core image can be installed in a file system and a list of the blocks that make it up can be stored in the first sector of that partition. Each of these has different problems. There is no way to reserve space in the embedding area with complete safety, and some proprietary software is known to use it to make it difficult for users to work around licensing restrictions; and systems are sometimes partitioned without leaving enough space before the first partition. On the other hand, installing to a filesystem means that GRUB is vulnerable to its blocks being moved around by filesystem features such as tail packing, or even by aggressive fsck implementations, so this approach is quite fragile; and this approach can only be used if the @file{/boot} filesystem is on the same disk that the BIOS boots from, so that GRUB does not have to rely on guessing BIOS drive numbers. The GRUB development team generally recommends embedding GRUB before the first partition, unless you have special requirements. You must ensure that the first partition starts at least 31 KiB (63 sectors) from the start of the disk; on modern disks, it is often a performance advantage to align partitions on larger boundaries anyway, so the first partition might start 1 MiB from the start of the disk. @heading GPT Some newer systems use the GUID Partition Table (GPT) format. This was specified as part of the Extensible Firmware Interface (EFI), but it can also be used on BIOS platforms if system software supports it; for example, GRUB and GNU/Linux can be used in this configuration. With this format, it is possible to reserve a whole partition for GRUB, called the BIOS Boot Partition. GRUB can then be embedded into that partition without the risk of being overwritten by other software and without being contained in a filesystem which might move its blocks around. When creating a BIOS Boot Partition on a GPT system, you should make sure that it is at least 31 KiB in size. (GPT-formatted disks are not usually particularly small, so we recommend that you make it larger than the bare minimum, such as 1 MiB, to allow plenty of room for growth.) You must also make sure that it has the proper partition type. Using GNU Parted, you can set this using a command such as the following: @example # @kbd{parted /dev/@var{disk} set @var{partition-number} bios_grub on} @end example If you are using gdisk, set the partition type to @samp{0xEF02}. With partitioning programs that require setting the GUID directly, it should be @samp{21686148-6449-6e6f-744e656564454649}. @strong{Caution:} Be very careful which partition you select! When GRUB finds a BIOS Boot Partition during installation, it will automatically overwrite part of it. Make sure that the partition does not contain any other data. @node Booting @chapter Booting GRUB can load Multiboot-compliant kernels in a consistent way, but for some free operating systems you need to use some OS-specific magic. @menu * General boot methods:: How to boot OSes with GRUB generally * OS-specific notes:: Notes on some operating systems @end menu @node General boot methods @section How to boot operating systems GRUB has two distinct boot methods. One of the two is to load an operating system directly, and the other is to chain-load another boot loader which then will load an operating system actually. Generally speaking, the former is more desirable, because you don't need to install or maintain other boot loaders and GRUB is flexible enough to load an operating system from an arbitrary disk/partition. However, the latter is sometimes required, since GRUB doesn't support all the existing operating systems natively. @menu * Loading an operating system directly:: * Chain-loading:: @end menu @node Loading an operating system directly @subsection How to boot an OS directly with GRUB Multiboot (@pxref{Top, Multiboot Specification, Motivation, multiboot, The Multiboot Specification}) is the native format supported by GRUB. For the sake of convenience, there is also support for Linux, FreeBSD, NetBSD and OpenBSD. If you want to boot other operating systems, you will have to chain-load them (@pxref{Chain-loading}). FIXME: this section is incomplete. @enumerate @item Run the command @command{boot} (@pxref{boot}). @end enumerate However, DOS and Windows have some deficiencies, so you might have to use more complicated instructions. @xref{DOS/Windows}, for more information. @node Chain-loading @subsection Chain-loading an OS Operating systems that do not support Multiboot and do not have specific support in GRUB (specific support is available for Linux, FreeBSD, NetBSD and OpenBSD) must be chain-loaded, which involves loading another boot loader and jumping to it in real mode. The @command{chainloader} command (@pxref{chainloader}) is used to set this up. It is normally also necessary to load some GRUB modules and set the appropriate root device. Putting this together, we get something like this, for a Windows system on the first partition of the first hard disk: @verbatim menuentry "Windows" { insmod chain insmod ntfs set root=(hd0,1) chainloader +1 } @end verbatim @c FIXME: document UUIDs. On systems with multiple hard disks, an additional workaround may be required. @xref{DOS/Windows}. Chain-loading is only supported on PC BIOS and EFI platforms. @node OS-specific notes @section Some caveats on OS-specific issues Here, we describe some caveats on several operating systems. @menu * GNU/Hurd:: * GNU/Linux:: * DOS/Windows:: @end menu @node GNU/Hurd @subsection GNU/Hurd Since GNU/Hurd is Multiboot-compliant, it is easy to boot it; there is nothing special about it. But do not forget that you have to specify a root partition to the kernel. @enumerate @item Set GRUB's root device to the same drive as GNU/Hurd's. The command @code{search --file --set /boot/gnumach.gz} or similar may help you (@pxref{search}). @item Load the kernel and the modules, like this: @example @group grub> @kbd{multiboot /boot/gnumach.gz root=device:hd0s1} grub> @kbd{module /hurd/ext2fs.static ext2fs --readonly \ --multiboot-command-line='$@{kernel-command-line@}' \ --host-priv-port='$@{host-port@}' \ --device-master-port='$@{device-port@}' \ --exec-server-task='$@{exec-task@}' -T typed '$@{root@}' \ '$(task-create)' '$(task-resume)'} grub> @kbd{module /lib/ld.so.1 exec /hurd/exec '$(exec-task=task-create)'} @end group @end example @item Finally, run the command @command{boot} (@pxref{boot}). @end enumerate @node GNU/Linux @subsection GNU/Linux It is relatively easy to boot GNU/Linux from GRUB, because it somewhat resembles to boot a Multiboot-compliant OS. @enumerate @item Set GRUB's root device to the same drive as GNU/Linux's. The command @code{search --file --set /vmlinuz} or similar may help you (@pxref{search}). @item Load the kernel using the command @command{linux} (@pxref{linux}): @example grub> @kbd{linux /vmlinuz root=/dev/sda1} @end example If you need to specify some kernel parameters, just append them to the command. For example, to set @option{acpi} to @samp{off}, do this: @example grub> @kbd{linux /vmlinuz root=/dev/sda1 acpi=off} @end example See the documentation in the Linux source tree for complete information on the available options. With @command{linux} GRUB uses 32-bit protocol. Some BIOS services like APM or EDD aren't available with this protocol. In this case you need to use @command{linux16} @example grub> @kbd{linux16 /vmlinuz root=/dev/sda1 acpi=off} @end example @item If you use an initrd, execute the command @command{initrd} (@pxref{initrd}) after @command{linux}: @example grub> @kbd{initrd /initrd} @end example If you used @command{linux16} you need to use @command{initrd16}: @example grub> @kbd{initrd16 /initrd} @end example @item Finally, run the command @command{boot} (@pxref{boot}). @end enumerate @strong{Caution:} If you use an initrd and specify the @samp{mem=} option to the kernel to let it use less than actual memory size, you will also have to specify the same memory size to GRUB. To let GRUB know the size, run the command @command{uppermem} @emph{before} loading the kernel. @xref{uppermem}, for more information. @node DOS/Windows @subsection DOS/Windows GRUB cannot boot DOS or Windows directly, so you must chain-load them (@pxref{Chain-loading}). However, their boot loaders have some critical deficiencies, so it may not work to just chain-load them. To overcome the problems, GRUB provides you with two helper functions. If you have installed DOS (or Windows) on a non-first hard disk, you have to use the disk swapping technique, because that OS cannot boot from any disks but the first one. The workaround used in GRUB is the command @command{drivemap} (@pxref{drivemap}), like this: @example drivemap -s (hd0) (hd1) @end example This performs a @dfn{virtual} swap between your first and second hard drive. @strong{Caution:} This is effective only if DOS (or Windows) uses BIOS to access the swapped disks. If that OS uses a special driver for the disks, this probably won't work. Another problem arises if you installed more than one set of DOS/Windows onto one disk, because they could be confused if there are more than one primary partitions for DOS/Windows. Certainly you should avoid doing this, but there is a solution if you do want to do so. Use the partition hiding/unhiding technique. If GRUB @dfn{hides} a DOS (or Windows) partition (@pxref{parttool}), DOS (or Windows) will ignore the partition. If GRUB @dfn{unhides} a DOS (or Windows) partition, DOS (or Windows) will detect the partition. Thus, if you have installed DOS (or Windows) on the first and the second partition of the first hard disk, and you want to boot the copy on the first partition, do the following: @example @group parttool (hd0,1) hidden- parttool (hd0,2) hidden+ set root=(hd0,1) chainloader +1 parttool @verb{'${root}'} boot+ boot @end group @end example @node Configuration @chapter Writing your own configuration file GRUB is configured using @file{grub.cfg}, usually located under @file{/boot/grub}. This file is quite flexible, but most users will not need to write the whole thing by hand. @menu * Simple configuration:: Recommended for most users * Shell-like scripting:: For power users and developers * Embedded configuration:: Embedding a configuration file into GRUB @end menu @node Simple configuration @section Simple configuration handling The program @command{grub-mkconfig} (@pxref{Invoking grub-mkconfig}) generates @file{grub.cfg} files suitable for most cases. It is suitable for use when upgrading a distribution, and will discover available kernels and attempt to generate menu entries for them. @command{grub-mkconfig} does have some limitations. While adding extra custom menu entries to the end of the list can be done by editing @file{/etc/grub.d/40_custom} or creating @file{/boot/grub/custom.cfg}, changing the order of menu entries or changing their titles may require making complex changes to shell scripts stored in @file{/etc/grub.d/}. This may be improved in the future. In the meantime, those who feel that it would be easier to write @file{grub.cfg} directly are encouraged to do so (@pxref{Booting}, and @ref{Shell-like scripting}), and to disable any system provided by their distribution to automatically run @command{grub-mkconfig}. The file @file{/etc/default/grub} controls the operation of @command{grub-mkconfig}. It is sourced by a shell script, and so must be valid POSIX shell input; normally, it will just be a sequence of @samp{KEY=value} lines, but if the value contains spaces or other special characters then it must be quoted. For example: @example GRUB_TERMINAL_INPUT="console serial" @end example Valid keys in @file{/etc/default/grub} are as follows: @table @samp @item GRUB_DEFAULT The default menu entry. This may be a number, in which case it identifies the Nth entry in the generated menu counted from zero, or the full name of a menu entry, or the special string @samp{saved}. Using the full name may be useful if you want to set a menu entry as the default even though there may be a variable number of entries before it. If you set this to @samp{saved}, then the default menu entry will be that saved by @samp{GRUB_SAVEDEFAULT}, @command{grub-set-default}, or @command{grub-reboot}. The default is @samp{0}. @item GRUB_SAVEDEFAULT If this option is set to @samp{true}, then, when an entry is selected, save it as a new default entry for use by future runs of GRUB. This is only useful if @samp{GRUB_DEFAULT=saved}; it is a separate option because @samp{GRUB_DEFAULT=saved} is useful without this option, in conjunction with @command{grub-set-default} or @command{grub-reboot}. Unset by default. This option relies on the environment block, which may not be available in all situations (@pxref{Environment block}). @item GRUB_TIMEOUT Boot the default entry this many seconds after the menu is displayed, unless a key is pressed. The default is @samp{5}. Set to @samp{0} to boot immediately without displaying the menu, or to @samp{-1} to wait indefinitely. @item GRUB_HIDDEN_TIMEOUT Wait this many seconds for a key to be pressed before displaying the menu. If no key is pressed during that time, boot immediately. Unset by default. @item GRUB_HIDDEN_TIMEOUT_QUIET In conjunction with @samp{GRUB_HIDDEN_TIMEOUT}, set this to @samp{true} to suppress the verbose countdown while waiting for a key to be pressed before displaying the menu. Unset by default. @item GRUB_DEFAULT_BUTTON @itemx GRUB_TIMEOUT_BUTTON @itemx GRUB_HIDDEN_TIMEOUT_BUTTON @itemx GRUB_BUTTON_CMOS_ADDRESS Variants of the corresponding variables without the @samp{_BUTTON} suffix, used to support vendor-specific power buttons. @xref{Vendor power-on keys}. @item GRUB_DISTRIBUTOR Set by distributors of GRUB to their identifying name. This is used to generate more informative menu entry titles. @item GRUB_TERMINAL_INPUT Select the terminal input device. You may select multiple devices here, separated by spaces. Valid terminal input names depend on the platform, but may include @samp{console} (PC BIOS and EFI consoles), @samp{serial} (serial terminal), @samp{ofconsole} (Open Firmware console), @samp{at_keyboard} (PC AT keyboard, mainly useful with Coreboot), or @samp{usb_keyboard} (USB keyboard using the HID Boot Protocol, for cases where the firmware does not handle this). The default is to use the platform's native terminal input. @item GRUB_TERMINAL_OUTPUT Select the terminal output device. You may select multiple devices here, separated by spaces. Valid terminal output names depend on the platform, but may include @samp{console} (PC BIOS and EFI consoles), @samp{serial} (serial terminal), @samp{gfxterm} (graphics-mode output), @samp{ofconsole} (Open Firmware console), or @samp{vga_text} (VGA text output, mainly useful with Coreboot). The default is to use the platform's native terminal output. @item GRUB_TERMINAL If this option is set, it overrides both @samp{GRUB_TERMINAL_INPUT} and @samp{GRUB_TERMINAL_OUTPUT} to the same value. @item GRUB_SERIAL_COMMAND A command to configure the serial port when using the serial console. @xref{serial}. Defaults to @samp{serial}. @item GRUB_CMDLINE_LINUX Command-line arguments to add to menu entries for the Linux kernel. @item GRUB_CMDLINE_LINUX_DEFAULT Unless @samp{GRUB_DISABLE_RECOVERY} is set to @samp{true}, two menu entries will be generated for each Linux kernel: one default entry and one entry for recovery mode. This option lists command-line arguments to add only to the default menu entry, after those listed in @samp{GRUB_CMDLINE_LINUX}. @item GRUB_CMDLINE_NETBSD @itemx GRUB_CMDLINE_NETBSD_DEFAULT As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for NetBSD. @item GRUB_CMDLINE_XEN @itemx GRUB_CMDLINE_XEN_DEFAULT As @samp{GRUB_CMDLINE_LINUX} and @samp{GRUB_CMDLINE_LINUX_DEFAULT}, but for Linux and Xen. @item GRUB_DISABLE_LINUX_UUID Normally, @command{grub-mkconfig} will generate menu entries that use universally-unique identifiers (UUIDs) to identify the root filesystem to the Linux kernel, using a @samp{root=UUID=...} kernel parameter. This is usually more reliable, but in some cases it may not be appropriate. To disable the use of UUIDs, set this option to @samp{true}. @item GRUB_DISABLE_RECOVERY If this option is set to @samp{true}, disable the generation of recovery mode menu entries. @item GRUB_VIDEO_BACKEND If graphical video support is required, either because the @samp{gfxterm} graphical terminal is in use or because @samp{GRUB_GFXPAYLOAD_LINUX} is set, then @command{grub-mkconfig} will normally load all available GRUB video drivers and use the one most appropriate for your hardware. If you need to override this for some reason, then you can set this option. After @command{grub-install} has been run, the available video drivers are listed in @file{/boot/grub/video.lst}. @item GRUB_GFXMODE Set the resolution used on the @samp{gfxterm} graphical terminal. Note that you can only use modes which your graphics card supports via VESA BIOS Extensions (VBE), so for example native LCD panel resolutions may not be available. The default is @samp{640x480}. @xref{gfxmode}. @item GRUB_BACKGROUND Set a background image for use with the @samp{gfxterm} graphical terminal. The value of this option must be a file readable by GRUB at boot time, and it must end with @file{.png}, @file{.tga}, @file{.jpg}, or @file{.jpeg}. The image will be scaled if necessary to fit the screen. @item GRUB_THEME Set a theme for use with the @samp{gfxterm} graphical terminal. @item GRUB_GFXPAYLOAD_LINUX Set to @samp{text} to force the Linux kernel to boot in normal text mode, @samp{keep} to preserve the graphics mode set using @samp{GRUB_GFXMODE}, @samp{@var{width}x@var{height}}[@samp{x@var{depth}}] to set a particular graphics mode, or a sequence of these separated by commas or semicolons to try several modes in sequence. @xref{gfxpayload}. Depending on your kernel, your distribution, your graphics card, and the phase of the moon, note that using this option may cause GNU/Linux to suffer from various display problems, particularly during the early part of the boot sequence. If you have problems, set this option to @samp{text} and GRUB will tell Linux to boot in normal text mode. @item GRUB_DISABLE_OS_PROBER Normally, @command{grub-mkconfig} will try to use the external @command{os-prober} program, if installed, to discover other operating systems installed on the same system and generate appropriate menu entries for them. Set this option to @samp{true} to disable this. @item GRUB_INIT_TUNE Play a tune on the speaker when GRUB starts. This is particularly useful for users unable to see the screen. The value of this option is passed directly to @ref{play}. @item GRUB_BADRAM If this option is set, GRUB will issue a @ref{badram} command to filter out specified regions of RAM. @item GRUB_PRELOAD_MODULES This option may be set to a list of GRUB module names separated by spaces. Each module will be loaded as early as possible, at the start of @file{grub.cfg}. @end table For more detailed customisation of @command{grub-mkconfig}'s output, you may edit the scripts in @file{/etc/grub.d} directly. @file{/etc/grub.d/40_custom} is particularly useful for adding entire custom menu entries; simply type the menu entries you want to add at the end of that file, making sure to leave at least the first two lines intact. @node Shell-like scripting @section Writing full configuration files directly @c Some of this section is derived from the GNU Bash manual page, also @c copyrighted by the FSF. @file{grub.cfg} is written in GRUB's built-in scripting language, which has a syntax quite similar to that of GNU Bash and other Bourne shell derivatives. @heading Words A @dfn{word} is a sequence of characters considered as a single unit by GRUB. Words are separated by @dfn{metacharacters}, which are the following plus space, tab, and newline: @example @{ @} | & $ ; < > @end example Quoting may be used to include metacharacters in words; see below. @heading Reserved words Reserved words have a special meaning to GRUB. The following words are recognised as reserved when unquoted and either the first word of a simple command or the third word of a @code{for} command: @example ! [[ ]] @{ @} case do done elif else esac fi for function if in menuentry select then time until while @end example Not all of these reserved words have a useful purpose yet; some are reserved for future expansion. @heading Quoting Quoting is used to remove the special meaning of certain characters or words. It can be used to treat metacharacters as part of a word, to prevent reserved words from being recognised as such, and to prevent variable expansion. There are three quoting mechanisms: the escape character, single quotes, and double quotes. A non-quoted backslash (\) is the @dfn{escape character}. It preserves the literal value of the next character that follows, with the exception of newline. Enclosing characters in single quotes preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of @samp{$} and @samp{\}. The @samp{$} character retains its special meaning within double quotes. The backslash retains its special meaning only when followed by one of the following characters: @samp{$}, @samp{"}, @samp{\}, or newline. A backslash-newline pair is treated as a line continuation (that is, it is removed from the input stream and effectively ignored@footnote{Currently a backslash-newline pair within a variable name is not handled properly, so use this feature with some care.}). A double quote may be quoted within double quotes by preceding it with a backslash. @heading Variable expansion The @samp{$} character introduces variable expansion. The variable name to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name. Normal variable names begin with an alphabetic character, followed by zero or more alphanumeric characters. These names refer to entries in the GRUB environment (@pxref{Environment}). Positional variable names consist of one or more digits. They represent parameters passed to function calls, with @samp{$1} representing the first parameter, and so on. The special variable name @samp{?} expands to the exit status of the most recently executed command. When positional variable names are active, other special variable names @samp{@@}, @samp{*} and @samp{#} are defined and they expand to all positional parameters with necessary quoting, positional parameters without any quoting, and positional parameter count respectively. @heading Comments A word beginning with @samp{#} causes that word and all remaining characters on that line to be ignored. @heading Simple commands A @dfn{simple command} is a sequence of words separated by spaces or tabs and terminated by a semicolon or a newline. The first word specifies the command to be executed. The remaining words are passed as arguments to the invoked command. The return value of a simple command is its exit status. If the reserved word @code{!} precedes the command, then the return value is instead the logical negation of the command's exit status. @heading Compound commands A @dfn{compound command} is one of the following: @table @asis @item for @var{name} in @var{word} @dots{}; do @var{list}; done The list of words following @code{in} is expanded, generating a list of items. The variable @var{name} is set to each element of this list in turn, and @var{list} is executed each time. The return value is the exit status of the last command that executes. If the expansion of the items following @code{in} results in an empty list, no commands are executed, and the return status is 0. @item if @var{list}; then @var{list}; [elif @var{list}; then @var{list};] @dots{} [else @var{list};] fi The @code{if} @var{list} is executed. If its exit status is zero, the @code{then} @var{list} is executed. Otherwise, each @code{elif} @var{list} is executed in turn, and if its exit status is zero, the corresponding @code{then} @var{list} is executed and the command completes. Otherwise, the @code{else} @var{list} is executed, if present. The exit status is the exit status of the last command executed, or zero if no condition tested true. @item while @var{cond}; do @var{list}; done @itemx until @var{cond}; do @var{list}; done The @code{while} command continuously executes the @code{do} @var{list} as long as the last command in @var{cond} returns an exit status of zero. The @code{until} command is identical to the @code{while} command, except that the test is negated; the @code{do} @var{list} is executed as long as the last command in @var{cond} returns a non-zero exit status. The exit status of the @code{while} and @code{until} commands is the exit status of the last @code{do} @var{list} command executed, or zero if none was executed. @item function @var{name} @{ @var{command}; @dots{} @} This defines a function named @var{name}. The @dfn{body} of the function is the list of commands within braces, each of which must be terminated with a semicolon or a newline. This list of commands will be executed whenever @var{name} is specified as the name of a simple command. Function definitions do not affect the exit status in @code{$?}. When executed, the exit status of a function is the exit status of the last command executed in the body. @item menuentry @var{title} [@option{--class=class} @dots{}] [@option{--users=users}] [@option{--hotkey=key}] @{ @var{command}; @dots{} @} @xref{menuentry}. @end table @heading Built-in Commands Some built-in commands are also provided by GRUB script to help script writers perform actions that are otherwise not possible. For example, these include commands to jump out of a loop without fully completing it, etc. @table @asis @item break [@code{n}] Exit from within a @code{for}, @code{while}, or @code{until} loop. If @code{n} is specified, break @code{n} levels. @code{n} must be greater than or equal to 1. If @code{n} is greater than the number of enclosing loops, all enclosing loops are exited. The return value is 0 unless @code{n} is not greater than or equal to 1. @item continue [@code{n}] Resume the next iteration of the enclosing @code{for}, @code{while} or @code{until} loop. If @code{n} is specified, resume at the @code{n}th enclosing loop. @code{n} must be greater than or equal to 1. If @code{n} is greater than the number of enclosing loops, the last enclosing loop (the @dfn{top-level} loop) is resumed. The return value is 0 unless @code{n} is not greater than or equal to 1. @item return [@code{n}] Causes a function to exit with the return value specified by @code{n}. If @code{n} is omitted, the return status is that of the last command executed in the function body. If used outside a function the return status is false. @item shift [@code{n}] The positional parameters from @code{n}+1 @dots{} are renamed to @code{$1}@dots{}. Parameters represented by the numbers @code{$#} down to @code{$#}-@code{n}+1 are unset. @code{n} must be a non-negative number less than or equal to @code{$#}. If @code{n} is 0, no parameters are changed. If @code{n} is not given, it is assumed to be 1. If @code{n} is greater than @code{$#}, the positional parameters are not changed. The return status is greater than zero if @code{n} is greater than @code{$#} or less than zero; otherwise 0. @end table @node Embedded configuration @section Embedding a configuration file into GRUB GRUB supports embedding a configuration file directly into the core image, so that it is loaded before entering normal mode. This is useful, for example, when it is not straightforward to find the real configuration file, or when you need to debug problems with loading that file. @command{grub-install} uses this feature when it is not using BIOS disk functions or when installing to a different disk from the one containing @file{/boot/grub}, in which case it needs to use the @command{search} command (@pxref{search}) to find @file{/boot/grub}. To embed a configuration file, use the @option{-c} option to @command{grub-mkimage}. The file is copied into the core image, so it may reside anywhere on the file system, and may be removed after running @command{grub-mkimage}. After the embedded configuration file (if any) is executed, GRUB will load the @samp{normal} module, which will then read the real configuration file from @file{$prefix/grub.cfg}. By this point, the @code{root} variable will also have been set to the root device name. For example, @code{prefix} might be set to @samp{(hd0,1)/boot/grub}, and @code{root} might be set to @samp{hd0,1}. Thus, in most cases, the embedded configuration file only needs to set the @code{prefix} and @code{root} variables, and then drop through to GRUB's normal processing. A typical example of this might look like this: @example @group search.fs_uuid 01234567-89ab-cdef-0123-456789abcdef root set prefix=($root)/boot/grub @end group @end example (The @samp{search_fs_uuid} module must be included in the core image for this example to work.) In more complex cases, it may be useful to read other configuration files directly from the embedded configuration file. This allows such things as reading files not called @file{grub.cfg}, or reading files from a directory other than that where GRUB's loadable modules are installed. To do this, include the @samp{configfile} and @samp{normal} modules in the core image, and embed a configuration file that uses the @command{configfile} command to load another file. The following example of this also requires the @command{echo}, @command{search_label}, and @command{test} modules to be included in the core image: @example @group search.fs_label grub root if [ -e /boot/grub/example/test1.cfg ]; then set prefix=($root)/boot/grub configfile /boot/grub/example/test1.cfg else if [ -e /boot/grub/example/test2.cfg ]; then set prefix=($root)/boot/grub configfile /boot/grub/example/test2.cfg else echo "Could not find an example configuration file!" fi fi @end group @end example The embedded configuration file may not contain menu entries directly, but may only read them from elsewhere using @command{configfile}. @node Theme file format @chapter Theme file format @section Introduction The GRUB graphical menu supports themes that can customize the layout and appearance of the GRUB boot menu. The theme is configured through a plain text file that specifies the layout of the various GUI components (including the boot menu, timeout progress bar, and text messages) as well as the appearance using colors, fonts, and images. Example is available in docs/example_theme.txt @section Theme Elements @subsection Colors Colors can be specified in several ways: @itemize @item HTML-style ``#RRGGBB'' or ``#RGB'' format, where *R*, *G*, and *B* are hexadecimal digits (e.g., ``#8899FF'') @item as comma-separated decimal RGB values (e.g., ``128, 128, 255'') @item with ``SVG 1.0 color names'' (e.g., ``cornflowerblue'') which must be specified in lowercase. @end itemize @subsection Fonts The fonts GRUB uses ``PFF2 font format'' bitmap fonts. Fonts are specified with full font names. Currently there is no provision for a preference list of fonts, or deriving one font from another. Fonts are loaded with the ``loadfont'' command in GRUB. To see the list of loaded fonts, execute the ``lsfonts'' command. If there are too many fonts to fit on screen, do ``set pager=1'' before executing ``lsfonts''. @subsection Progress Bar @float Figure, Pixmap-styled progress bar @c @image{Theme_progress_bar,,,,.png} @end float @float Figure, Plain progress bar, drawn with solid color. @c @image{Theme_progress_bar_filled,,,,.png} @end float Progress bars are used to display the remaining time before GRUB boots the default menu entry. To create a progress bar that will display the remaining time before automatic boot, simply create a ``progress_bar'' component with the id ``__timeout__''. This indicates to GRUB that the progress bar should be updated as time passes, and it should be made invisible if the countdown to automatic boot is interrupted by the user. Progress bars may optionally have text displayed on them. This is controlled through the ``show_text'' property, which can be set to either ``true'' or ``false'' to control whether text is displayed. When GRUB is counting down to automatic boot, the text informs the user of the number of seconds remaining. @subsection Circular Progress Indicator @c @image{Theme_circular_progress,,,,.png} The circular progress indicator functions similarly to the progress bar. When given an id of ``__timeout__'', GRUB updates the circular progress indicator's value to indicate the time remaining. For the circular progress indicator, there are two images used to render it: the *center* image, and the *tick* image. The center image is rendered in the center of the component, while the tick image is used to render each mark along the circumference of the indicator. @subsection Labels Text labels can be placed on the boot screen. The font, color, and horizontal alignment can be specified for labels. If a label is given the id ``__timeout__'', then the ``text'' property for that label is also updated with a message informing the user of the number of seconds remaining until automatic boot. This is useful in case you want the text displayed somewhere else instead of directly on the progress bar. @subsection Boot Menu @c @image{Theme_boot_menu,,,,.png} The boot menu where GRUB displays the menu entries from the ``grub.cfg'' file. It is a list of items, where each item has a title and an optional icon. The icon is selected based on the *classes* specified for the menu entry. If there is a PNG file named ``myclass.png'' in the ``grub/themes/icons'' directory, it will be displayed for items which have the class *myclass*. The boot menu can be customized in several ways, such as the font and color used for the menu entry title, and by specifying styled boxes for the menu itself and for the selected item highlight. @subsection Styled Boxes One of the most important features for customizing the layout is the use of *styled boxes*. A styled box is composed of 9 rectangular (and potentially empty) regions, which are used to seamlessly draw the styled box on screen: @multitable @columnfractions 0.3 0.3 0.3 @item Northwest (nw) @tab North (n) @tab Northeast (ne) @item West (w) @tab Center (c) @tab East (e) @item Southwest (sw) @tab South (s) @tab Southeast (se) @end multitable To support any size of box on screen, the center slice and the slices for the top, bottom, and sides are all scaled to the correct size for the component on screen, using the following rules: @enumerate @item The edge slices (north, south, east, and west) are scaled in the direction of the edge they are adjacent to. For instance, the west slice is scaled vertically. @item The corner slices (northwest, northeast, southeast, and southwest) are not scaled. @item The center slice is scaled to fill the remaining space in the middle. @end enumerate As an example of how an image might be sliced up, consider the styled box used for a terminal view. @float Figure, An example of the slices (in red) used for a terminal window. This drawing was created and sliced in Inkscape_, as the next section explains. @c @image{Box_slice_example_terminal,,,,.png} @end float @subsection Creating Styled Box Images The Inkscape_ scalable vector graphics editor is a very useful tool for creating styled box images. One process that works well for slicing a drawing into the necessary image slices is: @enumerate @item Create or open the drawing you'd like use. @item Create a new layer on the top of the layer stack. Make it visible. Select this layer as the current layer. @item Draw 9 rectangles on your drawing where you'd like the slices to be. Clear the fill option, and set the stroke to 1 pixel wide solid stroke. The corners of the slices must meet precisely; if it is off by a single pixel, it will probably be evident when the styled box is rendered in the GRUB menu. You should probably go to File | Document Properties | Grids and enable a grid or create a guide (click on one of the rulers next to the drawing and drag over the drawing; release the mouse button to place the guide) to help place the rectangles precisely. @item Right click on the center slice rectangle and choose Object Properties. Change the "Id" to ``slice_c`` and click Set. Repeat this for the remaining 8 rectangles, giving them Id values of ``slice_n``, ``slice_ne``, ``slice_e``, and so on according to the location. @item Save the drawing. @item Select all the slice rectangles. With the slice layer selected, you can simply press Ctrl+A to select all rectangles. The status bar should indicate that 9 rectangles are selected. @item Click the layer hide icon for the slice layer in the layer palette. The rectangles will remain selected, even though they are hidden. @item Choose File | Export Bitmap and check the *Batch export 9 selected objects* box. Make sure that *Hide all except selected* is unchecked. click *Export*. This will create PNG files in the same directory as the drawing, named after the slices. These can now be used for a styled box in a GRUB theme. @end enumerate @section Theme File Manual The theme file is a plain text file. Lines that begin with ``#`` are ignored and considered comments. (Note: This may not be the case if the previous line ended where a value was expected.) The theme file contains two types of statements: @enumerate @item Global properties. @item Component construction. @end enumerate @subsection Global Properties @subsection Format Global properties are specified with the simple format: @itemize @item name1: value1 @item name2: "value which may contain spaces" @item name3: #88F @end itemize In this example, name3 is assigned a color value. @subsection Global Property List @multitable @columnfractions 0.3 0.6 @item title-text @tab Specifies the text to display at the top center of the screen as a title. @item title-font @tab Defines the font used for the title message at the top of the screen. @item title-color @tab Defines the color of the title message. @item message-font @tab Defines the font used for messages, such as when GRUB is unable to automatically boot an entry. @item message-color @tab Defines the color of the message text. @item message-bg-color @tab Defines the background color of the message text area. @item desktop-image @tab Specifies the image to use as the background. It will be scaled to fit the screen size. @item desktop-color @tab Specifies the color for the background if *desktop-image* is not specified. @item terminal-box @tab Specifies the file name pattern for the styled box slices used for the command line terminal window. For example, ``terminal-box: terminal_*.png'' will use the images ``terminal_c.png`` as the center area, ``terminal_n.png`` as the north (top) edge, ``terminal_nw.png`` as the northwest (upper left) corner, and so on. If the image for any slice is not found, it will simply be left empty. @end multitable @subsection Component Construction Greater customizability comes is provided by components. A tree of components forms the user interface. *Containers* are components that can contain other components, and there is always a single root component which is an instance of a *canvas* container. Components are created in the theme file by prefixing the type of component with a '+' sign: @code{ + label @{ text="GRUB" font="aqui 11" color="#8FF" @} } properties of a component are specified as "name = value" (whitespace surrounding tokens is optional and is ignored) where *value* may be: @itemize @item a single word (e.g., ``align = center``, ``color = #FF8080``), @item a quoted string (e.g., ``text = "Hello, World!"``), or @item a tuple (e.g., ``preferred_size = (120, 80)``). @end itemize @subsection Component List The following is a list of the components and the properties they support. @itemize @item label A label displays a line of text. Properties: @multitable @columnfractions 0.2 0.7 @item text @tab The text to display. @item font @tab The font to use for text display. @item color @tab The color of the text. @item align @tab The horizontal alignment of the text within the component. Options are ``left``, ``center``, and ``right``. @end multitable @item image A component that displays an image. The image is scaled to fit the component, although the preferred size defaults to the image's original size unless the ``preferred_size`` property is explicitly set. Properties: @multitable @columnfractions 0.2 0.7 @item file @tab The full path to the image file to load. @end multitable @item progress_bar Displays a horizontally oriented progress bar. It can be rendered using simple solid filled rectangles, or using a pair of pixmap styled boxes. Properties: @multitable @columnfractions 0.2 0.7 @item fg_color @tab The foreground color for plain solid color rendering. @item bg_color @tab The background color for plain solid color rendering. @item border_color @tab The border color for plain solid color rendering. @item text_color @tab The text color. @item show_text @tab Boolean value indicating whether or not text should be displayed on the progress bar. If set to *false*, then no text will be displayed on the bar. If set to any other value, text will be displayed on the bar. @item bar_style @tab The styled box specification for the frame of the progress bar. Example: ``progress_frame_*.png`` @item highlight_style @tab The styled box specification for the highlighted region of the progress bar. This box will be used to paint just the highlighted region of the bar, and will be increased in size as the bar nears completion. Example: ``progress_hl_*.png``. @item text @tab The text to display on the progress bar. If the progress bar's ID is set to ``__timeout__``, then GRUB will updated this property with an informative message as the timeout approaches. @item value @tab The progress bar current value. Normally not set manually. @item start @tab The progress bar start value. Normally not set manually. @item end @tab The progress bar end value. Normally not set manually. @end multitable @item circular_progress Displays a circular progress indicator. The appearance of this component is determined by two images: the *center* image and the *tick* image. The center image is generally larger and will be drawn in the center of the component. Around the circumference of a circle within the component, the tick image will be drawn a certain number of times, depending on the properties of the component. Properties: @multitable @columnfractions 0.3 0.6 @item center_bitmap @tab The file name of the image to draw in the center of the component. @item tick_bitmap @tab The file name of the image to draw for the tick marks. @item num_ticks @tab The number of ticks that make up a full circle. @item ticks_disappear @tab Boolean value indicating whether tick marks should progressively appear, or progressively disappear as *value* approaches *end*. Specify ``true`` or ``false``. @item value @tab The progress indicator current value. Normally not set manually. @item start @tab The progress indicator start value. Normally not set manually. @item end @tab The progress indicator end value. Normally not set manually. @end multitable @item boot_menu Displays the GRUB boot menu. It allows selecting items and executing them. Properties: @multitable @columnfractions 0.4 0.5 @item item_font @tab The font to use for the menu item titles. @item selected_item_font @tab The font to use for the selected menu item, or ``inherit`` (the default) to use ``item_font`` for the selected menu item as well. @item item_color @tab The color to use for the menu item titles. @item selected_item_color @tab The color to use for the selected menu item, or ``inherit`` (the default) to use ``item_color`` for the selected menu item as well. @item icon_width @tab The width of menu item icons. Icons are scaled to the specified size. @item icon_height @tab The height of menu item icons. @item item_height @tab The height of each menu item in pixels. @item item_padding @tab The amount of space in pixels to leave on each side of the menu item contents. @item item_icon_space @tab The space between an item's icon and the title text, in pixels. @item item_spacing @tab The amount of space to leave between menu items, in pixels. @item menu_pixmap_style @tab The image file pattern for the menu frame styled box. Example: ``menu_*.png`` (this will use images such as ``menu_c.png``, ``menu_w.png``, `menu_nw.png``, etc.) @item selected_item_pixmap_style @tab The image file pattern for the selected item highlight styled box. @item scrollbar @tab Boolean value indicating whether the scroll bar should be drawn if the frame and thumb styled boxes are configured. @item scrollbar_frame @tab The image file pattern for the entire scroll bar. Example: ``scrollbar_*.png`` @item scrollbar_thumb @tab The image file pattern for the scroll bar thumb (the part of the scroll bar that moves as scrolling occurs). Example: ``scrollbar_thumb_*.png`` @item max_items_shown @tab The maximum number of items to show on the menu. If there are more than *max_items_shown* items in the menu, the list will scroll to make all items accessible. @end multitable @item canvas Canvas is a container that allows manual placement of components within it. It does not alter the positions of its child components. It assigns all child components their preferred sizes. @item hbox The *hbox* container lays out its children from left to right, giving each one its preferred width. The height of each child is set to the maximum of the preferred heights of all children. @item vbox The *vbox* container lays out its children from top to bottom, giving each one its preferred height. The width of each child is set to the maximum of the preferred widths of all children. @end itemize @subsection Common properties The following properties are supported by all components: @table @samp @item left The distance from the left border of container to left border of the object in either of three formats: @multitable @columnfractions 0.2 0.7 @item x @tab Value in pixels @item p% @tab Percentage @item p%+x @tab mixture of both @end multitable @item top The distance from the left border of container to left border of the object in same format. @item width The width of object in same format. @item height The height of object in same format. @item id The identifier for the component. This can be any arbitrary string. The ID can be used by scripts to refer to various components in the GUI component tree. Currently, there is one special ID value that GRUB recognizes: @multitable @columnfractions 0.2 0.7 @item ``__timeout__`` @tab Any component with this ID will have its *text*, *start*, *end*, *value*, and *visible* properties set by GRUB when it is counting down to an automatic boot of the default menu entry. @end multitable @end table @node Network @chapter Booting GRUB from the network The following instructions only work on PC BIOS systems where the Preboot eXecution Environment (PXE) is available. To generate a PXE boot image, run: @example @group grub-mkimage --format=i386-pc-pxe --output=grub.pxe --prefix='(pxe)/boot/grub' pxe pxecmd @end group @end example Copy @file{grub.pxe}, @file{/boot/grub/*.mod}, and @file{/boot/grub/*.lst} to the PXE (TFTP) server, ensuring that @file{*.mod} and @file{*.lst} are accessible via the @file{/boot/grub/} path from the TFTP server root. Set the DHCP server configuration to offer @file{grub.pxe} as the boot file (the @samp{filename} option in ISC dhcpd). You can also use the @command{grub-mknetdir} utility to generate an image and a GRUB directory tree, rather than copying files around manually. After GRUB has started, files on the TFTP server will be accessible via the @samp{(pxe)} device. The server and gateway IP address can be controlled by changing the @samp{(pxe)} device name to @samp{(pxe:@var{server-ip})} or @samp{(pxe:@var{server-ip}:@var{gateway-ip})}. Note that this should be changed both in the prefix and in any references to the device name in the configuration file. GRUB provides several environment variables which may be used to inspect or change the behaviour of the PXE device: @table @samp @item net_pxe_ip The IP address of this machine. Read-only. @item net_pxe_mac The network interface's MAC address. Read-only. @item net_pxe_hostname The client host name provided by DHCP. Read-only. @item net_pxe_domain The client domain name provided by DHCP. Read-only. @item net_pxe_rootpath The path to the client's root disk provided by DHCP. Read-only. @item net_pxe_extensionspath The path to additional DHCP vendor extensions provided by DHCP. Read-only. @item net_pxe_boot_file The boot file name provided by DHCP. Read-only. @item net_pxe_dhcp_server_name The name of the DHCP server responsible for these boot parameters. Read-only. @item pxe_blksize The PXE transfer block size. Read-write, defaults to 512. @item pxe_default_server The default PXE server. Read-write, although setting this is only useful before opening a PXE device. @item pxe_default_gateway The default gateway to use when contacting the PXE server. Read-write, although setting this is only useful before opening a PXE device. @end table @node Serial terminal @chapter Using GRUB via a serial line This chapter describes how to use the serial terminal support in GRUB. If you have many computers or computers with no display/keyboard, it could be very useful to control the computers through serial communications. To connect one computer with another via a serial line, you need to prepare a null-modem (cross) serial cable, and you may need to have multiport serial boards, if your computer doesn't have extra serial ports. In addition, a terminal emulator is also required, such as minicom. Refer to a manual of your operating system, for more information. As for GRUB, the instruction to set up a serial terminal is quite simple. Here is an example: @example @group grub> @kbd{serial --unit=0 --speed=9600} grub> @kbd{terminal_input serial; terminal_output serial} @end group @end example The command @command{serial} initializes the serial unit 0 with the speed 9600bps. The serial unit 0 is usually called @samp{COM1}, so, if you want to use COM2, you must specify @samp{--unit=1} instead. This command accepts many other options, so please refer to @ref{serial}, for more details. The commands @command{terminal_input} (@pxref{terminal_input}) and @command{terminal_output} (@pxref{terminal_output}) choose which type of terminal you want to use. In the case above, the terminal will be a serial terminal, but you can also pass @code{console} to the command, as @samp{terminal_input serial console}. In this case, a terminal in which you press any key will be selected as a GRUB terminal. In the example above, note that you need to put both commands on the same command line, as you will lose the ability to type commands on the console after the first command. However, note that GRUB assumes that your terminal emulator is compatible with VT100 by default. This is true for most terminal emulators nowadays, but you should pass the option @option{--dumb} to the command if your terminal emulator is not VT100-compatible or implements few VT100 escape sequences. If you specify this option then GRUB provides you with an alternative menu interface, because the normal menu requires several fancy features of your terminal. @node Vendor power-on keys @chapter Using GRUB with vendor power-on keys Some laptop vendors provide an additional power-on button which boots another OS. GRUB supports such buttons with the @samp{GRUB_TIMEOUT_BUTTON}, @samp{GRUB_DEFAULT_BUTTON}, @samp{GRUB_HIDDEN_TIMEOUT_BUTTON} and @samp{GRUB_BUTTON_CMOS_ADDRESS} variables in default/grub (@pxref{Simple configuration}). @samp{GRUB_TIMEOUT_BUTTON}, @samp{GRUB_DEFAULT_BUTTON} and @samp{GRUB_HIDDEN_TIMEOUT_BUTTON} are used instead of the corresponding variables without the @samp{_BUTTON} suffix when powered on using the special button. @samp{GRUB_BUTTON_CMOS_ADDRESS} is vendor-specific and partially model-specific. Values known to the GRUB team are: @table @key @item Dell XPS M1530 85:3 @item Asus EeePC 1005PE 84:1 (unconfirmed) @end table To take full advantage of this function, install GRUB into the MBR (@pxref{Installing GRUB using grub-install}). @node Images @chapter GRUB image files @c FIXME: parts of this section are specific to PC BIOS right now. GRUB consists of several images: a variety of bootstrap images for starting GRUB in various ways, a kernel image, and a set of modules which are combined with the kernel image to form a core image. Here is a short overview of them. @table @file @item boot.img On PC BIOS systems, this image is the first part of GRUB to start. It is written to a master boot record (MBR) or to the boot sector of a partition. Because a PC boot sector is 512 bytes, the size of this image is exactly 512 bytes. The sole function of @file{boot.img} is to read the first sector of the core image from a local disk and jump to it. Because of the size restriction, @file{boot.img} cannot understand any file system structure, so @command{grub-setup} hardcodes the location of the first sector of the core image into @file{boot.img} when installing GRUB. @item diskboot.img This image is used as the first sector of the core image when booting from a hard disk. It reads the rest of the core image into memory and starts the kernel. Since file system handling is not yet available, it encodes the location of the core image using a block list format. @item cdboot.img This image is used as the first sector of the core image when booting from a CD-ROM drive. It performs a similar function to @file{diskboot.img}. @item pxeboot.img This image is used as the start of the core image when booting from the network using PXE. @xref{Network}. @item lnxboot.img This image may be placed at the start of the core image in order to make GRUB look enough like a Linux kernel that it can be booted by LILO using an @samp{image=} section. @item kernel.img This image contains GRUB's basic run-time facilities: frameworks for device and file handling, environment variables, the rescue mode command-line parser, and so on. It is rarely used directly, but is built into all core images. @item core.img This is the core image of GRUB. It is built dynamically from the kernel image and an arbitrary list of modules by the @command{grub-mkimage} program. Usually, it contains enough modules to access @file{/boot/grub}, and loads everything else (including menu handling, the ability to load target operating systems, and so on) from the file system at run-time. The modular design allows the core image to be kept small, since the areas of disk where it must be installed are often as small as 32KB. @xref{BIOS installation}, for details on where the core image can be installed on PC systems. @item *.mod Everything else in GRUB resides in dynamically loadable modules. These are often loaded automatically, or built into the core image if they are essential, but may also be loaded manually using the @command{insmod} command (@pxref{insmod}). @end table @heading For GRUB Legacy users GRUB 2 has a different design from GRUB Legacy, and so correspondences with the images it used cannot be exact. Nevertheless, GRUB Legacy users often ask questions in the terms they are familiar with, and so here is a brief guide to how GRUB 2's images relate to that. @table @file @item stage1 Stage 1 from GRUB Legacy was very similar to @file{boot.img} in GRUB 2, and they serve the same function. @item *_stage1_5 In GRUB Legacy, Stage 1.5's function was to include enough filesystem code to allow the much larger Stage 2 to be read from an ordinary filesystem. In this respect, its function was similar to @file{core.img} in GRUB 2. However, @file{core.img} is much more capable than Stage 1.5 was; since it offers a rescue shell, it is sometimes possible to recover manually in the event that it is unable to load any other modules, for example if partition numbers have changed. @file{core.img} is built in a more flexible way, allowing GRUB 2 to support reading modules from advanced disk types such as LVM and RAID. GRUB Legacy could run with only Stage 1 and Stage 2 in some limited configurations, while GRUB 2 requires @file{core.img} and cannot work without it. @item stage2 GRUB 2 has no single Stage 2 image. Instead, it loads modules from @file{/boot/grub} at run-time. @item stage2_eltorito In GRUB 2, images for booting from CD-ROM drives are now constructed using @file{cdboot.img} and @file{core.img}, making sure that the core image contains the @samp{iso9660} module. It is usually best to use the @command{grub-mkrescue} program for this. @item nbgrub There is as yet no equivalent for @file{nbgrub} in GRUB 2; it was used by Etherboot and some other network boot loaders. @item pxegrub In GRUB 2, images for PXE network booting are now constructed using @file{pxeboot.img} and @file{core.img}, making sure that the core image contains the @samp{pxe} and @samp{pxecmd} modules. @xref{Network}. @end table @node Filesystem @chapter Filesystem syntax and semantics GRUB uses a special syntax for specifying disk drives which can be accessed by BIOS. Because of BIOS limitations, GRUB cannot distinguish between IDE, ESDI, SCSI, or others. You must know yourself which BIOS device is equivalent to which OS device. Normally, that will be clear if you see the files in a device or use the command @command{search} (@pxref{search}). @menu * Device syntax:: How to specify devices * File name syntax:: How to specify files * Block list syntax:: How to specify block lists @end menu @node Device syntax @section How to specify devices The device syntax is like this: @example @code{(@var{device}[,@var{part-num}][,@var{bsd-subpart-letter}])} @end example @samp{[]} means the parameter is optional. @var{device} should be either @samp{fd} or @samp{hd} followed by a digit, like @samp{fd0}. But you can also set @var{device} to a hexadecimal or a decimal number which is a BIOS drive number, so the following are equivalent: @example (hd0) (0x80) (128) @end example @var{part-num} represents the partition number of @var{device}, starting from one for primary partitions and from five for extended partitions, and @var{bsd-subpart-letter} represents the BSD disklabel subpartition, such as @samp{a} or @samp{e}. A shortcut for specifying BSD subpartitions is @code{(@var{device},@var{bsd-subpart-letter})}, in this case, GRUB searches for the first PC partition containing a BSD disklabel, then finds the subpartition @var{bsd-subpart-letter}. Here is an example: @example (hd0,a) @end example The syntax @samp{(hd0)} represents using the entire disk (or the MBR when installing GRUB), while the syntax @samp{(hd0,1)} represents using the first partition of the disk (or the boot sector of the partition when installing GRUB). If you enabled the network support, the special drive @samp{(pxe)} is also available. Before using the network drive, you must initialize the network. @xref{Network}, for more information. If you boot GRUB from a CD-ROM, @samp{(cd)} is available. @xref{Making a GRUB bootable CD-ROM}, for details. @node File name syntax @section How to specify files There are two ways to specify files, by @dfn{absolute file name} and by @dfn{block list}. An absolute file name resembles a Unix absolute file name, using @samp{/} for the directory separator (not @samp{\} as in DOS). One example is @samp{(hd0,1)/boot/grub/grub.cfg}. This means the file @file{/boot/grub/grub.cfg} in the first partition of the first hard disk. If you omit the device name in an absolute file name, GRUB uses GRUB's @dfn{root device} implicitly. So if you set the root device to, say, @samp{(hd1,1)} by the command @samp{set root=(hd1,1)} (@pxref{set}), then @code{/boot/kernel} is the same as @code{(hd1,1)/boot/kernel}. @node Block list syntax @section How to specify block lists A block list is used for specifying a file that doesn't appear in the filesystem, like a chainloader. The syntax is @code{[@var{offset}]+@var{length}[,[@var{offset}]+@var{length}]@dots{}}. Here is an example: @example @code{0+100,200+1,300+300} @end example This represents that GRUB should read blocks 0 through 99, block 200, and blocks 300 through 599. If you omit an offset, then GRUB assumes the offset is zero. Like the file name syntax (@pxref{File name syntax}), if a blocklist does not contain a device name, then GRUB uses GRUB's @dfn{root device}. So @code{(hd0,2)+1} is the same as @code{+1} when the root device is @samp{(hd0,2)}. @node Interface @chapter GRUB's user interface GRUB has both a simple menu interface for choosing preset entries from a configuration file, and a highly flexible command-line for performing any desired combination of boot commands. GRUB looks for its configuration file as soon as it is loaded. If one is found, then the full menu interface is activated using whatever entries were found in the file. If you choose the @dfn{command-line} menu option, or if the configuration file was not found, then GRUB drops to the command-line interface. @menu * Command-line interface:: The flexible command-line interface * Menu interface:: The simple menu interface * Menu entry editor:: Editing a menu entry @end menu @node Command-line interface @section The flexible command-line interface The command-line interface provides a prompt and after it an editable text area much like a command-line in Unix or DOS. Each command is immediately executed after it is entered@footnote{However, this behavior will be changed in the future version, in a user-invisible way.}. The commands (@pxref{Command-line and menu entry commands}) are a subset of those available in the configuration file, used with exactly the same syntax. Cursor movement and editing of the text on the line can be done via a subset of the functions available in the Bash shell: @table @key @item C-f @itemx PC right key Move forward one character. @item C-b @itemx PC left key Move back one character. @item C-a @itemx HOME Move to the start of the line. @item C-e @itemx END Move the the end of the line. @item C-d @itemx DEL Delete the character underneath the cursor. @item C-h @itemx BS Delete the character to the left of the cursor. @item C-k Kill the text from the current cursor position to the end of the line. @item C-u Kill backward from the cursor to the beginning of the line. @item C-y Yank the killed text back into the buffer at the cursor. @item C-p @itemx PC up key Move up through the history list. @item C-n @itemx PC down key Move down through the history list. @end table When typing commands interactively, if the cursor is within or before the first word in the command-line, pressing the @key{TAB} key (or @key{C-i}) will display a listing of the available commands, and if the cursor is after the first word, the @kbd{@key{TAB}} will provide a completion listing of disks, partitions, and file names depending on the context. Note that to obtain a list of drives, one must open a parenthesis, as @command{root (}. Note that you cannot use the completion functionality in the TFTP filesystem. This is because TFTP doesn't support file name listing for the security. @node Menu interface @section The simple menu interface The menu interface is quite easy to use. Its commands are both reasonably intuitive and described on screen. Basically, the menu interface provides a list of @dfn{boot entries} to the user to choose from. Use the arrow keys to select the entry of choice, then press @key{RET} to run it. An optional timeout is available to boot the default entry (the first one if not set), which is aborted by pressing any key. Commands are available to enter a bare command-line by pressing @key{c} (which operates exactly like the non-config-file version of GRUB, but allows one to return to the menu if desired by pressing @key{ESC}) or to edit any of the @dfn{boot entries} by pressing @key{e}. If you protect the menu interface with a password (@pxref{Security}), all you can do is choose an entry by pressing @key{RET}, or press @key{p} to enter the password. @node Menu entry editor @section Editing a menu entry The menu entry editor looks much like the main menu interface, but the lines in the menu are individual commands in the selected entry instead of entry names. If an @key{ESC} is pressed in the editor, it aborts all the changes made to the configuration entry and returns to the main menu interface. Each line in the menu entry can be edited freely, and you can add new lines by pressing @key{RET} at the end of a line. To boot the edited entry, press @key{Ctrl-x}. Although GRUB unfortunately does not support @dfn{undo}, you can do almost the same thing by just returning to the main menu using @key{ESC}. @node Environment @chapter GRUB environment variables GRUB supports environment variables which are rather like those offered by all Unix-like systems. Environment variables have a name, which is unique and is usually a short identifier, and a value, which is an arbitrary string of characters. They may be set (@pxref{set}), unset (@pxref{unset}), or looked up (@pxref{Shell-like scripting}) by name. A number of environment variables have special meanings to various parts of GRUB. Others may be used freely in GRUB configuration files. @menu * Special environment variables:: * Environment block:: @end menu @node Special environment variables @section Special environment variables These variables have special meaning to GRUB. @menu * biosnum:: * chosen:: * color_highlight:: * color_normal:: * debug:: * default:: * fallback:: * gfxmode:: * gfxpayload:: * gfxterm_font:: * icondir:: * lang:: * locale_dir:: * menu_color_highlight:: * menu_color_normal:: * net_pxe_boot_file:: * net_pxe_dhcp_server_name:: * net_pxe_domain:: * net_pxe_extensionspath:: * net_pxe_hostname:: * net_pxe_ip:: * net_pxe_mac:: * net_pxe_rootpath:: * pager:: * prefix:: * pxe_blksize:: * pxe_default_gateway:: * pxe_default_server:: * root:: * superusers:: * theme:: * timeout:: @end menu @node biosnum @subsection biosnum When chain-loading another boot loader (@pxref{Chain-loading}), GRUB may need to know what BIOS drive number corresponds to the root device (@pxref{root}) so that it can set up registers properly. If the @var{biosnum} variable is set, it overrides GRUB's own means of guessing this. For an alternative approach which also changes BIOS drive mappings for the chain-loaded system, @pxref{drivemap}. @node chosen @subsection chosen When executing a menu entry, GRUB sets the @var{chosen} variable to the title of the entry being executed. If the menu entry is in one or more submenus, then @var{chosen} is set to the titles of each of the submenus starting from the top level followed by the title of the menu entry itself, separated by @samp{>}. @node color_highlight @subsection color_highlight This variable contains the ``highlight'' foreground and background terminal colors, separated by a slash (@samp{/}). Setting this variable changes those colors. For the available color names, @pxref{color_normal}. The default is @samp{black/white}. @node color_normal @subsection color_normal This variable contains the ``normal'' foreground and background terminal colors, separated by a slash (@samp{/}). Setting this variable changes those colors. Each color must be a name from the following list: @itemize @bullet @item black @item blue @item green @item cyan @item red @item magenta @item brown @item light-gray @item dark-gray @item light-blue @item light-green @item light-cyan @item light-red @item light-magenta @item yellow @item white @end itemize The default is @samp{white/black}. @node debug @subsection debug This variable may be set to enable debugging output from various components of GRUB. The value is a list of debug facility names separated by whitespace or @samp{,}, or @samp{all} to enable all available debugging output. @node default @subsection default If this variable is set, it identifies a menu entry that should be selected by default, possibly after a timeout (@pxref{timeout}). The entry may be identified by number or by title. If the entry is in a submenu, then it must be identified using the titles of each of the submenus starting from the top level followed by the number or title of the menu entry itself, separated by @samp{>}. For example, take the following menu structure: @itemize @w @item Submenu 1 @itemize @w @item Menu Entry 1 @item Menu Entry 2 @end itemize @item Submenu 2 @itemize @w @item Submenu 3 @itemize @w @item Menu Entry 3 @item Menu Entry 4 @end itemize @item Menu Entry 5 @end itemize @end itemize ``Menu Entry 3'' would then be identified as @samp{Submenu 2>Submenu 3>Menu Entry 3}. This variable is often set by @samp{GRUB_DEFAULT} (@pxref{Simple configuration}), @command{grub-set-default}, or @command{grub-reboot}. @node fallback @subsection fallback If this variable is set, it identifies a menu entry that should be selected if the default menu entry fails to boot. Entries are identified in the same way as for @samp{default} (@pxref{default}). @node gfxmode @subsection gfxmode If this variable is set, it sets the resolution used on the @samp{gfxterm} graphical terminal. Note that you can only use modes which your graphics card supports via VESA BIOS Extensions (VBE), so for example native LCD panel resolutions may not be available. The default is @samp{auto}, which selects a platform-specific default that should look reasonable. The resolution may be specified as a sequence of one or more modes, separated by commas (@samp{,}) or semicolons (@samp{;}); each will be tried in turn until one is found. Each mode should be either @samp{auto}, @samp{@var{width}x@var{height}}, or @samp{@var{width}x@var{height}x@var{depth}}. @node gfxpayload @subsection gfxpayload If this variable is set, it controls the video mode in which the Linux kernel starts up, replacing the @samp{vga=} boot option (@pxref{linux}). It may be set to @samp{text} to force the Linux kernel to boot in normal text mode, @samp{keep} to preserve the graphics mode set using @samp{gfxmode}, or any of the permitted values for @samp{gfxmode} to set a particular graphics mode (@pxref{gfxmode}). Depending on your kernel, your distribution, your graphics card, and the phase of the moon, note that using this option may cause GNU/Linux to suffer from various display problems, particularly during the early part of the boot sequence. If you have problems, set this variable to @samp{text} and GRUB will tell Linux to boot in normal text mode. The default is platform-specific. On platforms with a native text mode (such as PC BIOS platforms), the default is @samp{text}. Otherwise the default may be @samp{auto} or a specific video mode. This variable is often set by @samp{GRUB_GFXPAYLOAD_LINUX} (@pxref{Simple configuration}). @node gfxterm_font @subsection gfxterm_font If this variable is set, it names a font to use for text on the @samp{gfxterm} graphical terminal. Otherwise, @samp{gfxterm} may use any available font. @node icondir @subsection icondir If this variable is set, it names a directory in which the GRUB graphical menu should look for icons after looking in the theme's @samp{icons} directory. @xref{Theme file format}. @node lang @subsection lang If this variable is set, it names the language code that the @command{gettext} command (@pxref{gettext}) uses to translate strings. For example, French would be named as @samp{fr}, and Simplified Chinese as @samp{zh_CN}. @command{grub-mkconfig} (@pxref{Simple configuration}) will try to set a reasonable default for this variable based on the system locale. @node locale_dir @subsection locale_dir If this variable is set, it names the directory where translation files may be found (@pxref{gettext}), usually @file{/boot/grub/locale}. Otherwise, internationalization is disabled. @command{grub-mkconfig} (@pxref{Simple configuration}) will set a reasonable default for this variable if internationalization is needed and any translation files are available. @node menu_color_highlight @subsection menu_color_highlight This variable contains the foreground and background colors to be used for the highlighted menu entry, separated by a slash (@samp{/}). Setting this variable changes those colors. For the available color names, @pxref{color_normal}. The default is the value of @samp{color_highlight} (@pxref{color_highlight}). @node menu_color_normal @subsection menu_color_normal This variable contains the foreground and background colors to be used for non-highlighted menu entries, separated by a slash (@samp{/}). Setting this variable changes those colors. For the available color names, @pxref{color_normal}. The default is the value of @samp{color_normal} (@pxref{color_normal}). @node net_pxe_boot_file @subsection net_pxe_boot_file @xref{Network}. @node net_pxe_dhcp_server_name @subsection net_pxe_dhcp_server_name @xref{Network}. @node net_pxe_domain @subsection net_pxe_domain @xref{Network}. @node net_pxe_extensionspath @subsection net_pxe_extensionspath @xref{Network}. @node net_pxe_hostname @subsection net_pxe_hostname @xref{Network}. @node net_pxe_ip @subsection net_pxe_ip @xref{Network}. @node net_pxe_mac @subsection net_pxe_mac @xref{Network}. @node net_pxe_rootpath @subsection net_pxe_rootpath @xref{Network}. @node pager @subsection pager If set to @samp{1}, pause output after each screenful and wait for keyboard input. The default is not to pause output. @node prefix @subsection prefix The location of the @samp{/boot/grub} directory as an absolute file name (@pxref{File name syntax}). This is normally set by GRUB at startup based on information provided by @command{grub-install}. GRUB modules are dynamically loaded from this directory, so it must be set correctly in order for many parts of GRUB to work. @node pxe_blksize @subsection pxe_blksize @xref{Network}. @node pxe_default_gateway @subsection pxe_default_gateway @xref{Network}. @node pxe_default_server @subsection pxe_default_server @xref{Network}. @node root @subsection root The root device name (@pxref{Device syntax}). Any file names that do not specify an explicit device name are read from this device. The default is normally set by GRUB at startup based on the value of @samp{prefix} (@pxref{prefix}). For example, if GRUB was installed to the first partition of the first hard disk, then @samp{prefix} might be set to @samp{(hd0,msdos1)/boot/grub} and @samp{root} to @samp{hd0,msdos1}. @node superusers @subsection superusers This variable may be set to a list of superuser names to enable authentication support. @xref{Security}. @node theme @subsection theme This variable may be set to a directory containing a GRUB graphical menu theme. @xref{Theme file format}. This variable is often set by @samp{GRUB_THEME} (@pxref{Simple configuration}). @node timeout @subsection timeout If this variable is set, it specifies the time in seconds to wait for keyboard input before booting the default menu entry. A timeout of @samp{0} means to boot the default entry immediately without displaying the menu; a timeout of @samp{-1} (or unset) means to wait indefinitely. This variable is often set by @samp{GRUB_TIMEOUT} or @samp{GRUB_HIDDEN_TIMEOUT} (@pxref{Simple configuration}). @node Environment block @section The GRUB environment block It is often useful to be able to remember a small amount of information from one boot to the next. For example, you might want to set the default menu entry based on what was selected the last time. GRUB deliberately does not implement support for writing files in order to minimise the possibility of the boot loader being responsible for file system corruption, so a GRUB configuration file cannot just create a file in the ordinary way. However, GRUB provides an ``environment block'' which can be used to save a small amount of state. The environment block is a preallocated 1024-byte file, which normally lives in @file{/boot/grub/grubenv} (although you should not assume this). At boot time, the @command{load_env} command (@pxref{load_env}) loads environment variables from it, and the @command{save_env} (@pxref{save_env}) command saves environment variables to it. From a running system, the @command{grub-editenv} utility can be used to edit the environment block. For safety reasons, this storage is only available when installed on a plain disk (no LVM or RAID), using a non-checksumming filesystem (no ZFS), and using BIOS or EFI functions (no ATA, USB or IEEE1275). @command{grub-mkconfig} uses this facility to implement @samp{GRUB_SAVEDEFAULT} (@pxref{Simple configuration}). @node Commands @chapter The list of available commands In this chapter, we list all commands that are available in GRUB. Commands belong to different groups. A few can only be used in the global section of the configuration file (or ``menu''); most of them can be entered on the command-line and can be used either anywhere in the menu or specifically in the menu entries. In rescue mode, only the @command{insmod} (@pxref{insmod}), @command{ls} (@pxref{ls}), @command{set} (@pxref{set}), and @command{unset} (@pxref{unset}) commands are normally available. @menu * Menu-specific commands:: * General commands:: * Command-line and menu entry commands:: @end menu @node Menu-specific commands @section The list of commands for the menu only The semantics used in parsing the configuration file are the following: @itemize @bullet @item The files @emph{must} be in plain-text format. @item @samp{#} at the beginning of a line in a configuration file means it is only a comment. @item Options are separated by spaces. @item All numbers can be either decimal or hexadecimal. A hexadecimal number must be preceded by @samp{0x}, and is case-insensitive. @end itemize These commands can only be used in the menu: @menu * menuentry:: Start a menu entry * submenu:: Group menu entries @end menu @node menuentry @subsection menuentry @deffn Command menuentry @var{title} @ [@option{--class=class} @dots{}] [@option{--users=users}] @ [@option{--hotkey=key}] @ @{ @var{command}; @dots{} @} This defines a GRUB menu entry named @var{title}. When this entry is selected from the menu, GRUB will set the @var{chosen} environment variable to @var{title}, execute the list of commands given within braces, and if the last command in the list returned successfully and a kernel was loaded it will execute the @command{boot} command. The @option{--class} option may be used any number of times to group menu entries into classes. Menu themes may display different classes using different styles. The @option{--users} option grants specific users access to specific menu entries. @xref{Security}. The @option{--hotkey} option associates a hotkey with a menu entry. @var{key} may be a single letter, or one of the aliases @samp{backspace}, @samp{tab}, or @samp{delete}. @end deffn @node submenu @subsection submenu @deffn Command submenu @var{title} @ [@option{--class=class} @dots{}] [@option{--users=users}] @ [@option{--hotkey=key}] @ @{ @var{menu entries} @dots{} @} This defines a submenu. An entry called @var{title} will be added to the menu; when that entry is selected, a new menu will be displayed showing all the entries within this submenu. All options are the same as in the @command{menuentry} command (@pxref{menuentry}). @end deffn @node General commands @section The list of general commands Commands usable anywhere in the menu and in the command-line. @menu * serial:: Set up a serial device * terminal_input:: Manage input terminals * terminal_output:: Manage output terminals * terminfo:: Define terminal type @end menu @node serial @subsection serial @deffn Command serial [@option{--unit=unit}] [@option{--port=port}] [@option{--speed=speed}] [@option{--word=word}] [@option{--parity=parity}] [@option{--stop=stop}] Initialize a serial device. @var{unit} is a number in the range 0-3 specifying which serial port to use; default is 0, which corresponds to the port often called COM1. @var{port} is the I/O port where the UART is to be found; if specified it takes precedence over @var{unit}. @var{speed} is the transmission speed; default is 9600. @var{word} and @var{stop} are the number of data bits and stop bits. Data bits must be in the range 5-8 and stop bits must be 1 or 2. Default is 8 data bits and one stop bit. @var{parity} is one of @samp{no}, @samp{odd}, @samp{even} and defaults to @samp{no}. The serial port is not used as a communication channel unless the @command{terminal_input} or @command{terminal_output} command is used (@pxref{terminal_input}, @pxref{terminal_output}). See also @ref{Serial terminal}. @end deffn @node terminal_input @subsection terminal_input @deffn Command terminal_input [@option{--append}|@option{--remove}] @ [terminal1] [terminal2] @dots{} List or select an input terminal. With no arguments, list the active and available input terminals. With @option{--append}, add the named terminals to the list of active input terminals; any of these may be used to provide input to GRUB. With @option{--remove}, remove the named terminals from the active list. With no options but a list of terminal names, make only the listed terminal names active. @end deffn @node terminal_output @subsection terminal_output @deffn Command terminal_output [@option{--append}|@option{--remove}] @ [terminal1] [terminal2] @dots{} List or select an output terminal. With no arguments, list the active and available output terminals. With @option{--append}, add the named terminals to the list of active output terminals; all of these will receive output from GRUB. With @option{--remove}, remove the named terminals from the active list. With no options but a list of terminal names, make only the listed terminal names active. @end deffn @node terminfo @subsection terminfo @deffn Command terminfo [-a|-u|-v] [term] Define the capabilities of your terminal by giving the name of an entry in the terminfo database, which should correspond roughly to a @samp{TERM} environment variable in Unix. The currently available terminal types are @samp{vt100}, @samp{vt100-color}, @samp{ieee1275}, and @samp{dumb}. If you need other terminal types, please contact us to discuss the best way to include support for these in GRUB. The @option{-a} (@option{--ascii}), @option{-u} (@option{--utf8}), and @option{-v} (@option{--visual-utf8}) options control how non-ASCII text is displayed. @option{-a} specifies an ASCII-only terminal; @option{-u} specifies logically-ordered UTF-8; and @option{-v} specifies "visually-ordered UTF-8" (in other words, arranged such that a terminal emulator without bidirectional text support will display right-to-left text in the proper order; this is not really proper UTF-8, but a workaround). If no option or terminal type is specified, the current terminal type is printed. @end deffn @node Command-line and menu entry commands @section The list of command-line and menu entry commands These commands are usable in the command-line and in menu entries. If you forget a command, you can run the command @command{help} (@pxref{help}). @menu * acpi:: Load ACPI tables * badram:: Filter out bad regions of RAM * blocklist:: Print a block list * boot:: Start up your operating system * cat:: Show the contents of a file * chainloader:: Chain-load another boot loader * cmp:: Compare two files * configfile:: Load a configuration file * cpuid:: Check for CPU features * crc:: Calculate CRC32 checksums * date:: Display or set current date and time * drivemap:: Map a drive to another * echo:: Display a line of text * export:: Export an environment variable * false:: Do nothing, unsuccessfully * gettext:: Translate a string * gptsync:: Fill an MBR based on GPT entries * halt:: Shut down your computer * help:: Show help messages * initrd:: Load a Linux initrd * initrd16:: Load a Linux initrd (16-bit mode) * insmod:: Insert a module * keystatus:: Check key modifier status * linux:: Load a Linux kernel * linux16:: Load a Linux kernel (16-bit mode) * list_env:: List variables in environment block * load_env:: Load variables from environment block * loopback:: Make a device from a filesystem image * ls:: List devices or files * parttool:: Modify partition table entries * password:: Set a clear-text password * password_pbkdf2:: Set a hashed password * play:: Play a tune * pxe_unload:: Unload the PXE environment * read:: Read user input * reboot:: Reboot your computer * save_env:: Save variables to environment block * search:: Search devices by file, label, or UUID * sendkey:: Emulate keystrokes * set:: Set an environment variable * true:: Do nothing, successfully * unset:: Unset an environment variable * uppermem:: Set the upper memory size @end menu @node acpi @subsection acpi @deffn Command acpi [@option{-1}|@option{-2}] @ [@option{--exclude=table1,@dots{}}|@option{--load-only=table1,@dots{}}] @ [@option{--oemid=id}] [@option{--oemtable=table}] @ [@option{--oemtablerev=rev}] [@option{--oemtablecreator=creator}] @ [@option{--oemtablecreatorrev=rev}] [@option{--no-ebda}] @ filename @dots{} Modern BIOS systems normally implement the Advanced Configuration and Power Interface (ACPI), and define various tables that describe the interface between an ACPI-compliant operating system and the firmware. In some cases, the tables provided by default only work well with certain operating systems, and it may be necessary to replace some of them. Normally, this command will replace the Root System Description Pointer (RSDP) in the Extended BIOS Data Area to point to the new tables. If the @option{--no-ebda} option is used, the new tables will be known only to GRUB, but may be used by GRUB's EFI emulation. @end deffn @node badram @subsection badram @deffn Command badram addr,mask[,addr,mask...] Filter out bad RAM. @end deffn This command notifies the memory manager that specified regions of RAM ought to be filtered out (usually, because they're damaged). This remains in effect after a payload kernel has been loaded by GRUB, as long as the loaded kernel obtains its memory map from GRUB. Kernels that support this include Linux, GNU Mach, the kernel of FreeBSD and Multiboot kernels in general. Syntax is the same as provided by the @uref{http://www.memtest.org/, Memtest86+ utility}: a list of address/mask pairs. Given a page-aligned address and a base address / mask pair, if all the bits of the page-aligned address that are enabled by the mask match with the base address, it means this page is to be filtered. This syntax makes it easy to represent patterns that are often result of memory damage, due to physical distribution of memory cells. @node blocklist @subsection blocklist @deffn Command blocklist file Print a block list (@pxref{Block list syntax}) for @var{file}. @end deffn @node boot @subsection boot @deffn Command boot Boot the OS or chain-loader which has been loaded. Only necessary if running the fully interactive command-line (it is implicit at the end of a menu entry). @end deffn @node cat @subsection cat @deffn Command cat [@option{--dos}] file Display the contents of the file @var{file}. This command may be useful to remind you of your OS's root partition: @example grub> @kbd{cat /etc/fstab} @end example If the @option{--dos} option is used, then carriage return / new line pairs will be displayed as a simple new line. Otherwise, the carriage return will be displayed as a control character (@samp{}) to make it easier to see when boot problems are caused by a file formatted using DOS-style line endings. @end deffn @node chainloader @subsection chainloader @deffn Command chainloader [@option{--force}] file Load @var{file} as a chain-loader. Like any other file loaded by the filesystem code, it can use the blocklist notation (@pxref{Block list syntax}) to grab the first sector of the current partition with @samp{+1}. If you specify the option @option{--force}, then load @var{file} forcibly, whether it has a correct signature or not. This is required when you want to load a defective boot loader, such as SCO UnixWare 7.1. @end deffn @node cmp @subsection cmp @deffn Command cmp file1 file2 Compare the file @var{file1} with the file @var{file2}. If they differ in size, print the sizes like this: @example Differ in size: 0x1234 [foo], 0x4321 [bar] @end example If the sizes are equal but the bytes at an offset differ, then print the bytes like this: @example Differ at the offset 777: 0xbe [foo], 0xef [bar] @end example If they are completely identical, nothing will be printed. @end deffn @node configfile @subsection configfile @deffn Command configfile file Load @var{file} as a configuration file. If @var{file} defines any menu entries, then show a menu containing them immediately. @end deffn @node cpuid @subsection cpuid @deffn Command cpuid [-l] Check for CPU features. This command is only available on x86 systems. With the @option{-l} option, return true if the CPU supports long mode (64-bit). If invoked without options, this command currently behaves as if it had been invoked with @option{-l}. This may change in the future. @end deffn @node crc @subsection crc @deffn Command crc file Display the CRC32 checksum of @var{file}. @end deffn @node date @subsection date @deffn Command date [[year-]month-day] [hour:minute[:second]] With no arguments, print the current date and time. Otherwise, take the current date and time, change any elements specified as arguments, and set the result as the new date and time. For example, `date 01-01' will set the current month and day to January 1, but leave the year, hour, minute, and second unchanged. @end deffn @node drivemap @subsection drivemap @deffn Command drivemap @option{-l}|@option{-r}|[@option{-s}] @ from_drive to_drive Without options, map the drive @var{from_drive} to the drive @var{to_drive}. This is necessary when you chain-load some operating systems, such as DOS, if such an OS resides at a non-first drive. For convenience, any partition suffix on the drive is ignored, so you can safely use @verb{'${root}'} as a drive specification. With the @option{-s} option, perform the reverse mapping as well, swapping the two drives. With the @option{-l} option, list the current mappings. With the @option{-r} option, reset all mappings to the default values. For example: @example drivemap -s (hd0) (hd1) @end example @end deffn @node echo @subsection echo @deffn Command echo [@option{-n}] [@option{-e}] string @dots{} Display the requested text and, unless the @option{-n} option is used, a trailing new line. If there is more than one string, they are separated by spaces in the output. As usual in GRUB commands, variables may be substituted using @samp{$@{var@}}. The @option{-e} option enables interpretation of backslash escapes. The following sequences are recognised: @table @code @item \\ backslash @item \a alert (BEL) @item \c suppress trailing new line @item \f form feed @item \n new line @item \r carriage return @item \t horizontal tab @item \v vertical tab @end table When interpreting backslash escapes, backslash followed by any other character will print that character. @end deffn @node export @subsection export @deffn Command export envvar Export the environment variable @var{envvar}. Exported variables are visible to subsidiary configuration files loaded using @command{configfile}. @end deffn @node false @subsection false @deffn Command false Do nothing, unsuccessfully. This is mainly useful in control constructs such as @code{if} and @code{while} (@pxref{Shell-like scripting}). @end deffn @node gettext @subsection gettext @deffn Command gettext string Translate @var{string} into the current language. The current language code is stored in the @samp{lang} variable in GRUB's environment (@pxref{lang}). Translation files in MO format are read from @samp{locale_dir} (@pxref{locale_dir}), usually @file{/boot/grub/locale}. @end deffn @node gptsync @subsection gptsync @deffn Command gptsync device [partition[+/-[type]]] @dots{} Disks using the GUID Partition Table (GPT) also have a legacy Master Boot Record (MBR) partition table for compatibility with the BIOS and with older operating systems. The legacy MBR can only represent a limited subset of GPT partition entries. This command populates the legacy MBR with the specified @var{partition} entries on @var{device}. Up to three partitions may be used. @var{type} is an MBR partition type code; prefix with @samp{0x} if you want to enter this in hexadecimal. The separator between @var{partition} and @var{type} may be @samp{+} to make the partition active, or @samp{-} to make it inactive; only one partition may be active. If both the separator and type are omitted, then the partition will be inactive. @end deffn @node halt @subsection halt @deffn Command halt @option{--no-apm} The command halts the computer. If the @option{--no-apm} option is specified, no APM BIOS call is performed. Otherwise, the computer is shut down using APM. @end deffn @node help @subsection help @deffn Command help [pattern @dots{}] Display helpful information about builtin commands. If you do not specify @var{pattern}, this command shows short descriptions of all available commands. If you specify any @var{patterns}, it displays longer information about each of the commands whose names begin with those @var{patterns}. @end deffn @node initrd @subsection initrd @deffn Command initrd file Load an initial ramdisk for a Linux kernel image, and set the appropriate parameters in the Linux setup area in memory. This may only be used after the @command{linux} command (@pxref{linux}) has been run. See also @ref{GNU/Linux}. @end deffn @node initrd16 @subsection initrd16 @deffn Command initrd16 file Load an initial ramdisk for a Linux kernel image to be booted in 16-bit mode, and set the appropriate parameters in the Linux setup area in memory. This may only be used after the @command{linux16} command (@pxref{linux16}) has been run. See also @ref{GNU/Linux}. This command is only available on x86 systems. @end deffn @node insmod @subsection insmod @deffn Command insmod module Insert the dynamic GRUB module called @var{module}. @end deffn @node keystatus @subsection keystatus @deffn Command keystatus [@option{--shift}] [@option{--ctrl}] [@option{--alt}] Return true if the Shift, Control, or Alt modifier keys are held down, as requested by options. This is useful in scripting, to allow some user control over behaviour without having to wait for a keypress. Checking key modifier status is only supported on some platforms. If invoked without any options, the @command{keystatus} command returns true if and only if checking key modifier status is supported. @end deffn @node linux @subsection linux @deffn Command linux file @dots{} Load a Linux kernel image from @var{file}. The rest of the line is passed verbatim as the @dfn{kernel command-line}. Any initrd must be reloaded after using this command (@pxref{initrd}). On x86 systems, the kernel will be booted using the 32-bit boot protocol. Note that this means that the @samp{vga=} boot option will not work; if you want to set a special video mode, you will need to use GRUB commands such as @samp{set gfxpayload=1024x768} or @samp{set gfxpayload=keep} (to keep the same mode as used in GRUB) instead. GRUB can automatically detect some uses of @samp{vga=} and translate them to appropriate settings of @samp{gfxpayload}. The @command{linux16} command (@pxref{linux16}) avoids this restriction. @end deffn @node linux16 @subsection linux16 @deffn Command linux16 file @dots{} Load a Linux kernel image from @var{file} in 16-bit mode. The rest of the line is passed verbatim as the @dfn{kernel command-line}. Any initrd must be reloaded after using this command (@pxref{initrd16}). The kernel will be booted using the traditional 16-bit boot protocol. As well as bypassing problems with @samp{vga=} described in @ref{linux}, this permits booting some other programs that implement the Linux boot protocol for the sake of convenience. This command is only available on x86 systems. @end deffn @node list_env @subsection list_env @deffn Command list_env [@option{-f} file] List all variables in the environment block file. @xref{Environment block}. The @option{-f} option overrides the default location of the environment block. @end deffn @node load_env @subsection load_env @deffn Command load_env [@option{-f} file] Load all variables from the environment block file into the environment. @xref{Environment block}. The @option{-f} option overrides the default location of the environment block. @end deffn @node loopback @subsection loopback @deffn Command loopback [@option{-d}] device file Make the device named @var{device} correspond to the contents of the filesystem image in @var{file}. For example: @example loopback loop0 /path/to/image ls (loop0)/ @end example With the @option{-d} option, delete a device previously created using this command. @end deffn @node ls @subsection ls @deffn Command ls [arg @dots{}] List devices or files. With no arguments, print all devices known to GRUB. If the argument is a device name enclosed in parentheses (@pxref{Device syntax}), then list all files at the root directory of that device. If the argument is a directory given as an absolute file name (@pxref{File name syntax}), then list the contents of that directory. @end deffn @node parttool @subsection parttool @deffn Command parttool partition commands Make various modifications to partition table entries. Each @var{command} is either a boolean option, in which case it must be followed with @samp{+} or @samp{-} (with no intervening space) to enable or disable that option, or else it takes a value in the form @samp{@var{command}=@var{value}}. Currently, @command{parttool} is only useful on DOS partition tables (also known as Master Boot Record, or MBR). On these partition tables, the following commands are available: @table @asis @item @samp{boot} (boolean) When enabled, this makes the selected partition be the active (bootable) partition on its disk, clearing the active flag on all other partitions. This command is limited to @emph{primary} partitions. @item @samp{type} (value) Change the type of an existing partition. The value must be a number in the range 0-0xFF (prefix with @samp{0x} to enter it in hexadecimal). @item @samp{hidden} (boolean) When enabled, this hides the selected partition by setting the @dfn{hidden} bit in its partition type code; when disabled, unhides the selected partition by clearing this bit. This is useful only when booting DOS or Wwindows and multiple primary FAT partitions exist in one disk. See also @ref{DOS/Windows}. @end table @end deffn @node password @subsection password @deffn Command password user clear-password Define a user named @var{user} with password @var{clear-password}. @xref{Security}. @end deffn @node password_pbkdf2 @subsection password_pbkdf2 @deffn Command password_pbkdf2 user hashed-password Define a user named @var{user} with password hash @var{hashed-password}. Use @command{grub-mkpasswd-pbkdf2} (@pxref{Invoking grub-mkpasswd-pbkdf2}) to generate password hashes. @xref{Security}. @end deffn @node play @subsection play @deffn Command play file | tempo [pitch1 duration1] [pitch2 duration2] ... Plays a tune If the argument is a file name (@pxref{File name syntax}), play the tune recorded in it. The file format is first the tempo as an unsigned 32bit little-endian number, then pairs of unsigned 16bit little-endian numbers for pitch and duration pairs. If the arguments are a series of numbers, play the inline tune. The tempo is the base for all note durations. 60 gives a 1-second base, 120 gives a half-second base, etc. Pitches are Hz. Set pitch to 0 to produce a rest. @end deffn @node pxe_unload @subsection pxe_unload @deffn Command pxe_unload Unload the PXE environment (@pxref{Network}). This command is only available on PC BIOS systems. @end deffn @node read @subsection read @deffn Command read [var] Read a line of input from the user. If an environment variable @var{var} is given, set that environment variable to the line of input that was read, with no terminating newline. @end deffn @node reboot @subsection reboot @deffn Command reboot Reboot the computer. @end deffn @node save_env @subsection save_env @deffn Command save_env [@option{-f} file] var @dots{} Save the named variables from the environment to the environment block file. @xref{Environment block}. The @option{-f} option overrides the default location of the environment block. @end deffn @node search @subsection search @deffn Command search @ [@option{--file}|@option{--label}|@option{--fs-uuid}] @ [@option{--set} [var]] [@option{--no-floppy}] name Search devices by file (@option{-f}, @option{--file}), filesystem label (@option{-l}, @option{--label}), or filesystem UUID (@option{-u}, @option{--fs-uuid}). If the @option{--set} option is used, the first device found is set as the value of environment variable @var{var}. The default variable is @samp{root}. The @option{--no-floppy} option prevents searching floppy devices, which can be slow. The @samp{search.file}, @samp{search.fs_label}, and @samp{search.fs_uuid} commands are aliases for @samp{search --file}, @samp{search --label}, and @samp{search --fs-uuid} respectively. @end deffn @node sendkey @subsection sendkey @deffn Command sendkey @ [@option{--num}|@option{--caps}|@option{--scroll}|@option{--insert}|@ @option{--pause}|@option{--left-shift}|@option{--right-shift}|@ @option{--sysrq}|@option{--numkey}|@option{--capskey}|@option{--scrollkey}|@ @option{--insertkey}|@option{--left-alt}|@option{--right-alt}|@ @option{--left-ctrl}|@option{--right-ctrl} @ @samp{on}|@samp{off}]@dots{} @ [@option{no-led}] @ keystroke Insert keystrokes into the keyboard buffer when booting. Sometimes an operating system or chainloaded boot loader requires particular keys to be pressed: for example, one might need to press a particular key to enter "safe mode", or when chainloading another boot loader one might send keystrokes to it to navigate its menu. You may provide up to 16 keystrokes (the length of the BIOS keyboard buffer). Keystroke names may be upper-case or lower-case letters, digits, or taken from the following table: @c Please keep this table in the same order as in @c commands/i386/pc/sendkey.c, for ease of maintenance. @c Exception: The function and numeric keys are sorted, for aesthetics. @multitable @columnfractions .4 .5 @headitem Name @tab Key @item escape @tab Escape @item exclam @tab ! @item at @tab @@ @item numbersign @tab # @item dollar @tab $ @item percent @tab % @item caret @tab ^ @item ampersand @tab & @item asterisk @tab * @item parenleft @tab ( @item parenright @tab ) @item minus @tab - @item underscore @tab _ @item equal @tab = @item plus @tab + @item backspace @tab Backspace @item tab @tab Tab @item bracketleft @tab [ @item braceleft @tab @{ @item bracketright @tab ] @item braceright @tab @} @item enter @tab Enter @item control @tab press and release Control @item semicolon @tab ; @item colon @tab : @item quote @tab ' @item doublequote @tab " @item backquote @tab ` @item tilde @tab ~ @item shift @tab press and release left Shift @item backslash @tab \ @item bar @tab | @item comma @tab , @item less @tab < @item period @tab . @item greater @tab > @item slash @tab / @item question @tab ? @item rshift @tab press and release right Shift @item alt @tab press and release Alt @item space @tab space bar @item capslock @tab Caps Lock @item F1 @tab F1 @item F2 @tab F2 @item F3 @tab F3 @item F4 @tab F4 @item F5 @tab F5 @item F6 @tab F6 @item F7 @tab F7 @item F8 @tab F8 @item F9 @tab F9 @item F10 @tab F10 @item F11 @tab F11 @item F12 @tab F12 @item num1 @tab 1 (numeric keypad) @item num2 @tab 2 (numeric keypad) @item num3 @tab 3 (numeric keypad) @item num4 @tab 4 (numeric keypad) @item num5 @tab 5 (numeric keypad) @item num6 @tab 6 (numeric keypad) @item num7 @tab 7 (numeric keypad) @item num8 @tab 8 (numeric keypad) @item num9 @tab 9 (numeric keypad) @item num0 @tab 0 (numeric keypad) @item numperiod @tab . (numeric keypad) @item numend @tab End (numeric keypad) @item numdown @tab Down (numeric keypad) @item numpgdown @tab Page Down (numeric keypad) @item numleft @tab Left (numeric keypad) @item numcenter @tab 5 with Num Lock inactive (numeric keypad) @item numright @tab Right (numeric keypad) @item numhome @tab Home (numeric keypad) @item numup @tab Up (numeric keypad) @item numpgup @tab Page Up (numeric keypad) @item numinsert @tab Insert (numeric keypad) @item numdelete @tab Delete (numeric keypad) @item numasterisk @tab * (numeric keypad) @item numminus @tab - (numeric keypad) @item numplus @tab + (numeric keypad) @item numslash @tab / (numeric keypad) @item numenter @tab Enter (numeric keypad) @item delete @tab Delete @item insert @tab Insert @item home @tab Home @item end @tab End @item pgdown @tab Page Down @item pgup @tab Page Up @item down @tab Down @item up @tab Up @item left @tab Left @item right @tab Right @end multitable As well as keystrokes, the @command{sendkey} command takes various options that affect the BIOS keyboard status flags. These options take an @samp{on} or @samp{off} parameter, specifying that the corresponding status flag be set or unset; omitting the option for a given status flag will leave that flag at its initial state at boot. The @option{--num}, @option{--caps}, @option{--scroll}, and @option{--insert} options emulate setting the corresponding mode, while the @option{--numkey}, @option{--capskey}, @option{--scrollkey}, and @option{--insertkey} options emulate pressing and holding the corresponding key. The other status flag options are self-explanatory. If the @option{--no-led} option is given, the status flag options will have no effect on keyboard LEDs. If the @command{sendkey} command is given multiple times, then only the last invocation has any effect. Since @command{sendkey} manipulates the BIOS keyboard buffer, it may cause hangs, reboots, or other misbehaviour on some systems. If the operating system or boot loader that runs after GRUB uses its own keyboard driver rather than the BIOS keyboard functions, then @command{sendkey} will have no effect. This command is only available on PC BIOS systems. @end deffn @node set @subsection set @deffn Command set [envvar=value] Set the environment variable @var{envvar} to @var{value}. If invoked with no arguments, print all environment variables with their values. @end deffn @node true @subsection true @deffn Command true Do nothing, successfully. This is mainly useful in control constructs such as @code{if} and @code{while} (@pxref{Shell-like scripting}). @end deffn @node unset @subsection unset @deffn Command unset envvar Unset the environment variable @var{envvar}. @end deffn @node uppermem @subsection uppermem This command is not yet implemented for GRUB 2, although it is planned. @node Security @chapter Authentication and authorisation By default, the boot loader interface is accessible to anyone with physical access to the console: anyone can select and edit any menu entry, and anyone can get direct access to a GRUB shell prompt. For most systems, this is reasonable since anyone with direct physical access has a variety of other ways to gain full access, and requiring authentication at the boot loader level would only serve to make it difficult to recover broken systems. However, in some environments, such as kiosks, it may be appropriate to lock down the boot loader to require authentication before performing certain operations. The @samp{password} (@pxref{password}) and @samp{password_pbkdf2} (@pxref{password_pbkdf2}) commands can be used to define users, each of which has an associated password. @samp{password} sets the password in plain text, requiring @file{grub.cfg} to be secure; @samp{password_pbkdf2} sets the password hashed using the Password-Based Key Derivation Function (RFC 2898), requiring the use of @command{grub-mkpasswd-pbkdf2} (@pxref{Invoking grub-mkpasswd-pbkdf2}) to generate password hashes. In order to enable authentication support, the @samp{superusers} environment variable must be set to a list of usernames, separated by any of spaces, commas, semicolons, pipes, or ampersands. Superusers are permitted to use the GRUB command line, edit menu entries, and execute any menu entry. If @samp{superusers} is set, then use of the command line is automatically restricted to superusers. Other users may be given access to specific menu entries by giving a list of usernames (as above) using the @option{--users} option to the @samp{menuentry} command (@pxref{menuentry}). If the @option{--users} option is not used for a menu entry, then that entry is unrestricted. Putting this together, a typical @file{grub.cfg} fragment might look like this: @example @group set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.biglongstring password user1 insecure menuentry "May be run by any user" @{ set root=(hd0,1) linux /vmlinuz @} menuentry "Superusers only" --users "" @{ set root=(hd0,1) linux /vmlinuz single @} menuentry "May be run by user1 or a superuser" --users user1 @{ set root=(hd0,2) chainloader +1 @} @end group @end example The @command{grub-mkconfig} program does not yet have built-in support for generating configuration files with authentication. You can use @file{/etc/grub.d/40_custom} to add simple superuser authentication, by adding @kbd{set superusers=} and @kbd{password} or @kbd{password_pbkdf2} commands. @node Supported kernels @chapter Supported boot targets X86 support is summarised in the following table. ``Yes'' means that the kernel works on the given platform, ``crashes'' means an early kernel crash which we hope will be fixed by concerned kernel developers. ``no'' means GRUB doesn't load the given kernel on a given platform. ``headless'' means that the kernel works but lacks console drivers (you can still use serial or network console). In case of ``no'' and ``crashes'' the reason is given in footnote. @multitable @columnfractions .50 .22 .22 @item @tab BIOS @tab Coreboot @item BIOS chainloading @tab yes @tab no (1) @item NTLDR @tab yes @tab no (1) @item FreeBSD bootloader @tab yes @tab crashes (1) @item 32-bit kFreeBSD @tab yes @tab crashes (2,6) @item 64-bit kFreeBSD @tab yes @tab crashes (2,6) @item 32-bit kNetBSD @tab yes @tab crashes (1) @item 64-bit kNetBSD @tab yes @tab crashes (2) @item 32-bit kOpenBSD @tab yes @tab yes @item 64-bit kOpenBSD @tab yes @tab yes @item Multiboot @tab yes @tab yes @item Multiboot2 @tab yes @tab yes @item 32-bit Linux (legacy protocol) @tab yes @tab no (1) @item 64-bit Linux (legacy protocol) @tab yes @tab no (1) @item 32-bit Linux (modern protocol) @tab yes @tab yes @item 64-bit Linux (modern protocol) @tab yes @tab yes @item 32-bit XNU @tab yes @tab ? @item 64-bit XNU @tab yes @tab ? @item 32-bit EFI chainloader @tab no (3) @tab no (3) @item 64-bit EFI chainloader @tab no (3) @tab no (3) @item Appleloader @tab no (3) @tab no (3) @end multitable @multitable @columnfractions .50 .22 .22 @item @tab Multiboot @tab Qemu @item BIOS chainloading @tab no (1) @tab no (1) @item NTLDR @tab no (1) @tab no (1) @item FreeBSD bootloader @tab crashes (1) @tab crashes (1) @item 32-bit kFreeBSD @tab crashes (6) @tab crashes (6) @item 64-bit kFreeBSD @tab crashes (6) @tab crashes (6) @item 32-bit kNetBSD @tab crashes (1) @tab crashes (1) @item 64-bit kNetBSD @tab yes @tab yes @item 32-bit kOpenBSD @tab yes @tab yes @item 64-bit kOpenBSD @tab yes @tab yes @item Multiboot @tab yes @tab yes @item Multiboot2 @tab yes @tab yes @item 32-bit Linux (legacy protocol) @tab no (1) @tab no (1) @item 64-bit Linux (legacy protocol) @tab no (1) @tab no (1) @item 32-bit Linux (modern protocol) @tab yes @tab yes @item 64-bit Linux (modern protocol) @tab yes @tab yes @item 32-bit XNU @tab ? @tab ? @item 64-bit XNU @tab ? @tab ? @item 32-bit EFI chainloader @tab no (3) @tab no (3) @item 64-bit EFI chainloader @tab no (3) @tab no (3) @item Appleloader @tab no (3) @tab no (3) @end multitable @multitable @columnfractions .50 .22 .22 @item @tab 32-bit EFI @tab 64-bit EFI @item BIOS chainloading @tab no (1) @tab no (1) @item NTLDR @tab no (1) @tab no (1) @item FreeBSD bootloader @tab crashes (1) @tab crashes (1) @item 32-bit kFreeBSD @tab headless @tab headless @item 64-bit kFreeBSD @tab headless @tab headless @item 32-bit kNetBSD @tab crashes (1) @tab crashes (1) @item 64-bit kNetBSD @tab yes @tab yes @item 32-bit kOpenBSD @tab headless @tab headless @item 64-bit kOpenBSD @tab headless @tab headless @item Multiboot @tab yes @tab yes @item Multiboot2 @tab yes @tab yes @item 32-bit Linux (legacy protocol) @tab no (1) @tab no (1) @item 64-bit Linux (legacy protocol) @tab no (1) @tab no (1) @item 32-bit Linux (modern protocol) @tab yes @tab yes @item 64-bit Linux (modern protocol) @tab yes @tab yes @item 32-bit XNU @tab yes @tab yes @item 64-bit XNU @tab yes (5) @tab yes @item 32-bit EFI chainloader @tab yes @tab no (4) @item 64-bit EFI chainloader @tab no (4) @tab yes @item Appleloader @tab yes @tab yes @end multitable @multitable @columnfractions .50 .22 .22 @item @tab IEEE1275 @item BIOS chainloading @tab no (1) @item NTLDR @tab no (1) @item FreeBSD bootloader @tab crashes (1) @item 32-bit kFreeBSD @tab crashes (6) @item 64-bit kFreeBSD @tab crashes (6) @item 32-bit kNetBSD @tab crashes (1) @item 64-bit kNetBSD @tab ? @item 32-bit kOpenBSD @tab ? @item 64-bit kOpenBSD @tab ? @item Multiboot @tab ? @item Multiboot2 @tab ? @item 32-bit Linux (legacy protocol) @tab no (1) @item 64-bit Linux (legacy protocol) @tab no (1) @item 32-bit Linux (modern protocol) @tab ? @item 64-bit Linux (modern protocol) @tab ? @item 32-bit XNU @tab ? @item 64-bit XNU @tab ? @item 32-bit EFI chainloader @tab no (3) @item 64-bit EFI chainloader @tab no (3) @item Appleloader @tab no (3) @end multitable @enumerate @item Requires BIOS @item Crashes because the memory at 0x0-0x1000 isn't available @item EFI only @item 32-bit and 64-bit EFI have different structures and work in different CPU modes so it's not possible to chainload 32-bit bootloader on 64-bit platform and vice-versa @item Some modules may need to be disabled @item Requires ACPI @end enumerate PowerPC and Sparc ports support only Linux. MIPS port supports Linux and multiboot2. @chapter Boot tests As you have seen in previous chapter the support matrix is pretty big and some of the configurations are only rarely used. To ensure the quality bootchecks are available for all x86 targets except EFI chainloader, Appleloader and XNU. All x86 platforms have bootcheck facility except ieee1275. Multiboot, multiboot2, BIOS chainloader, ntldr and freebsd-bootloader boot targets are tested only with a fake kernel images. Only Linux is tested among the payloads using Linux protocols. Following variables must be defined: @multitable @columnfractions .30 .65 @item GRUB_PAYLOADS_DIR @tab directory containing the required kernels @item GRUB_CBFSTOOL @tab cbfstoll from Coreboot package (for coreboot platform only) @item GRUB_COREBOOT_ROM @tab empty Coreboot ROM @item GRUB_QEMU_OPTS @tab additional options to be supplied to QEMU @end multitable Required files are: @multitable @columnfractions .40 .55 @item kfreebsd_env.i386 @tab 32-bit kFreeBSD device hints @item kfreebsd.i386 @tab 32-bit FreeBSD kernel image @item kfreebsd.x86_64, kfreebsd_env.x86_64 @tab same from 64-bit kFreeBSD @item knetbsd.i386 @tab 32-bit NetBSD kernel image @item knetbsd.miniroot.i386 @tab 32-bit kNetBSD miniroot.kmod. @item knetbsd.x86_64, knetbsd.miniroot.x86_64 @tab same from 64-bit kNetBSD @item kopenbsd.i386 @tab 32-bit OpenBSD kernel bsd.rd image @item kopenbsd.x86_64 @tab same from 64-bit kOpenBSD @item linux.i386 @tab 32-bit Linux @item linux.x86_64 @tab 64-bit Linux @end multitable @node Troubleshooting @chapter Error messages produced by GRUB @menu * GRUB only offers a rescue shell:: @end menu @node GRUB only offers a rescue shell @section GRUB only offers a rescue shell GRUB's normal start-up procedure involves setting the @samp{prefix} environment variable to a value set in the core image by @command{grub-install}, setting the @samp{root} variable to match, loading the @samp{normal} module from the prefix, and running the @samp{normal} command. This command is responsible for reading @file{/boot/grub/grub.cfg}, running the menu, and doing all the useful things GRUB is supposed to do. If, instead, you only get a rescue shell, this usually means that GRUB failed to load the @samp{normal} module for some reason. It may be possible to work around this temporarily: for instance, if the reason for the failure is that @samp{prefix} is wrong (perhaps it refers to the wrong device, or perhaps the path to @file{/boot/grub} was not correctly made relative to the device), then you can correct this and enter normal mode manually: @example @group # Inspect the current prefix (and other preset variables): set # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal @end group @end example However, any problem that leaves you in the rescue shell probably means that GRUB was not correctly installed. It may be more useful to try to reinstall it properly using @kbd{grub-install @var{device}} (@pxref{Invoking grub-install}). When doing this, there are a few things to remember: @itemize @bullet{} @item Drive ordering in your operating system may not be the same as the boot drive ordering used by your firmware. Do not assume that your first hard drive (e.g. @samp{/dev/sda}) is the one that your firmware will boot from. @file{device.map} (@pxref{Device map}) can be used to override this, but it is usually better to use UUIDs or file system labels and avoid depending on drive ordering entirely. @item At least on BIOS systems, if you tell @command{grub-install} to install GRUB to a partition but GRUB has already been installed in the master boot record, then the GRUB installation in the partition will be ignored. @item If possible, it is generally best to avoid installing GRUB to a partition (unless it is a special partition for the use of GRUB alone, such as the BIOS Boot Partition used on GPT). Doing this means that GRUB may stop being able to read its core image due to a file system moving blocks around, such as while defragmenting, running checks, or even during normal operation. Installing to the whole disk device is normally more robust. @item Check that GRUB actually knows how to read from the device and file system containing @file{/boot/grub}. It will not be able to read from encrypted devices, nor from file systems for which support has not yet been added to GRUB. @end itemize @node Invoking grub-install @chapter Invoking grub-install The program @command{grub-install} installs GRUB on your drive using @command{grub-mkimage} and (on some platforms) @command{grub-setup}. You must specify the device name on which you want to install GRUB, like this: @example grub-install @var{install_device} @end example The device name @var{install_device} is an OS device name or a GRUB device name. @command{grub-install} accepts the following options: @table @option @item --help Print a summary of the command-line options and exit. @item --version Print the version number of GRUB and exit. @item --root-directory=@var{dir} Install GRUB images under the directory @var{dir} instead of the root directory. This option is useful when you want to install GRUB into a separate partition or a removable disk. Here is an example in which you have a separate @dfn{boot} partition which is mounted on @file{/boot}: @example @kbd{grub-install --root-directory=/boot hd0} @end example @item --recheck Recheck the device map, even if @file{/boot/grub/device.map} already exists. You should use this option whenever you add/remove a disk into/from your computer. @end table @node Invoking grub-mkconfig @chapter Invoking grub-mkconfig The program @command{grub-mkconfig} generates a configuration file for GRUB (@pxref{Simple configuration}). @example grub-mkconfig -o /boot/grub/grub.cfg @end example @command{grub-mkconfig} accepts the following options: @table @option @item --help Print a summary of the command-line options and exit. @item --version Print the version number of GRUB and exit. @item -o @var{file} @itemx --output=@var{file} Send the generated configuration file to @var{file}. The default is to send it to standard output. @end table @node Invoking grub-mkpasswd-pbkdf2 @chapter Invoking grub-mkpasswd-pbkdf2 The program @command{grub-mkpasswd-pbkdf2} generates password hashes for GRUB (@pxref{Security}). @example grub-mkpasswd-pbkdf2 @end example @command{grub-mkpasswd-pbkdf2} accepts the following options: @table @option @item -c @var{number} @itemx --iteration-count=@var{number} Number of iterations of the underlying pseudo-random function. Defaults to 10000. @item -l @var{number} @itemx --buflen=@var{number} Length of the generated hash. Defaults to 64. @item -s @var{number} @itemx --salt=@var{number} Length of the salt. Defaults to 64. @end table @node Invoking grub-mkrescue @chapter Invoking grub-mkrescue The program @command{grub-mkrescue} generates a bootable GRUB rescue image (@pxref{Making a GRUB bootable CD-ROM}). @example grub-mkrescue -o grub.iso @end example All arguments not explicitly listed as @command{grub-mkrescue} options are passed on directly to @command{xorriso} in @command{mkisofs} emulation mode. Options passed to @command{xorriso} will normally be interpreted as @command{mkisofs} options; if the option @samp{--} is used, then anything after that will be interpreted as native @command{xorriso} options. Non-option arguments specify additional source directories. This is commonly used to add extra files to the image: @example mkdir -p disk/boot/grub @r{(add extra files to @file{disk/boot/grub})} grub-mkrescue -o grub.iso disk @end example @command{grub-mkrescue} accepts the following options: @table @option @item --help Print a summary of the command-line options and exit. @item --version Print the version number of GRUB and exit. @item -o @var{file} @itemx --output=@var{file} Save output in @var{file}. This "option" is required. @item --modules=@var{modules} Pre-load the named GRUB modules in the image. Multiple entries in @var{modules} should be separated by whitespace (so you will probably need to quote this for your shell). @item --rom-directory=@var{dir} If generating images for the QEMU or Coreboot platforms, copy the resulting @file{qemu.img} or @file{coreboot.elf} files respectively to the @var{dir} directory as well as including them in the image. @item --xorriso=@var{file} Use @var{file} as the @command{xorriso} program, rather than the built-in default. @item --grub-mkimage=@var{file} Use @var{file} as the @command{grub-mkimage} program, rather than the built-in default. @end table @node Obtaining and Building GRUB @appendix How to obtain and build GRUB @quotation @strong{Caution:} GRUB requires binutils-2.9.1.0.23 or later because the GNU assembler has been changed so that it can produce real 16bits machine code between 2.9.1 and 2.9.1.0.x. See @uref{http://sources.redhat.com/binutils/}, to obtain information on how to get the latest version. @end quotation GRUB is available from the GNU alpha archive site @uref{ftp://alpha.gnu.org/gnu/grub} or any of its mirrors. The file will be named grub-version.tar.gz. The current version is @value{VERSION}, so the file you should grab is: @uref{ftp://alpha.gnu.org/gnu/grub/grub-@value{VERSION}.tar.gz} To unbundle GRUB use the instruction: @example @kbd{zcat grub-@value{VERSION}.tar.gz | tar xvf -} @end example which will create a directory called @file{grub-@value{VERSION}} with all the sources. You can look at the file @file{INSTALL} for detailed instructions on how to build and install GRUB, but you should be able to just do: @example @group @kbd{cd grub-@value{VERSION}} @kbd{./configure} @kbd{make install} @end group @end example Also, the latest version is available using Bazaar. See @uref{http://www.gnu.org/software/grub/grub-download.en.html} for more information. @node Reporting bugs @appendix Reporting bugs These are the guideline for how to report bugs. Take a look at this list below before you submit bugs: @enumerate @item Before getting unsettled, read this manual through and through. Also, see the @uref{http://www.gnu.org/software/grub/grub-faq.html, GNU GRUB FAQ}. @item Always mention the information on your GRUB. The version number and the configuration are quite important. If you build it yourself, write the options specified to the configure script and your operating system, including the versions of gcc and binutils. @item If you have trouble with the installation, inform us of how you installed GRUB. Don't omit error messages, if any. Just @samp{GRUB hangs up when it boots} is not enough. The information on your hardware is also essential. These are especially important: the geometries and the partition tables of your hard disk drives and your BIOS. @item If GRUB cannot boot your operating system, write down @emph{everything} you see on the screen. Don't paraphrase them, like @samp{The foo OS crashes with GRUB, even though it can boot with the bar boot loader just fine}. Mention the commands you executed, the messages printed by them, and information on your operating system including the version number. @item Explain what you wanted to do. It is very useful to know your purpose and your wish, and how GRUB didn't satisfy you. @item If you can investigate the problem yourself, please do. That will give you and us much more information on the problem. Attaching a patch is even better. When you attach a patch, make the patch in unified diff format, and write ChangeLog entries. But, even when you make a patch, don't forget to explain the problem, so that we can understand what your patch is for. @item Write down anything that you think might be related. Please understand that we often need to reproduce the same problem you encountered in our environment. So your information should be sufficient for us to do the same thing---Don't forget that we cannot see your computer directly. If you are not sure whether to state a fact or leave it out, state it! Reporting too many things is much better than omitting something important. @end enumerate If you follow the guideline above, submit a report to the @uref{http://savannah.gnu.org/bugs/?group=grub, Bug Tracking System}. Alternatively, you can submit a report via electronic mail to @email{bug-grub@@gnu.org}, but we strongly recommend that you use the Bug Tracking System, because e-mail can be passed over easily. Once we get your report, we will try to fix the bugs. @node Future @appendix Where GRUB will go We started the next generation of GRUB, GRUB 2. GRUB 2 includes internationalization, dynamic module loading, real memory management, multiple architecture support, a scripting language, and many other nice features. If you are interested in the development of GRUB 2, take a look at @uref{http://www.gnu.org/software/grub/grub.html, the homepage}. @node Internals @appendix Hacking GRUB @menu * Getting the source code:: * Finding your way around:: @end menu @node Getting the source code @section Getting the source code GRUB is maintained using the @uref{http://bazaar-vcs.org/, Bazaar revision control system}. To fetch the primary development branch: @example bzr get http://bzr.savannah.gnu.org/r/grub/trunk/grub @end example The GRUB developers maintain several other branches with work in progress. Of these, the most interesting is the experimental branch, which is a staging area for new code which we expect to eventually merge into trunk but which is not yet ready: @example bzr get http://bzr.savannah.gnu.org/r/grub/branches/experimental @end example Once you have used @kbd{bzr get} to fetch an initial copy of a branch, you can use @kbd{bzr pull} to keep it up to date. If you have modified your local version, you may need to resolve conflicts when pulling. @node Finding your way around @section Finding your way around Here is a brief map of the GRUB code base. GRUB uses Autoconf, but not (yet) Automake. The top-level build rules are in @file{configure.ac}, @file{Makefile.in}, and @file{conf/*.rmk}. Each @file{conf/*.rmk} file represents a particular target configuration, and is processed into GNU Make rules by @file{genmk.rb} (which you only need to look at if you are extending the build system). If you are adding a new module which follows an existing pattern, such as a new command or a new filesystem implementation, it is usually easiest to grep @file{conf/*.rmk} for an existing example of that pattern to find out where it should be added. Low-level boot code, such as the MBR implementation on PC BIOS systems, is in the @file{boot/} directory. The GRUB kernel is in @file{kern/}. This contains core facilities such as the device, disk, and file frameworks, environment variable handling, list processing, and so on. The kernel should contain enough to get up to a rescue prompt. Header files for kernel facilities, among others, are in @file{include/}. Terminal implementations are in @file{term/}. Disk access code is spread across @file{disk/} (for accessing the disk devices themselves), @file{partmap/} (for interpreting partition table data), and @file{fs/} (for accessing filesystems). Note that, with the odd specialised exception, GRUB only contains code to @emph{read} from filesystems and tries to avoid containing any code to @emph{write} to filesystems; this lets us confidently assure users that GRUB cannot be responsible for filesystem corruption. PCI and USB bus handling is in @file{bus/}. Video handling code is in @file{video/}. The graphical menu system uses this heavily, but is in a separate directory, @file{gfxmenu/}. Most commands are implemented by files in @file{commands/}, with the following exceptions: @itemize @item A few core commands live in @file{kern/corecmd.c}. @item Commands related to normal mode live under @file{normal/}. @item Commands that load and boot kernels live under @file{loader/}. @item The @samp{loopback} command is really a disk device, and so lives in @file{disk/loopback.c}. @item The @samp{gettext} command lives under @file{gettext/}. @item The @samp{loadfont} and @samp{lsfonts} commands live under @file{font/}. @item The @samp{serial}, @samp{terminfo}, and @samp{background_image} commands live under @file{term/}. @item The @samp{efiemu_*} commands live under @file{efiemu/}. @end itemize There are a few other special-purpose exceptions; grep for them if they matter to you. @node Copying This Manual @appendix Copying This Manual @menu * GNU Free Documentation License:: License for copying this manual. @end menu @include fdl.texi @node Index @unnumbered Index @c Currently, we use only the Concept Index. @printindex cp @bye Some notes: This is an attempt to make a manual for GRUB 2. The contents are copied from the GRUB manual in GRUB Legacy, so they are not always appropriate yet for GRUB 2.