Commit graph

296 commits

Author SHA1 Message Date
robertmh
651c29b79e 2008-11-07 Robert Millan <rmh@aybabtu.com>
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
            `<grub/i386/pc/console.h>'.

            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-07 19:11:39 +00:00
robertmh
96e5d876a4 2008-11-04 Robert Millan <rmh@aybabtu.com>
* util/grub.d/10_freebsd.in: New file.  Generate grub configuration
        for FreeBSD.
        * conf/common.rmk (grub-mkconfig_SCRIPTS): Add 10_freebsd.
2008-11-04 15:20:35 +00:00
robertmh
7ab28c2157 2008-10-29 Robert Millan <rmh@aybabtu.com>
* util/i386/pc/grub-install.in: Handle empty string as output from
        make_system_path_relative_to_its_root().
2008-10-29 19:14:12 +00:00
fzielcke
c9618ab2fa 2008-10-03 Felix Zielcke <fzielcke@z-51.de>
* util/i386/pc: Source grub-mkconfig_lib instead of update-grub_lib.
2008-10-03 18:05:21 +00:00
fzielcke
bf981c620b 2008-10-03 Felix Zielcke <fzielcke@z-51.de>
* util/update-grub_lib.in: Mention filename in warning message.
2008-10-03 07:22:45 +00:00
fzielcke
18ade780ed 2008-09-29 Felix Zielcke <fzielcke@z-51.de>
* 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-mkconfigig_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-29 14:57:05 +00:00
robertmh
add6f17a17 2008-09-25 Robert Millan <rmh@aybabtu.com>
* util/grub-mkdevicemap.c (make_device_map): Actually replace all
        instances of grub_util_get_disk_name() (see previous commit).
2008-09-25 14:40:59 +00:00
robertmh
0e981d36bb Forgot to remove files / run autogen.sh 2008-09-25 14:17:43 +00:00
robertmh
d2a367b86f 2008-09-25 Robert Millan <rmh@aybabtu.com>
* 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-25 14:15:24 +00:00
fzielcke
7fd75377be 2008-09-09 Felix Zielcke <fzielcke@z-51.de>
* util/hostdisk.c: Change #include <grub/util/biosdisk.h> to
        #include <grub/util/hostdisk.h>.
2008-09-09 07:28:17 +00:00
robertmh
40da438f10 2008-09-08 Robert Millan <rmh@aybabtu.com>
* 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 14:00:29 +00:00
robertmh
ddbf5556a7 2008-09-08 Robert Millan <rmh@aybabtu.com>
* 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-08 13:52:30 +00:00
fzielcke
4ee5592137 2008-09-04 Felix Zielcke <fzielcke@z-51.de>
* util/getroot.c: Include <config.h>.
        (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 19:54:59 +00:00
robertmh
64d2d53c6b 2008-08-31 Colin D Bennett <colin@gibibit.com>
* util/i386/pc/grub-mkrescue.in: Support multiple overlay directories.
2008-08-31 16:28:32 +00:00
proski
7c5d8d950c 2008-08-30 Pavel Roskin <proski@gnu.org>
* util/genmoddep.c: Remove for real this time.
	* DISTLIST: Remove util/genmoddep.c.
2008-08-31 02:19:17 +00:00
bean
6e5a42fe9a 2008-08-29 Bean <bean123ch@gmail.com>
* 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 <config.h> and <grub/types.h>,
	declear asprintf if HAVE_ASPRINTF is not set, declear 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/util/misc.h>.
	(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 <windows.h> and <winioctl.h> 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-29 19:55:23 +00:00
robertmh
1c282483bf 2008-08-28 Robert Millan <rmh@aybabtu.com>
* util/biosdisk.c (find_grub_drive): Declare missing `i' variable.
2008-08-28 19:08:21 +00:00
robertmh
678e849cd3 2008-08-28 Robert Millan <rmh@aybabtu.com>
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-28 14:36:18 +00:00
robertmh
c07ae501cb 2008-08-26 Robert Millan <rmh@aybabtu.com>
* util/biosdisk.c (grub_util_biosdisk_open, open_device)
        (grub_util_biosdisk_get_grub_dev): Make error messages a bit more
        descriptive.
