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'.
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.
* 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
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.
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'
* 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.
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.
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.
* 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.
* 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.
* util/grub-dumpdevtree: Moved from here ...
* util/i386/efi/grub-dumpdevtree: ... to here.
(hexify): New function. Converts a string to its hex version.
Generate hex versions of "efi" and "device-properties" by calling
hexify() on the ASCII strings rather than by hardcoding numbers.
* util/grub-mkconfig_lib.in (version_test_numeric): Don't use
the "g" modifier in sed when the intention is to strip something
once. This fixes comparison of kernels with multiple dashes.
* util/grub-mkconfig_lib.in (font_path): Move the functionality
of it to ...
* util/grub-mkconfig.in: ... here. Prefer unicode.pf2 and
unifont.pf2 over ascii.pf2. Export LANG=C in case ascii.pf2 gets used.
2009-08-07 Robert Millan <rmh.grub@aybabtu.com>
* util/grub.d/10_linux.in (test_numeric): Moved from here ...
* util/grub-mkconfig_lib.in (version_test_numeric): ... to here.
Update all users.
* util/grub.d/10_linux.in (test_gt): Strip any basename prefix,
not just "vmlinu[zx]".
Moved from here ...
* util/grub-mkconfig_lib.in (version_test_gt): ... to here. Update
all users.
* util/grub.d/10_linux.in (find_latest): Moved from here ...
* util/grub-mkconfig_lib.in (version_find_latest): ... to here. Update
all users.
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.
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'.
* 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.
* disk/lvm.c (grub_lvm_scan_device): Ignore extra copy of metadata.
Don't change pv->disk if it's already set.
* disk/raid.c (grub_raid_scan_device): Merge this function into ...
(grub_raid_register): ... here.
(grub_raid_rescan): Removed.
* include/grub/raid.h (grub_raid_rescan): Removed.
* util/grub-fstest.c: Remove include file <grub/raid.h>.
(fstest): Replace grub_raid_rescan with module fini function followed
by init function.
* util/grub-probe.c: Add include file <grub/raid.h>.
(probe_raid_level): New function.
(probe): Detect abstraction by walking the disk device, support two
level of abstraction (LVM on RAID) when detecting partition map.
* loader/i386/linux.c (grub_cmd_linux): Use ',' rather than ';' as
separator for the suggested gfxpayload string (';' collides with the
parser and needs escaping).
* loader/i386/multiboot_helper.S (grub_multiboot_backward_relocator):
Clear direction flag before jumping to OS.
(grub_multiboot2_real_boot): Likewise.
* 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 endianess.
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.
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
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.
* 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 <yves.grub-devel@zetam.org>
* 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-10 Robert Millan <rmh.grub@aybabtu.com>
* kern/ieee1275/openfw.c (grub_children_iterate)
(grub_devalias_iterate): Fix size evaluation for property or path
strings, which was broken since r2132.
* commands/search.c (search_file): Merge into ...
(search_fs): ... this. Accept search type as argument.
(grub_cmd_search): Pass search type to search_fs().
* 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.
* 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'.
* 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 appropiately.