2008-08-26 19:09:07 +00:00
bean
5ed20adcb9 2008-08-23 Bean <bean123ch@gmail.com>
* 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 <grub/raid.h> and <grub/lib/crc.h>.
	(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 subsequence options,
	add handling for the new options, support multiple disks.

	* util/grub-probe.c (probe): Add mdraid to abstraction_name.
2008-08-23 14:51:19 +00:00
robertmh
8415f2617c 2008-08-23 Robert Millan <rmh@aybabtu.com>
* 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-23 12:19:43 +00:00
fzielcke
d5a7dc5b74 2008-08-22 Felix Zielcke <fzielcke@z-51.de>
* 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-22 12:58:46 +00:00
robertmh
eba0ce9f97 2008-08-14 Robert Millan <rmh@aybabtu.com>
* 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 `<grub/cpu/kernel.h>'.
        * kern/i386/coreboot/init.c: Likewise.

        * kern/i386/ieee1275/startup.S: Replace `<grub/machine/kernel.h>'
        with `<grub/cpu/kernel.h>'.
        (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 `<grub/cpu/kernel.h>'.
        (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 18:59:33 +00:00
fzielcke
b86408f869 2008-08-14 Felix Zielcke <fzielcke@z-51.de>
* 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-14 18:46:47 +00:00
robertmh
042bd419da 2008-08-08 Robert Millan <rmh@aybabtu.com>
* kern/disk.c: Replace `<grub/machine/time.h>' with `<grub/time.h>'.
        (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 `<grub/machine/time.h>' with `<grub/time.h>'.
        (run_menu): Migrate code from to using grub_get_time_ms().

        * util/misc.c (grub_get_time_ms): New function.
2008-08-07 23:48:13 +00:00
chrfranke
1cbb58ac62 2008-08-06 Christian Franke <franke@computer.org>
* conf/common.rmk: Build and install `10_windows'.
	* util/grub.d/10_windows.in: New script.
2008-08-06 18:45:51 +00:00
bean
6977d49f98 2008-08-05 Bean <bean123ch@gmail.com>
* 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 14:20:00 +00:00
robertmh
52768e37c2 2008-08-03 Robert Millan <rmh@aybabtu.com>
* 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 16:38:40 +00:00
robertmh
2a5cd121da 2008-08-02 Robert Millan <rmh@aybabtu.com>
* util/i386/pc/grub-install.in: Remove trailing slash from prefix.
2008-08-02 20:30:19 +00:00
robertmh
3bd0a12aca 2008-08-02 Robert Millan <rmh@aybabtu.com>
* 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/mm.h>'.
        (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 12:17:44 +00:00
robertmh
cdfb3d2273 2008-08-01 Robert Millan <rmh@aybabtu.com>
* 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 12:56:56 +00:00
robertmh
59198b722c 2008-07-30 Robert Millan <rmh@aybabtu.com>
* 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 10:44:38 +00:00
robertmh
ae88bca301 2008-07-30 Robert Millan <rmh@aybabtu.com>
* 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 `<grub/machine/kernel.h>'.
        (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 10:42:11 +00:00
robertmh
14f41dd1ed 2008-07-30 Robert Millan <rmh@aybabtu.com>
* util/grub.d/10_hurd.in: Source /grub/update-grub_lib.
2008-07-30 00:21:35 +00:00
chrfranke
2921d33798 2008-07-29 Christian Franke <franke@computer.org>
* util/update-grub_lib.in (make_system_path_relative_to_its_root):
	Add conversion of emulated mount points on Cygwin.
2008-07-29 16:47:31 +00:00
chrfranke
b609876d15 2008-07-29 Christian Franke <franke@computer.org>
* 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 15:38:05 +00:00
bean
a85cd5a0b5 2008-07-27 Bean <bean123ch@gmail.com>
* 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 13:51:30 +00:00
proski
cc349fb3dd 2008-07-27 Pavel Roskin <proski@gnu.org>
* util/getroot.c (find_root_device): Rephrase a comment to avoid
	spurious warnings about a comment within a comment.
2008-07-27 05:57:10 +00:00
robertmh
9051607e1e 2008-07-25 Robert Millan <rmh@aybabtu.com>
* 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-25 19:05:06 +00:00
chrfranke
3a0fa256ac 2008-07-24 Christian Franke <franke@computer.org>
* 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 19:02:47 +00:00
bean
2a8a80e4f4 2008-07-24 Bean <bean123ch@gmail.com>
* 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-24 14:56:30 +00:00
robertmh
12ccdb75a9 2008-07-23 Robert Millan <rmh@aybabtu.com>
* 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-22 22:23:45 +00:00
bean
2001169405 2008-07-17 Bean <bean123ch@gmail.com>
* conf/i386/efi.rmk (pkglib_MODULES): add pci.mod and lspci.mod.
	(appleldr_mod_SOURCE): New variavle.
	(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-17 09:50:26 +00:00
proski
59652a208f 2008-07-16 Pavel Roskin <proski@gnu.org>
* 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-16 06:55:42 +00:00
proski
fe9870876d Fix typos in ChangeLog and comments 2008-07-13 18:13:36 +00:00
bean
aa24b516a2 2008-07-13 Bean <bean123ch@gmail.com>
* 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 <config.h>.

	* include/grub/i386/pc/kernel.h (GRUB_KERNEL_MACHINE_RAW_SIZE): Change
	its value accordding 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 01:55:15 +00:00
robertmh
9a745147b8 2008-07-12 Robert Millan <rmh@aybabtu.com>
* util/i386/pc/grub-mkrescue.in: s/grub-install/grub-mkrescue/g.
2008-07-12 15:40:50 +00:00
robertmh
d49a4cf6a7 2008-07-11 Robert Millan <rmh@aybabtu.com>
* 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 20:09:14 +00:00
proski
fdecb8fdbb 2008-07-04 Pavel Roskin <proski@gnu.org>
* 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 01:53:52 +00:00
robertmh
8516d2a8e1 2008-07-04 Robert Millan <rmh@aybabtu.com>
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-existant drives).

        Some callers relied on previous buggy behaviour, since they would
        rise 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 22:56:43 +00:00