[PATCH] Building on Ubuntu 7.10 x86-64
Hi All, I needed to do following modification in order to build grub2 on my 64bit laptop. In case there is no complaints I will commit it to CVS. Additionally I needed to install gcc-multilib package (and normal packages like ruby, lzo...). And after that just doing following made runnable binaries (at least in qemu): ./autogen.sh mkdir build-x86_64 cd build-x86_64 ../configure --with-platform=pc --target=x86_64 make Thanks, Vesa Jääskeläinen Index: ChangeLog === RCS file: /sources/grub/grub2/ChangeLog,v retrieving revision 1.438 diff -u -r1.438 ChangeLog --- ChangeLog 6 Nov 2007 21:23:59 - 1.438 +++ ChangeLog 10 Nov 2007 11:22:13 - @@ -1,3 +1,11 @@ +2007-11-10 Vesa Jaaskelainen [EMAIL PROTECTED] + + * conf/i386-pc.rmk (boot_img_LDFLAGS): Use COMMON_FLAGS for target + flags. + (pxeboot_img_LDFLAGS): Likewise. + (diskboot_img_LDFLAGS): Likewise. + (kernel_img_LDFLAGS): Likewise. + 2007-11-06 Robert Millan [EMAIL PROTECTED] * term/i386/pc/serial.c (serial_hw_put): Switch order of arguments Index: conf/i386-pc.rmk === RCS file: /sources/grub/grub2/conf/i386-pc.rmk,v retrieving revision 1.91 diff -u -r1.91 i386-pc.rmk --- conf/i386-pc.rmk31 Oct 2007 22:29:20 - 1.91 +++ conf/i386-pc.rmk10 Nov 2007 11:22:19 - @@ -10,17 +10,17 @@ # For boot.img. boot_img_SOURCES = boot/i386/pc/boot.S boot_img_ASFLAGS = $(COMMON_ASFLAGS) -boot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 +boot_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,7C00 # For pxeboot.img pxeboot_img_SOURCES = boot/i386/pc/pxeboot.S pxeboot_img_ASFLAGS = $(COMMON_ASFLAGS) -pxeboot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,7C00 +pxeboot_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,7C00 # For diskboot.img. diskboot_img_SOURCES = boot/i386/pc/diskboot.S diskboot_img_ASFLAGS = $(COMMON_ASFLAGS) -diskboot_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8000 +diskboot_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,8000 # For kernel.img. kernel_img_SOURCES = kern/i386/pc/startup.S kern/main.c kern/device.c \ @@ -37,7 +37,7 @@ machine/memory.h machine/loader.h machine/vga.h machine/vbe.h kernel_img_CFLAGS = $(COMMON_CFLAGS) kernel_img_ASFLAGS = $(COMMON_ASFLAGS) -kernel_img_LDFLAGS = -nostdlib -Wl,-N,-Ttext,8200 $(COMMON_CFLAGS) +kernel_img_LDFLAGS = $(COMMON_LDFLAGS) -Wl,-N,-Ttext,8200 $(COMMON_CFLAGS) MOSTLYCLEANFILES += symlist.c kernel_syms.lst DEFSYMFILES += kernel_syms.lst ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Avoid crash on empty menu
Marco Gerards wrote: + e = get_entry (menu, boot_entry); + if (! e) + continue; /* menu is empty */ Please use proper interpunctions for comments. Fixed. Christian 2007-11-10 Christian Franke [EMAIL PROTECTED] * normal/menu.c (run_menu): Check for empty menu to avoid crash. (grub_menu_run): Likewise. --- grub2.orig/normal/menu.c 2007-08-20 16:35:20.0 +0200 +++ grub2/normal/menu.c 2007-11-10 12:59:54.953125000 +0100 @@ -412,7 +412,11 @@ run_menu (grub_menu_t menu, int nested) goto refresh; case 'e': - grub_menu_entry_run (get_entry (menu, first + offset)); + { + grub_menu_entry_t e = get_entry (menu, first + offset); + if (e) + grub_menu_entry_run (e); + } goto refresh; default: @@ -451,10 +455,13 @@ grub_menu_run (grub_menu_t menu, int nes if (boot_entry 0) break; + e = get_entry (menu, boot_entry); + if (! e) + continue; /* Menu is empty. */ + grub_cls (); grub_setcursor (1); - e = get_entry (menu, boot_entry); grub_printf ( Booting \'%s\'\n\n, e-title); run_menu_entry (e); ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Fix grub-emu curses KEY_* mapping
Marco Gerards wrote: Christian Franke [EMAIL PROTECTED] writes: Curses function keys do not work in grub-emu, this patch fixes this in grub_ncurses_getkey(). Ha! I once noticed this and forgot to document this bug :( Another approach would be to remove the scancode translation in grub_console_getkey(), and check for GRUB_CONSOLE_KEY_* in grub_cmdline_get() instead. The GRUB_CONSOLE_KEY_* definitions are already platform specific. Yes, this is really weird! All archs define these macros and expect for i386-pc none of them are used. I actually wonder if any of those work :-) Even on i386-pc, GRUB_CONSOLE_KEY_* are only used once in the translation table of grub_console_getkey(). The defines are not part of the console interface definition. I would suggest to remove the defines from all include/grub/PLATFORM/console.h. The GRUB_CONSOLE_KEY_* in i386/pc/startup.S can be replaced with the constants itself. ... + /* XXX: return GRUB_CONSOLE_KEY_* does not work here, + grub_cmdline_get() does not check for these constants. + At least on i386-pc, GRUB_CONSOLE_KEY_* are in fact keyboard + scancodes which are converted into control chars by + grub_console_getkey(). */ + I do not think this comment is needed. You explained it in the email. I do not like comments that explain why we aren't doing some things, it is usually better to explain why we do something if it is a hack or not obvious. In this case I prefer no comment. switch (c) { case KEY_LEFT: - c = GRUB_CONSOLE_KEY_LEFT; + c = 2; /*GRUB_CONSOLE_KEY_LEFT*/ break; Please just remove the comment. As this appears to be wrong anyways :-) Done. Christian 2007-11-10 Christian Franke [EMAIL PROTECTED] * 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. --- grub2.orig/util/console.c 2007-07-22 01:32:31.0 +0200 +++ grub2/util/console.c 2007-11-10 13:20:02.171875000 +0100 @@ -164,50 +164,50 @@ grub_ncurses_getkey (void) switch (c) { case KEY_LEFT: - c = GRUB_CONSOLE_KEY_LEFT; + c = 2; break; case KEY_RIGHT: - c = GRUB_CONSOLE_KEY_RIGHT; + c = 6; break; case KEY_UP: - c = GRUB_CONSOLE_KEY_UP; + c = 16; break; case KEY_DOWN: - c = GRUB_CONSOLE_KEY_DOWN; + c = 14; break; case KEY_IC: - c = GRUB_CONSOLE_KEY_IC; + c = 24; break; case KEY_DC: - c = GRUB_CONSOLE_KEY_DC; + c = 4; break; case KEY_BACKSPACE: /* XXX: For some reason ncurses on xterm does not return KEY_BACKSPACE. */ case 127: - c = GRUB_CONSOLE_KEY_BACKSPACE; + c = 8; break; case KEY_HOME: - c = GRUB_CONSOLE_KEY_HOME; + c = 1; break; case KEY_END: - c = GRUB_CONSOLE_KEY_END; + c = 5; break; case KEY_NPAGE: - c = GRUB_CONSOLE_KEY_NPAGE; + c = 3; break; case KEY_PPAGE: - c = GRUB_CONSOLE_KEY_PPAGE; + c = 7; break; } ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Add host open devicename check
Marco Gerards wrote: .. 2007-10-25 Christian Franke [EMAIL PROTECTED] * disk/host.c (grub_host_open): Add check for host. This fixes the problem that grub-emu does not find partitions. Please mention the attribute change. ... static grub_err_t -grub_host_open (const char *name __attribute((unused)), grub_disk_t disk) +grub_host_open (const char *name, grub_disk_t disk) { + if (grub_strcmp(name, host)) + return grub_error (GRUB_ERR_UNKNOWN_DEVICE, not a host disk); Please add a space after the function name and before the (. Done Christian 2007-11-10 Christian Franke [EMAIL PROTECTED] * 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. --- grub2.orig/disk/host.c 2007-08-02 19:24:05.0 +0200 +++ grub2/disk/host.c 2007-11-10 14:18:11.046875000 +0100 @@ -34,8 +34,11 @@ grub_host_iterate (int (*hook) (const ch } static grub_err_t -grub_host_open (const char *name __attribute((unused)), grub_disk_t disk) +grub_host_open (const char *name, grub_disk_t disk) { + if (grub_strcmp (name, host)) + return grub_error (GRUB_ERR_UNKNOWN_DEVICE, not a host disk); + disk-total_sectors = 0; disk-id = (int) host; ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Add host open devicename check
Robert Millan wrote: On Fri, Nov 09, 2007 at 10:17:19PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: On Thu, Oct 25, 2007 at 09:51:38PM +0200, Christian Franke wrote: static grub_err_t -grub_host_open (const char *name __attribute((unused)), grub_disk_t disk) +grub_host_open (const char *name, grub_disk_t disk) { + if (grub_strcmp(name, host)) + return grub_error (GRUB_ERR_UNKNOWN_DEVICE, not a host disk); + I would test for (disk-id == GRUB_DISK_DEVICE_HOST_ID) instead. Faster, and also cleaner/simpler IMHO. It's not possible unfortunately :-(. This information is about to be filled in in this same function. Still seems like an ugly hack to me. Oh well :-/ All disk/* modules' open routines check whether the name (hd%d, ata%d, ...) is valid and return UNKNOWN_DEVICE on error. The missing name check in host.c is a bug which can IMO only be fixed this way. Christian ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
[patch] Fix for vga terminal
Hi All, Here is patch for fixing vga terminal. At least it worked fine on qemu. Now it uses only font system to get fonts so you need to load font module and use fonts. See gfxterm section on the wiki on how to do that. I had to edit patch by hand as 64bit patch is still pending and I need that to compile my codes. But it should still apply nicely to current CVS. Thanks, Vesa Jääskeläinen Index: ChangeLog === RCS file: /sources/grub/grub2/ChangeLog,v retrieving revision 1.438 diff -u -r1.438 ChangeLog --- ChangeLog 6 Nov 2007 21:23:59 - 1.438 +++ ChangeLog 10 Nov 2007 13:57:07 - @@ -1,3 +1,23 @@ +2007-11-10 Vesa Jaaskelainen [EMAIL PROTECTED] + + * 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-06 Robert Millan [EMAIL PROTECTED] * term/i386/pc/serial.c (serial_hw_put): Switch order of arguments Index: conf/i386-pc.rmk === RCS file: /sources/grub/grub2/conf/i386-pc.rmk,v retrieving revision 1.91 diff -u -r1.91 i386-pc.rmk --- conf/i386-pc.rmk31 Oct 2007 22:29:20 - 1.91 +++ conf/i386-pc.rmk10 Nov 2007 13:57:13 - @@ -129,7 +129,8 @@ pkgdata_MODULES = biosdisk.mod _chain.mod _linux.mod linux.mod normal.mod \ _multiboot.mod chain.mod multiboot.mod reboot.mod halt.mod \ vbe.mod vbetest.mod vbeinfo.mod video.mod gfxterm.mod \ - videotest.mod play.mod bitmap.mod tga.mod cpuid.mod serial.mod ata.mod + videotest.mod play.mod bitmap.mod tga.mod cpuid.mod serial.mod ata.mod \ + vga.mod # For biosdisk.mod. biosdisk_mod_SOURCES = disk/i386/pc/biosdisk.c @@ -251,4 +252,9 @@ ata_mod_CFLAGS = $(COMMON_CFLAGS) ata_mod_LDFLAGS = $(COMMON_LDFLAGS) +# For vga.mod. +vga_mod_SOURCES = term/i386/pc/vga.c +vga_mod_CFLAGS = $(COMMON_CFLAGS) +vga_mod_LDFLAGS = $(COMMON_LDFLAGS) + include $(srcdir)/conf/common.mk Index: term/i386/pc/vga.c === RCS file: /sources/grub/grub2/term/i386/pc/vga.c,v retrieving revision 1.12 diff -u -r1.12 vga.c --- term/i386/pc/vga.c 3 Oct 2007 20:13:21 - 1.12 +++ term/i386/pc/vga.c 10 Nov 2007 13:57:15 - @@ -18,6 +18,7 @@ #include grub/machine/vga.h #include grub/machine/console.h +#include grub/cpu/io.h #include grub/term.h #include grub/types.h #include grub/dl.h @@ -62,7 +63,6 @@ static int cursor_state; static unsigned char fg_color, bg_color; static struct colored_char text_buf[TEXT_WIDTH * TEXT_HEIGHT]; -static unsigned char *vga_font; static unsigned char saved_map_mask; static int page = 0; @@ -97,11 +97,11 @@ unsigned char old_data; old_addr = grub_inb (SEQUENCER_ADDR_PORT); - grub_outb (SEQUENCER_ADDR_PORT, MAP_MASK_REGISTER); + grub_outb (MAP_MASK_REGISTER, SEQUENCER_ADDR_PORT); old_data = grub_inb (SEQUENCER_DATA_PORT); - grub_outb (SEQUENCER_ADDR_PORT, old_addr); + grub_outb (old_addr, SEQUENCER_ADDR_PORT); return old_data; } @@ -113,11 +113,11 @@ unsigned char old_addr; old_addr = grub_inb (SEQUENCER_ADDR_PORT); - grub_outb (SEQUENCER_ADDR_PORT, MAP_MASK_REGISTER); + grub_outb (MAP_MASK_REGISTER, SEQUENCER_ADDR_PORT); - grub_outb (SEQUENCER_DATA_PORT, mask); + grub_outb (mask, SEQUENCER_DATA_PORT); - grub_outb (SEQUENCER_ADDR_PORT, old_addr); + grub_outb (old_addr, SEQUENCER_ADDR_PORT); } /* Set Read Map Register. */ @@ -128,10 +128,10 @@ old_addr = grub_inb (GRAPHICS_ADDR_PORT); - grub_outb (GRAPHICS_ADDR_PORT, READ_MAP_REGISTER); - grub_outb (GRAPHICS_DATA_PORT, map); + grub_outb (READ_MAP_REGISTER, GRAPHICS_ADDR_PORT); + grub_outb (map, GRAPHICS_DATA_PORT); - grub_outb (GRAPHICS_ADDR_PORT, old_addr); + grub_outb (old_addr, GRAPHICS_ADDR_PORT); } /* Set start address. */ @@ -142,19 +142,18 @@ old_addr = grub_inb (CRTC_ADDR_PORT); - grub_outb (CRTC_ADDR_PORT, START_ADDR_LOW_REGISTER); - grub_outb (CRTC_DATA_PORT, start 0xFF); + grub_outb (START_ADDR_LOW_REGISTER, CRTC_ADDR_PORT); + grub_outb (start 0xFF, CRTC_DATA_PORT); - grub_outb (CRTC_ADDR_PORT, START_ADDR_HIGH_REGISTER); - grub_outb (CRTC_DATA_PORT, start 8); + grub_outb (START_ADDR_HIGH_REGISTER, CRTC_ADDR_PORT); + grub_outb (start 8, CRTC_DATA_PORT); - grub_outb (CRTC_ADDR_PORT, old_addr);
Re: [PATCH] fix serial console on LinuxBIOS
Robert Millan [EMAIL PROTECTED] writes: On Fri, Nov 09, 2007 at 04:30:44PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: This patch fixes serial console on LinuxBIOS. I'd appreciate comments (specially on the grub/machine/machine.h addition). -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) No header ;) Uhm what header? That's what I said ;-) What I meant was something like: 2007-10-31 Robert Millan [EMAIL PROTECTED] * 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 grub/machine/machine.h. (serial_hw_io_addr): New variable. (serial_hw_get_port): Obtain port address from `serial_hw_io_addr' instead of `(unsigned short *) 0x400'. This seems fine to me. What is your intended use for machine.h? More than just this? Situations very similar to this one, in that you just need to change a few unportable lines while the overall structure of the file remains portable. What I meant was: what should and shouldn't be added to this .h? Perhaps we can even use autoconf to define this in config.h? That would be better I think. autoconf already setups the cpu / machine symlinks. Why ask it to tell the same info twice? Isn't that what you are doing now? But I have no objections to this fix, please commit it :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: PC partitions and big disks
Robert Millan [EMAIL PROTECTED] writes: On Fri, Nov 09, 2007 at 04:33:47PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: This should make the error much clearer when partition exceeds 2 TiB on a PC partition map (currently, all user gets is a out of partition error which is hard to figure out if you're unaware of the 2 TiB limit). Comments? See below :-) -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) * include/grub/types.h (ULONG_MAX32): New macro. (ULONG_MAX64): Likewise. (ULONG_MAX): Use ULONG_MAX32 / ULONG_MAX64 to define it. Please call use a GRUB_* prefix. * util/misc.c (grub_util_warn): New function. * util/biosdisk.c (grub_util_biosdisk_get_grub_dev): Issue a warning when `disk-total_sectors' exceeds ULONG_MAX32 on `pc' partmap. Why a warning and not an error? Or perhaps another part of GRUB should return an error? Uhm. The person who reported this later told me that the partmap was in fact not `pc' but `gpt'. The problem this patch intended to address may still apply, but without reproducing it first, I'd prefer not to run the risk of fixing something that wasn't broken. Ok, fine for me. Please don't forget to add the GRUB_ prefix before committing :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: grub2 efi patches
Alexandre Boeglin [EMAIL PROTECTED] writes: On Sun, 4 Nov 2007 00:06:31 +0100, Alexandre Boeglin [EMAIL PROTECTED] wrote: grub2_efi_chainloader_options.patch adds support for efi chainload options, it is not really beautiful (for instance, the ascii to utf16 conversion), but it works for the MacOSX loader, Sorry, there was a mistake in the previous one ... Ok :-) By the way, it's using boot_services-allocate_pool instead of grub_malloc. I don't know if it's okay, but when I tried using grub_malloc, I was getting free magic is broken 0x0 errors. Please use grub_malloc. If you get this error, something is most likely writing to unallocated memory or something like that... Index: include/grub/efi/chainloader.h === RCS file: /sources/grub/grub2/include/grub/efi/chainloader.h,v retrieving revision 1.2 diff -u -r1.2 chainloader.h --- include/grub/efi/chainloader.h21 Jul 2007 23:32:22 - 1.2 +++ include/grub/efi/chainloader.h4 Nov 2007 00:00:40 - @@ -19,6 +19,6 @@ #ifndef GRUB_EFI_CHAINLOADER_HEADER #define GRUB_EFI_CHAINLOADER_HEADER 1 -void grub_chainloader_cmd (const char *filename); +void grub_chainloader_cmd (int argc, char *argv[]); #endif /* ! GRUB_EFI_CHAINLOADER_HEADER */ Index: loader/efi/chainloader.c === RCS file: /sources/grub/grub2/loader/efi/chainloader.c,v retrieving revision 1.2 diff -u -r1.2 chainloader.c --- loader/efi/chainloader.c 21 Jul 2007 23:32:28 - 1.2 +++ loader/efi/chainloader.c 4 Nov 2007 00:01:05 - @@ -17,8 +17,6 @@ * along with GRUB. If not, see http://www.gnu.org/licenses/. */ -/* TODO: support load options. */ - #include grub/loader.h #include grub/file.h #include grub/err.h @@ -175,7 +173,7 @@ } void -grub_chainloader_cmd (const char *filename) +grub_chainloader_cmd (int argc, char *argv[]) { grub_file_t file = 0; grub_ssize_t size; @@ -185,6 +183,11 @@ grub_device_t dev = 0; grub_efi_device_path_t *dp = 0; grub_efi_loaded_image_t *loaded_image; + char *filename = argv[0]; + grub_efi_char16_t *options = NULL, *p; + int i, j, options_len = 0; + + b = grub_efi_system_table-boot_services; grub_dl_ref (my_mod); @@ -192,6 +195,30 @@ address = 0; image_handle = 0; file_path = 0; + + if (argc == 0) + { +grub_error (GRUB_ERR_BAD_ARGUMENT, no file specified); +goto fail; + } + + /* copy options */ /* Copy options. */ + if (argc 1) + { +for (i = 1; i argc; i++) + options_len += (grub_strlen (argv[i]) + 1) * sizeof (*options); + +status = b-allocate_pool (GRUB_EFI_LOADER_DATA, options_len + sizeof (*options), options); +if (status != GRUB_EFI_SUCCESS) + goto fail; Please use grub_malloc. There are several ways to debug mm.c... +p = options; + +for (i = 1; i argc; i++){ + *p++ = ' '; + for (j = 0; j grub_strlen (argv[i]) + 1; j++) +p[j] = argv[i][j]; +} + } b = grub_efi_system_table-boot_services; @@ -267,6 +294,10 @@ goto fail; } loaded_image-device_handle = dev_handle; + + if (options) +loaded_image-load_options = options; +loaded_image-load_options_size = options_len + 1; grub_file_close (file); grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0); @@ -292,10 +323,7 @@ static void grub_rescue_cmd_chainloader (int argc, char *argv[]) { - if (argc == 0) -grub_error (GRUB_ERR_BAD_ARGUMENT, no file specified); - else -grub_chainloader_cmd (argv[0]); + grub_chainloader_cmd (argc, argv); } static const char loader_name[] = chainloader; Index: loader/efi/chainloader_normal.c === RCS file: /sources/grub/grub2/loader/efi/chainloader_normal.c,v retrieving revision 1.2 diff -u -r1.2 chainloader_normal.c --- loader/efi/chainloader_normal.c 21 Jul 2007 23:32:28 - 1.2 +++ loader/efi/chainloader_normal.c 4 Nov 2007 00:01:05 - @@ -26,10 +26,7 @@ chainloader_command (struct grub_arg_list *state __attribute__ ((unused)), int argc, char **args) { - if (argc == 0) -grub_error (GRUB_ERR_BAD_ARGUMENT, no file specified); - else -grub_chainloader_cmd (args[0]); + grub_chainloader_cmd (argc, args); return grub_errno; } ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: grub2 efi patches
Alexandre Boeglin [EMAIL PROTECTED] writes: On Sun, 4 Nov 2007 01:21:24 +0100, Alexandre Boeglin [EMAIL PROTECTED] wrote: Le Sun, Nov 04, 2007 at 01:04:24AM +0100, Alexandre Boeglin a écrit : Sorry, there was a mistake in the previous one ... Oops, and line 91 of this one should be Hi, here is a more correct version of this patch: it also frees the memory allocated to the options string when appropriate. I should've started with this patch ;-) I can better do a full review again for clarity :-) Index: include/grub/efi/chainloader.h === RCS file: /sources/grub/grub2/include/grub/efi/chainloader.h,v retrieving revision 1.2 diff -u -r1.2 chainloader.h --- include/grub/efi/chainloader.h21 Jul 2007 23:32:22 - 1.2 +++ include/grub/efi/chainloader.h5 Nov 2007 22:58:51 - @@ -19,6 +19,6 @@ #ifndef GRUB_EFI_CHAINLOADER_HEADER #define GRUB_EFI_CHAINLOADER_HEADER 1 -void grub_chainloader_cmd (const char *filename); +void grub_chainloader_cmd (int argc, char *argv[]); #endif /* ! GRUB_EFI_CHAINLOADER_HEADER */ Index: loader/efi/chainloader.c === RCS file: /sources/grub/grub2/loader/efi/chainloader.c,v retrieving revision 1.2 diff -u -r1.2 chainloader.c --- loader/efi/chainloader.c 21 Jul 2007 23:32:28 - 1.2 +++ loader/efi/chainloader.c 5 Nov 2007 22:58:58 - @@ -17,8 +17,6 @@ * along with GRUB. If not, see http://www.gnu.org/licenses/. */ -/* TODO: support load options. */ - #include grub/loader.h #include grub/file.h #include grub/err.h @@ -38,6 +36,8 @@ static grub_efi_physical_address_t address; static grub_efi_uintn_t pages; +static grub_efi_char16_t *options; +static grub_efi_uintn_t options_len; static grub_efi_device_path_t *file_path; static grub_efi_handle_t image_handle; @@ -49,6 +49,8 @@ b = grub_efi_system_table-boot_services; b-unload_image (image_handle); b-free_pages (address, pages); + if (options) +b-free_pool (options); grub_free (file_path); grub_dl_unref (my_mod); @@ -175,7 +177,7 @@ } void -grub_chainloader_cmd (const char *filename) +grub_chainloader_cmd (int argc, char *argv[]) { grub_file_t file = 0; grub_ssize_t size; @@ -185,16 +187,47 @@ grub_device_t dev = 0; grub_efi_device_path_t *dp = 0; grub_efi_loaded_image_t *loaded_image; + char *filename = argv[0]; grub_dl_ref (my_mod); /* Initialize some global variables. */ address = 0; + options = 0; + options_len = 0; image_handle = 0; file_path = 0; b = grub_efi_system_table-boot_services; + if (argc == 0) + { +grub_error (GRUB_ERR_BAD_ARGUMENT, no file specified); +goto fail; + } The indentation is not right. + /* copy options */ /* Copy options. */ + if (argc 1) + { The indentation is not right. +grub_efi_char16_t *p; +grub_efi_int16_t i; +grub_efi_uint16_t j; +for (i = 1; i argc; i++) + options_len += (grub_strlen (argv[i]) + 1) * sizeof (*options); +options_len += sizeof (*options); /* \0 */ + +status = b-allocate_pool (GRUB_EFI_LOADER_DATA, options_len, (void *) options); +if (status != GRUB_EFI_SUCCESS) + goto fail; +p = options; Please use grub_malloc here, I think it should work for what you are doing, right? +for (i = 1; i argc; i++){ + *p++ = ' '; + for (j = 0; j grub_strlen (argv[i]) + 1; j++) +p[j] = (grub_efi_char16_t) argv[i][j]; +} + } + file = grub_file_open (filename); if (! file) goto fail; @@ -268,6 +301,10 @@ } loaded_image-device_handle = dev_handle; + if (options_len) +loaded_image-load_options = options; +loaded_image-load_options_size = options_len; The second loaded_image... line seems to be incorrectly indented. grub_file_close (file); grub_loader_set (grub_chainloader_boot, grub_chainloader_unload, 0); return; @@ -286,16 +323,16 @@ if (address) b-free_pages (address, pages); + if (options) +b-free_pool (options); + grub_dl_unref (my_mod); } static void grub_rescue_cmd_chainloader (int argc, char *argv[]) { - if (argc == 0) -grub_error (GRUB_ERR_BAD_ARGUMENT, no file specified); - else -grub_chainloader_cmd (argv[0]); + grub_chainloader_cmd (argc, argv); } static const char loader_name[] = chainloader; Index: loader/efi/chainloader_normal.c === RCS file: /sources/grub/grub2/loader/efi/chainloader_normal.c,v retrieving revision 1.2 diff -u -r1.2 chainloader_normal.c --- loader/efi/chainloader_normal.c 21 Jul 2007 23:32:28 - 1.2 +++ loader/efi/chainloader_normal.c 5 Nov 2007 22:58:59 - @@ -26,10 +26,7 @@ chainloader_command (struct grub_arg_list
Re: [PATCH] Fix packing issue of machine_mmap_entry
Christian Franke [EMAIL PROTECTED] writes: Marco Gerards wrote: ... Add compile time assert to check packing. Can you remove the compile time assert? Done. We usually check stuff like this using configure. If you can send in a patch for configure.ac, that would be appreciated. Yes, but be patient. The configure approach is quite different: In configure, you can check whether compiler supports attr packed and whether it works as expected. With the good old typedef compile time assert, you can check whether this *specific* structure is properly declared and packed. Right, but if you add a configure.ac option you can see if it works globally. If it doesn't, we have a problem anyways. We shouldn't rely on how it is packed. If the packed attribute doesn't work, GRUB can't be compiled. --- grub2.orig/include/grub/i386/pc/init.h 2007-07-22 01:32:23.0 +0200 +++ grub2/include/grub/i386/pc/init.h 2007-10-13 21:25:24.0 +0200 @@ -40,10 +40,14 @@ grub_uint32_t grub_get_eisa_mmap (void); struct grub_machine_mmap_entry { grub_uint32_t size; - grub_uint64_t addr; + grub_uint64_t addr; /* must be at offset 4, see startup.S */ I do not think this comment is required. It's fixed now :-) Hmm...OK removed. Now there is no clue why this struct has packing requirements. And this also is no longer checked. All structs that rely on gcc not adding packing for alignment, should have the packed attribute. Christian 2007-11-09 Christian Franke [EMAIL PROTECTED] * 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. This looks good :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Fix eisa_mmap evaluation, add memory existence check
Christian Franke [EMAIL PROTECTED] writes: Marco Gerards wrote: ... +static int +addr_is_valid (grub_addr_t addr) +{ + volatile unsigned char * p = (volatile unsigned char *)addr; Why volatile? I have the feeling it is not needed. + unsigned char x, y; + x = *p; + *p = x ^ 0xcf; + y = *p; + *p = x; + return y == (x ^ 0xcf); +} volatile is necessary here to tell the complier that the memory address might not behave like regular memory. Otherwise, the optimizer might legitimately remove memory accesses and then constant propagation detects an unchanged value. gcc actually does a very good job here. Result with volatile removed: I think this is just normal memory, not memory mapped hardware. Or perhaps I am misunderstanding something here. $ gcc -S -O -fomit-frame-pointer init.c cat init.s ... addr_is_valid: movl$1, %eax ret ... aka: static int addr_is_valid (grub_addr_t addr) { return 1; } This is at least a proof that the original function returns the correct result when real memory is present :-) :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Allow build without dirent.d_type, fix ls (host) crash
Christian Franke [EMAIL PROTECTED] writes: Marco Gerards wrote: ... +static int +is_dir(const char *path, const char *name) is_dir ( OK. Too many projects, too many policies, sorry :-) np, don't worry :-) Hopefully you are not annoyed by my comments. A consistent style throughout GRUB is important to me. +{ + int len1 = strlen(path), len2 = strlen(name); Please split this up. Or even better use separate declarations and code. Yes. No. See comment below. + char pathname[len1+1+len2+1+13]; Please add spaces around binary operators. + struct stat st; + strcpy (pathname, path); Please add more blank lines between your code to make it easier to read. :-) OK. ... +strcat (pathname, /); + strcat (pathname, name); + if (stat (pathname, st)) +return 0; + return S_ISDIR(st.st_mode); +} +#endif Why can't you just use S_ISDIR? ?? Nevermind, I wasn't really awake ;) ... @@ -81,6 +108,7 @@ grub_hostfs_read (grub_file_t file, char FILE *f; f = (FILE *) file-data; + fseek (f, file-offset, SEEK_SET); int s= fread (buf, 1, len, f); int s = Code janitor work outside the scope of this patch ... done ;-) LOL! Sorry, I was a bit enthousiastic ;-) Thanks! :) BTW: This line uses declaration statement syntax, therefore this is apparently accepted in GRUB2 codebase :-) I definitely prefer this (first use = declaration = initialization) style, which is state of the art in most (all?) modern languages. This C++ (1986) feature and early GCC (1.*) extension was finally included into C99, so it is portable now. is_dir() rewritten accordingly. It is. The problem is that you had two function calls on one line. I want to avoid that. Christian 2007-11-09 Christian Franke [EMAIL PROTECTED] * 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). Looks fine to me. btw, when do you use (host)? It's intended as a debugging tool. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Add host open devicename check
Christian Franke [EMAIL PROTECTED] writes: Marco Gerards wrote: .. 2007-10-25 Christian Franke [EMAIL PROTECTED] * disk/host.c (grub_host_open): Add check for host. This fixes the problem that grub-emu does not find partitions. Please mention the attribute change. ... static grub_err_t -grub_host_open (const char *name __attribute((unused)), grub_disk_t disk) +grub_host_open (const char *name, grub_disk_t disk) { + if (grub_strcmp(name, host)) + return grub_error (GRUB_ERR_UNKNOWN_DEVICE, not a host disk); Please add a space after the function name and before the (. Done Christian 2007-11-10 Christian Franke [EMAIL PROTECTED] * 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. Looks fine to me. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Add host open devicename check
Robert Millan [EMAIL PROTECTED] writes: On Fri, Nov 09, 2007 at 10:17:19PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: On Thu, Oct 25, 2007 at 09:51:38PM +0200, Christian Franke wrote: static grub_err_t -grub_host_open (const char *name __attribute((unused)), grub_disk_t disk) +grub_host_open (const char *name, grub_disk_t disk) { + if (grub_strcmp(name, host)) + return grub_error (GRUB_ERR_UNKNOWN_DEVICE, not a host disk); + I would test for (disk-id == GRUB_DISK_DEVICE_HOST_ID) instead. Faster, and also cleaner/simpler IMHO. It's not possible unfortunately :-(. This information is about to be filled in in this same function. Still seems like an ugly hack to me. Oh well :-/ It isn't. The driver gets a string that it can use to determine if it has control over this disk or not. `grub_disk_t disk' is there to be filled in if it has, it isn't initialised yet. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Grub 2 functionality
Scott A Tovey [EMAIL PROTECTED] writes: Hi, I have two questions. 1. Will grub2 be taking over the hard drive recognition from the BIOS? It can be done, but it is not preferred. We are working on this. I believe that the Max OS X boots without using the BIOS hard drive IO. This allows the OS to boot on any hardware regardless of whether the BIOS can recognize the entire drive or not. It uses EFI. It's still using firmware, just a different kind of firmware. GRUB 2 is capable of running on EFI. If GRUB had this functionality and provided the hard drive parameters to the OS instead of the BIOS, it would enable many older systems that do not have a flashable BIOS to be upgraded with newer hard drives and utilized as low grade servers or backup storage devices. We should all switch to LinuxBIOS someday. ;-) If you are using GNU/Linux, GRUB2+ATA can be used on a PC BIOS. Besides the benefit to older hardware, it would be good for Linux and other OS' that chose to use GRUB as the boot loader. Not if that older OS uses the BIOS. Because GRUB can access the harddisk and load the OS, but if the OS can't access the hardware it will not work. 2. Is there an installer that would allow me to install GRUB on my system without having to install Linux? You could use a floppy/CDROM. From which OS do you want to install? -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: How do I boot a standalone program in grub (a password checker via serial input) before allowing grub to continue booting?
CurlyCoconutTree [EMAIL PROTECTED] writes: How do I boot a standalone program in grub (1.95) (a password checker via serial input) before allowing grub to continue booting? I'm trying to develop a program that will run, stand alone or with the libraries Grub gives me access to, parse serial data for a password, store the password to the MBR, then if valid return to Grub to boot windows... I'm not looking for a solution, I'm just looking for a place to start! Grub, is pretty poorly documented and I wouldn't be posting this is there was more (or I could find more) info on how to develop for GRUB. I guess I'd be a 'noob'... I hate using that term... we all have to start from some where. Noone is using that term. We also value good documentation and will be very happy if you could work on that. One way of doing this might be writing a new command. See hello/hello.c as an example. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Outline menu
Markus Elfring [EMAIL PROTECTED] writes: Menu commands can have children already so you would get hierarchy information from there. Shortcut key you could just add as extra argument for menu, like --hotkey=1 Will an explanation of the data format be added to the wiki? In example: menu foo { menu bar { menu zot { } } } Can an item be reused at different levels in the hierarchy without repetition of its definition (attribute set)? I want to make something to generate menu entries from a script. Is that what you mean? Though I am not sure how well this outline view is supported by the current parser. Marco, perhaps you could share some insights? How is the state of the GRUB 2 menu browser at the moment? It's not stable yet. Especially the scripting needs to be worked on. I had a look at example mp3 playlist in opml format and it seems to be data description language (like what xml is). What we have in grub script is a scripting language that has commands to construct data (menu). Is a manual available already? No, do you want to work on this? -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: grub-setup: error: Non-sector-aligned data is found in the core file
Robert Millan [EMAIL PROTECTED] writes: On Thu, Nov 08, 2007 at 02:36:28PM +0200, UrJiZ wrote: On 11/7/07, Robert Millan [EMAIL PROTECTED] wrote: snip For building a floppy use grub-mkrescue instead. Used ./grub-mkrescue, but it: a) seems not to create a filesystem on the disk image (how can i put grub.cfg on the disk?) I was thinking we could have some way to embed filesystems in a GRUB image (we might need this for LinuxBIOS port). We could just add files using grub-mkimage. If a file isn't a module, it won't be loaded but accessible. We can use (host) or so for this... -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Use getopt_long() instead of argp_parse() in grub-emu
Christian Franke [EMAIL PROTECTED] writes: Unlike the other GRUB2 utils, grub-emu uses the glibc extension argp_parse(). It is unavailable on Cygwin, which might also be the case for other platforms where glibc is not the native runtime. This has been brought up before, BSD has the same problem. The outcome of the discussion was (IIRC) that we will use argp. When argp is not available we can use gnulib or a standalone argp parser (argp-standalone) to support this. In that case it will mean changing configure.ac. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Fixed ieee1275 console
Marcin Kurek [EMAIL PROTECTED] writes: Hell[o] Right, this is because it seems that the MSB is lost when writing a character to the screen. For the borders specific characters are used above 127 (non-ASCII). I wonder if the Pegasos console supports this ASCII extension if you change some settings or so... The problem is in framebuffer mode OF loads glyphs starting from 32 to 127 then any characters abowe 127 are displayed as white '?'. The solution would be to use set-font to load a proper font to use with grub. In non framebuffer mode cp437 is used by console then we can use it to draw borders same as for PC. Can you provide something that makes use of that? I prefer if it can be detected if this is Efika or for example an apple implementation of OF and handle these characters depending on that. IIRC this code does work on the apple, but unfortunately I cannot check this anymore. Ahhh, I see you looked at first version of patch. Please take a look at recent version of my patches. Will do :-) Handle 127 keycode as backspace key in grub_ofconsole_readkey() which fix [1] Can you explain this? For some reasons my OF sends \b 127 (Del) sequence for backspace key. It seems to be same sa ncurses console. Ok. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Grub2 on a Macbook.
Isaac Dupree [EMAIL PROTECTED] writes: Eoin Hennessy wrote: Hello all, I've been taking a look at grub2 on an EFI Apple Macbook. I've installed a build from CVS HEAD and I can chainload grub.efi via the rEFIt loader. When grub loads I'm seeing the 'grub rescue' command prompt. As a test, I'd like to chainload OSX's boot.efi using the 'chainloader' command listed at [0] but the command is reported as 'unknown'. I've also tried the instructions at [1] but it allooks like grub.cfg is being ignored. Perhaps someone could point me in the right direction. In May/June 2007 I failed at using Grub2 cvs - efi on my new MacBook too, with the same issue. But I'm using Grub2 with legacy boot sequence to boot... because it understands GPT :) and that works except the keyboard usually doesn't work during boot because of Apple's buggy bios. Are you aware of other bootloaders that do *not* have this problem? I experienced this with GRUB Legacy. The workaround was not pretty... I'm not sure if chainloading would work due to grub2 not understanding HFS+ ? I tried putting grub2-efi and a linux kernel image on a FAT16/vfat partition. It *does* understand HFS+, if you load the hfsplus.mod module :-) Anyway I can probably help test anything if needed. Can you please send in bug reports whenever something in GRUB 2 doesn't work? Or better: document it on the wiki so we will not forget about this :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: pxebooting with GRUB 2
Daniel Kahn Gillmor [EMAIL PROTECTED] writes: On Sun 2007-09-30 12:07:38 -0400, Robert Millan wrote: WIP. Check latest mails from Marco on the subject. He sent patches implementing ethernet infrastructure and requested feedback. Ah, thanks. Are you referring to this, from two months ago? http://lists.gnu.org/archive/html/grub-devel/2007-08/msg00011.html I couldn't find a more recent e-mail. And though the message suggests that the patchset will be in CVS within a week (i.e. mid-August), it doesn't look merged to me. i'm looking at CVS HEAD, though -- is there another branch i should be trying? It will be committed soon, now for real ;-) I'm not sure what feedback i can give as i'm not a grub developer, and there doesn't appear to be enough in the patch (e.g. no IPv4 support) to make it something i can test as an end user. No, you are right. In the current state it will not be very useful. I will work on this after dealing with patches that were sent in, LinuxBIOS related work and ATA support. Marco, can you give another status report on netbooting? This patch that will be committed soon will be the foundation of networking support. After that I will add IPv4, UDP, TFTP, etc. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Strong Crypto Support for GRUB2
Simon Peter [EMAIL PROTECTED] writes: Hi, is my patch for strong crypto support going to make it into GRUB2 mainline? Sorry for keeping you waiting. I hope you are still interested in this; I am. Can you please send in your work as a patch+changelog to current CVS? Please make clear what you wrote and where other code comes from. We usually deal with copyright issues very carefully. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] generic ELF version of grub-mkimage
Robert Millan [EMAIL PROTECTED] writes: On Fri, Oct 12, 2007 at 05:55:03PM +0200, Robert Millan wrote: Ok. But no, I didn't really notice. I'll fix this entry and keep trying to get it right next time. Does this look good? This was committed, right? Otherwise poke me and I will look :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] bug fix for the ntfs driver
Bean [EMAIL PROTECTED] writes: Hi, The problem is caused by the structure of compressed files. In ntfs, 16 clusters is the basic compressed unit. The original code assume that the file will break in 16 cluster long blocks, but in fact, the blocks will be merged if they are stored next to to each other on disk. The new code fix this problem. * fs/ntfs.c (read_block): Fix a bug caused by adjacent blocks. Sorry for forgetting about this patch. It should be committed. Robert, if you have time, can you commit this? I will mark this mail as important... If you don't have the time, I will surely commit it ASAP :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Transparent decompression with file system filter
Bean [EMAIL PROTECTED] writes: Currently, grub2 support gziped file with the gzio module. To open a gziped file, you have to use a special function grub_gzfile_open, I think it could be better if grub_file_open could handle compressed file transparently. Are you still interested in working on this? -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: NTFS file system driver (update 4)
Bean [EMAIL PROTECTED] writes: On 8/3/07, Marco Gerards [EMAIL PROTECTED] wrote: Bean [EMAIL PROTECTED] writes: On 8/3/07, Marco Gerards [EMAIL PROTECTED] wrote: Bean [EMAIL PROTECTED] writes: If you make these two changes and send in the patch, I'll commit the patch. Ok, this is the new patch. Committed. Thanks, but i don't see fs/ntfs.c in the cvs, do you forget to add it ? Yes, I forgot it, but now it is really committed. As ntfs driver is done, i start to work on the scripting support. Does the parser in the previous test program ok ? To be honest, I just didn't find the time yet :(. Actually, I hoped you could first update the other patch regarding scripting. There was one part of the patch I didn't like. If you can take that out, at least the other parts can be committed without much of a problem. Which part ? Do you mean the new lexer code in grub_script_yylex2 ? Yes. About that other parser file? Personally I don't like it if you would start from working from scratch on the parser. The way ASTs and stuff are build now is just fine, although not perfect. However, if you improve the current parsing rules that would be great. I do not have much time today, so if I will not have the time today, I'll try to look after this weekend. Yes, we can just use the parsing rules, AST and related stuff will remain the same. But I think the lexer code need to be changed, the current lexer will break the following token: aa$BB into aa and $BB, but in fact, it should act as one. I will look into this problem soon. At the time I just ignored it to speed up the implementation, sorry for that. Do you object if the other part is applied? I would appreciate it if you had the time to make a new patch... -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: New command dump
Bean [EMAIL PROTECTED] writes: Hi, I have written a new command dump, it can hex dump content of file or memory. Great! usage: dump [-s skip] [-n length] { FILE | (mem) } The output look just like command hexdump. If you use (mem) as filename, it will dump physical memory instead of file. when dumping memory, the default length is 256, but when dumping normal file, the default length is the whole file. Inside grub2, modules can call function dump directly: void dump(unsigned long base,char* buf, int len); -- Bean 2007-08-03 Bean [EMAIL PROTECTED] * conf/common.rmk (pkgdata_MODULES): Add dump.mod. (dump_mod_SOURCES): New variable. (dump_mod_CFLAGS): Likewise. (dump_mod_LDFLAGS): Likewise. * include/grub/dump.h: New file. * commands/dump.c: New file. I think we should commit this soon! Can you please add it to grub-emu as well? Index: conf/common.rmk === RCS file: /sources/grub/grub2/conf/common.rmk,v retrieving revision 1.16 diff -u -p -r1.16 common.rmk --- conf/common.rmk 2 Aug 2007 19:12:52 - 1.16 +++ conf/common.rmk 3 Aug 2007 14:59:55 - @@ -199,7 +199,7 @@ lvm_mod_LDFLAGS = $(COMMON_LDFLAGS) pkgdata_MODULES += hello.mod boot.mod terminal.mod ls.mod\ cmp.mod cat.mod help.mod font.mod search.mod\ loopback.mod configfile.mod \ - terminfo.mod test.mod blocklist.mod + terminfo.mod test.mod blocklist.mod dump.mod # For hello.mod. hello_mod_SOURCES = hello/hello.c @@ -276,6 +276,11 @@ blocklist_mod_SOURCES = commands/blockli blocklist_mod_CFLAGS = $(COMMON_CFLAGS) blocklist_mod_LDFLAGS = $(COMMON_LDFLAGS) +# For blocklist.mod. +dump_mod_SOURCES = commands/dump.c +dump_mod_CFLAGS = $(COMMON_CFLAGS) +dump_mod_LDFLAGS = $(COMMON_LDFLAGS) + # Misc. pkgdata_MODULES += gzio.mod elf.mod Index: include/grub/dump.h === RCS file: /sources/grub/grub2/include/grub/dump.h,v diff -Nu include/grub/dump.h --- /dev/null 2007-08-03 21:55:33.6 +0800 +++ include/grub/dump.h 2007-08-03 18:27:57.0 +0800 @@ -0,0 +1,25 @@ +/* dump.h - prototypes for dump */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see http://www.gnu.org/licenses/. + */ + +#ifndef GRUB_DUMP_H +#define GRUB_DUMP_H 1 + +void dump(unsigned long bse,char* buf,int len); + +#endif /* ! GRUB_DUMP_H */ Index: commands/dump.c === RCS file: /sources/grub/grub2/commands/dump.c,v diff -Nu commands/dump.c --- /dev/null 2007-08-03 21:55:33.6 +0800 +++ commands/dump.c 2007-08-03 23:00:48.0 +0800 @@ -0,0 +1,144 @@ +/* dump.c - command to dump the contents of a file or memory */ +/* + * GRUB -- GRand Unified Bootloader + * Copyright (C) 2007 Free Software Foundation, Inc. + * + * GRUB is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GRUB is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GRUB. If not, see http://www.gnu.org/licenses/. + */ + +#include grub/normal.h +#include grub/dl.h +#include grub/arg.h +#include grub/file.h +#include grub/disk.h +#include grub/misc.h +#include grub/gzio.h +#include grub/dump.h + +static const struct grub_arg_option options[] = { + {skip, 's', 0, skip offset bytes from the beginning of file., 0, + ARG_TYPE_INT}, + {length, 'n', 0, read only length bytes, 0, ARG_TYPE_INT}, + {0, 0, 0, 0, 0, 0} +}; + +void +dump (unsigned long bse, char *buf, int len) Can you please use another name, this is a not static. Not being static is not a problem to me, having access from other modules to this one for debugging might be useful
Re: Using GRUB2 for booting from CD
Alex Roman [EMAIL PROTECTED] writes: Hi Alex, On 20/08/07, Robert Millan [EMAIL PROTECTED] wrote: I heard from Patrick Georgi on IRC (CCed) that he already has an ATAPI implementation for GRUB as part of his LinuxBIOS work. Maybe you should coordinate with him so that the code can be shared with pc/bios targets. Awesome, perhaps we'll be able to get it going after Summer of Code is finished and all is integrated in the CVS, or if Patrick can post a patch that'd work too. Did you send in a patch+Changelog entry with your work? I would be happy to review it so we can integrate your work soon. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: detecting other versions of SmartFirmware
Robert Millan [EMAIL PROTECTED] writes: 2007-09-05 Robert Millan [EMAIL PROTECTED] * 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. This doesn't break anything, right? In that case we better have this applied soon :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Allow build without dirent.d_type, fix ls (host) crash
Marco Gerards wrote: ... 2007-11-09 Christian Franke [EMAIL PROTECTED] * 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). Looks fine to me. Thanks. btw, when do you use (host)? It's intended as a debugging tool. It was there, it didn't work, and it breaked remaining grub-emu device access at all. So I fixed it :-) Christian ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Status of ATA support
Hi, A while ago I added support for ATA support. It wasn't complete yet, but I rather have this in CVS than rotting on my harddisk. Besides that, it isn't *that* bad. I will describe the outstanding issues below. First of all, this is mainly for i386-linuxbios. On i386-pc we have to disable biosdisk support because ata.mod and biosdisk.mod do not like eachother :-). Perhaps disk access via the BIOS will not be possible/safe anymore after loading ata.mod. PCI devices are not supported *yet*. Same for controllers 3 and 4. I will work on this. The code to detect the type of controller (PATA, SATA, PATAPI, SATAPI) really sucks. I will have a look at this. There is no code to detect the amount of sectors for a CDROM. I will write this eventually. Patches are more than welcome! The biggest problem is that grub_get_rtc is used to measure how long we have to wait for the hardware to settle. This function return the amount of ticks (1/18th of a second), this resolution is not acceptable. It will result in large delays in ata.mod because it will wait at least 1/18th of a second on i386-pc. For i386-linuxbios we still need grub_get_rtc. More about this on my blog: http://www.mgerards.net/blog/?p=34 -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Improving the website about GRUB 2 development
Hi, On the website there is no information about how to send in patches (so improving in the title is a bit of an understatement ;)). I think we should add a page with information about patches that are sent in. That saves us some times to comment on obvious problems with a patch. But more importantly, this will save much time for the developer sending in the patch. There are several things I would like to mention on this page: 1) GCS/Changelogs/Coding Style We can even duplicate some things from the GCS that are the most important. I can't blame anyone for sending in a patch that doesn't match our coding style. It isn't obvious from the website. On the other hand, we have a coding style and I think we should use it. 2) Copyrights We might want to mention that we ask people to assign their copyrights or sign a disclaimer. If people know it will be asked, it won't scare them away. Or if it is a serious problem for them, people won't waste time writing a patch that can't be included. I am willing to put my address there as a contact person in case people would like to ask questions about this privately. We should also write something about code from 3rd parties and about looking at code from other parties and thus cause copyright issues. 3) How to send in patches. At the moment patches will be sent to the mailinglist. We have to mention we like a Changelog and an inlined patch, as attachment is ok. No generated files, big patches are ok. 4) Reviewing Reality is that we do not have the manpower to review the patch in a few days. If we mention this, it won't come as a surprise. 5) Focus Url to the todo list, bug list and an url to a site which states the priorities for the next release. If we put this on a website in a friendly and attractive way, we might get more contributions. I think the current lack of information causes problems to us. What do you guys think? Did I miss something, or am I over enthusiastic? -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Building on Ubuntu 7.10 x86-64
Vesa Jääskeläinen [EMAIL PROTECTED] writes: Hi Vesa, I needed to do following modification in order to build grub2 on my 64bit laptop. In case there is no complaints I will commit it to CVS. This looks ok to me. -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [patch] Fix for vga terminal
Vesa Jääskeläinen [EMAIL PROTECTED] writes: Hi Vesa, Here is patch for fixing vga terminal. At least it worked fine on qemu. Now it uses only font system to get fonts so you need to load font module and use fonts. See gfxterm section on the wiki on how to do that. I had to edit patch by hand as 64bit patch is still pending and I need that to compile my codes. But it should still apply nicely to current CVS. Great! Thanks for fixing this! [...] +2007-11-10 Vesa Jaaskelainen [EMAIL PROTECTED] + + * 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. This looks good to me. Feel free to commit this! :-) -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: pxebooting with GRUB 2
On Sat 2007-11-10 12:25:10 -0500, Marco Gerards wrote: It will be committed soon, now for real ;-) Thanks for the followup. i await with bated breath; netboot is an important feature for me! Let me know if there's a patchset i can test at some point as an end user. Sorry i don't have the skills/time/knowledge to contribute code in this case. Regards, --dkg pgpJZzsL4F9IS.pgp Description: PGP signature ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Layout testing for graphical menu
Vesa Jääskeläinen [EMAIL PROTECTED] writes: Hi, I was hoping that someone else might stand-up but as there wasn't really interest I made a draft. This is basically using Okuji's idea of using CSS for specifying look. I made HTML page and example CSS filling information. And of course it looks ugly as I didn't spent too much on tuning it. Actually, I am still hoping you are interested in working on this! :-) What is the state of the current framebuffer support? Are backgrounds, etc supported? -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Standalone problem to test syntax rules
Bean [EMAIL PROTECTED] writes: In the tarball? Yes. Could you send the files to the list as attachments? Or whatever is relevant. tarballs on a mailinglist are very inconvenient. :-/ -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Building on Ubuntu 7.10 x86-64
Marco Gerards wrote: Vesa Jääskeläinen [EMAIL PROTECTED] writes: Hi Vesa, I needed to do following modification in order to build grub2 on my 64bit laptop. In case there is no complaints I will commit it to CVS. This looks ok to me. Committed. New configure was also generated, so please report how well it works. ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
[PATCH] Handle C symbols with leading underscore (HAVE_ASM_USCORE)
HAVE_ASM_USCORE is checked by configure, but module loader does not work in this case. This patch fixes this by ignoring the difference. It actually works to load modules compiled on Linux by a kernel compiled on Cygwin (with underscores) and vice versa. It also prepares the grub_mod_init/finit search for modules converted from non-ELF format (which do not support the function symbol type). A bug in symbol table scan is fixed. Christian 2007-11-10 Christian Franke [EMAIL PROTECTED] * genkernsyms.sh.in: Handle HAVE_ASM_USCORE case. * genmk.rb: Handle HAVE_ASM_USCORE case in strip command. Add $EXEEXT to CLEANFILES. * kern/dl.c (grub_dl_resolve_symbol): Handle HAVE_ASM_USCORE case, ignore leading underscore. (grub_dl_register_symbol): Likewise. (grub_dl_resolve_symbols): Likewise. Add check for grub_mod_init/fini for symbols without type. (grub_dl_resolve_dependencies): Add check for trailing nullbytes in symbol table. This fixes an infinite loop if stab is zero filled. diff -rup grub2.orig/genkernsyms.sh.in grub2/genkernsyms.sh.in --- grub2.orig/genkernsyms.sh.in 2006-07-12 22:42:52.0 +0200 +++ grub2/genkernsyms.sh.in 2007-10-06 12:59:29.0 +0200 @@ -16,9 +16,12 @@ [EMAIL PROTECTED]@ CC=@CC@ +u= +grep ^#define HAVE_ASM_USCORE config.h /dev/null 21 u=_ + $CC -DGRUB_SYMBOL_GENERATOR=1 -E -I. -Iinclude -I$srcdir/include $* \ | grep -v '^#' \ | sed -n \ --e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/\1 kernel/;p;}' \ --e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/\1 kernel/;p;}' \ +-e '/EXPORT_FUNC *([a-zA-Z0-9_]*)/{s/.*EXPORT_FUNC *(\([a-zA-Z0-9_]*\)).*/'$u'\1 kernel/;p;}' \ +-e '/EXPORT_VAR *([a-zA-Z0-9_]*)/{s/.*EXPORT_VAR *(\([a-zA-Z0-9_]*\)).*/'$u'\1 kernel/;p;}' \ | sort -u diff -rup grub2.orig/genmk.rb grub2/genmk.rb --- grub2.orig/genmk.rb 2007-10-20 22:49:38.96875 +0200 +++ grub2/genmk.rb 2007-11-10 19:37:17.56250 +0100 @@ -115,7 +115,7 @@ UNDSYMFILES += #{undsym} [EMAIL PROTECTED]: #{pre_obj} #{mod_obj} -rm -f $@ $(TARGET_CC) $(#{prefix}_LDFLAGS) $(TARGET_LDFLAGS) -Wl,-r,-d -o $@ $^ - $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -R .note -R .comment $@ + $(STRIP) --strip-unneeded -K grub_mod_init -K grub_mod_fini -K _grub_mod_init -K _grub_mod_fini -R .note -R .comment $@ #{pre_obj}: $(#{prefix}_DEPENDENCIES) #{objs_str} -rm -f $@ @@ -187,7 +187,7 @@ class Utility deps = objs.collect {|obj| obj.suffix('d')} deps_str = deps.join(' '); -CLEANFILES += [EMAIL PROTECTED] #{objs_str} +CLEANFILES += [EMAIL PROTECTED](EXEEXT) #{objs_str} MOSTLYCLEANFILES += #{deps_str} [EMAIL PROTECTED]: $(#{prefix}_DEPENDENCIES) #{objs_str} diff -rup grub2.orig/kern/dl.c grub2/kern/dl.c --- grub2.orig/kern/dl.c 2007-07-22 01:32:26.0 +0200 +++ grub2/kern/dl.c 2007-11-10 19:44:34.140625000 +0100 @@ -156,6 +156,9 @@ grub_dl_resolve_symbol (const char *name { grub_symbol_t sym; + if (*name == '_') +name++; + for (sym = grub_symtab[grub_symbol_hash (name)]; sym; sym = sym-next) if (grub_strcmp (sym-name, name) == 0) return sym-addr; @@ -169,6 +172,11 @@ grub_dl_register_symbol (const char *nam { grub_symbol_t sym; unsigned k; + + /* Ignore leading underscore used for C symbols. + Done at runtime to allow loading modules compiled on other OS. */ + if (*name == '_') +name++; sym = (grub_symbol_t) grub_malloc (sizeof (*sym)); if (! sym) @@ -347,6 +355,7 @@ grub_dl_resolve_symbols (grub_dl_t mod, unsigned char type = ELF_ST_TYPE (sym-st_info); unsigned char bind = ELF_ST_BIND (sym-st_info); const char *name = str + sym-st_name; + int check_mod_func = 0; switch (type) { @@ -359,6 +368,12 @@ grub_dl_resolve_symbols (grub_dl_t mod, return grub_error (GRUB_ERR_BAD_MODULE, the symbol `%s' not found, name); } + else if (sym-st_name != 0 bind == STB_LOCAL) + { /* Static functions have no type if initial format was not ELF. */ + sym-st_value += (Elf_Addr) grub_dl_get_section_addr (mod, +sym-st_shndx); + check_mod_func = 1; + } else sym-st_value = 0; break; @@ -374,14 +389,11 @@ grub_dl_resolve_symbols (grub_dl_t mod, case STT_FUNC: sym-st_value += (Elf_Addr) grub_dl_get_section_addr (mod, sym-st_shndx); - if (bind != STB_LOCAL) + if (bind == STB_LOCAL) + check_mod_func = 1; + else if (grub_dl_register_symbol (name, (void *) sym-st_value, mod)) return grub_errno; - - if (grub_strcmp (name, grub_mod_init) == 0) - mod-init = (void (*) (grub_dl_t)) sym-st_value; - else if (grub_strcmp (name, grub_mod_fini) == 0) - mod-fini = (void (*) (void)) sym-st_value; break; case STT_SECTION: @@ -397,6 +409,15 @@ grub_dl_resolve_symbols (grub_dl_t mod, return
Re: Improving the website about GRUB 2 development
Marco Gerards wrote: Hi, On the website there is no information about how to send in patches (so improving in the title is a bit of an understatement ;)). I think we should add a page with information about patches that are sent in. That saves us some times to comment on obvious problems with a patch. But more importantly, this will save much time for the developer sending in the patch. There are several things I would like to mention on this page: 1) GCS/Changelogs/Coding Style We can even duplicate some things from the GCS that are the most important. I can't blame anyone for sending in a patch that doesn't match our coding style. It isn't obvious from the website. On the other hand, we have a coding style and I think we should use it. Perhaps add a link to GCS and then pinpoint most important rules with examples. 2) Copyrights We might want to mention that we ask people to assign their copyrights or sign a disclaimer. If people know it will be asked, it won't scare them away. Or if it is a serious problem for them, people won't waste time writing a patch that can't be included. I am willing to put my address there as a contact person in case people would like to ask questions about this privately. We should also write something about code from 3rd parties and about looking at code from other parties and thus cause copyright issues. It should also describe why. When reason is known it is much easier to accept that. 3) How to send in patches. At the moment patches will be sent to the mailinglist. We have to mention we like a Changelog and an inlined patch, as attachment is ok. No generated files, big patches are ok. 4) Reviewing Reality is that we do not have the manpower to review the patch in a few days. If we mention this, it won't come as a surprise. Perhaps patch processing process should be documented and as a note on reviewing phase note about this. 5) Focus Url to the todo list, bug list and an url to a site which states the priorities for the next release. Ah... and those should then be also up-to-date :). I think we had discussion some time about TODO file. These files should contain a note to URL to wiki. If we put this on a website in a friendly and attractive way, we might get more contributions. I think the current lack of information causes problems to us. What do you guys think? Did I miss something, or am I over enthusiastic? I think it would be beneficial to have page that describes how to report bugs and how to send patches. Especially the bug reporting page should be targeting people that are not familiar on how to report bugs. ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: GRUB 2 development
Marco Gerards wrote: Hi, As you all might have noticed, I have been spamming this list like crazy the last two days :-) The problem currently is that, accidently, we lose track of outstanding bugs and patches. It is frustrating to both developers and people sending in patches/bugreports. Hopefully we can start using a bug tracker soon. There are many that are good. In my opinion the mailinglist and wiki doesn't work for us anymore. If we have a bug tracker, bugs and patches won't be forgotted until we actively close them. This will fix a serious problem in GRUB development. At the moment I am a bit more active. But I can not promise if I can keep being this active... Many projects use bugzilla. Perhaps it isn't perfect, but it does what I want. I just do not have the resources to set that up. Perhaps someone else knows something better. I would even prefer using savannah than the current situation. I hope we can figure out a solution real soon. How about just using savannah and add a GRUB2 option there, unless someone comes up with something better in a few days/weeks? I agree on this one. This has been a problem for a long time. And I think we have had several discussions about this, so far no solution however. Problem with savannah is that it really doesn't handle different releases nicely. And it does not handle patches nicely at all. Bugzilla is much better on this approach. Though it is huge software to maintain and needs a server. If we can find maintainer and the server with necessary bandwidth (which should be small-to-moderate). Oh... did I mention that bugzilla can be nicely combined with Mylyn :) ? http://www.eclipse.org/mylyn/ ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Status of ATA support
Marco Gerards wrote: First of all, this is mainly for i386-linuxbios. On i386-pc we have to disable biosdisk support because ata.mod and biosdisk.mod do not like eachother :-). Perhaps disk access via the BIOS will not be possible/safe anymore after loading ata.mod. We have to make sure we are not using BIOS for accessing disk after that point. And ATA controller should be at stable state after resuming normal operations OR we install custom int13h handler. Actually you could try to determine what devices are handled by biosdisk and what are not. EDD supports some queries that report on what controller disk comes from. ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: GRUB 2 development
On Sat, Nov 10, 2007 at 06:53:51PM +0100, Marco Gerards wrote: Hopefully we can start using a bug tracker soon. There are many that are good. In my opinion the mailinglist and wiki doesn't work for us anymore. If we have a bug tracker, bugs and patches won't be forgotted until we actively close them. This will fix a serious problem in GRUB development. At the moment I am a bit more active. But I can not promise if I can keep being this active... Many projects use bugzilla. Perhaps it isn't perfect, but it does what I want. I just do not have the resources to set that up. Perhaps someone else knows something better. Have you considered using Trac? It's way lighter than bugzilla, and offers a few other simple features that could ease this project's management. Finding a place to host trac.enbug.org or whatever domain would be trivial. http://trac.edgewall.org/ Jordi -- Jordi Mallach Pérez -- Debian developer http://www.debian.org/ [EMAIL PROTECTED] [EMAIL PROTECTED] http://www.sindominio.net/ GnuPG public key information available at http://oskuro.net/ ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Standalone problem to test syntax rules
On Nov 10, 2007 1:43 PM, Marco Gerards [EMAIL PROTECTED] wrote: Bean [EMAIL PROTECTED] writes: In the tarball? Yes. Could you send the files to the list as attachments? Or whatever is relevant. tarballs on a mailinglist are very inconvenient. :-/ -- Marco ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel Hello! I agree! Those things on a list are driving people that way on the LinuxBIOS list. While I won't name names, I can tell that the responsible party is leaning towards conventional patches. There is as it happens a number of places where a blob can be stored for access by us, should you not be able to host them locally. Of course I can't recall them, but certainly someone on this list can do that. -- Gregg C Levine [EMAIL PROTECTED] This signature was once found posting rude messages in English in the Moscow subway. ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Fix eisa_mmap evaluation, add memory existence check
Marco Gerards wrote: Christian Franke [EMAIL PROTECTED] writes: ... volatile is necessary here to tell the complier that the memory address might not behave like regular memory. Otherwise, the optimizer might legitimately remove memory accesses and then constant propagation detects an unchanged value. gcc actually does a very good job here. Result with volatile removed: I think this is just normal memory, not memory mapped hardware. Or perhaps I am misunderstanding something here. It is normal memory - but only if present :-) Like memory mapped hardware, missing memory violates the optimizers assumptions about memory accesses. Therefore, volatile is mandatory here. $ gcc -S -O -fomit-frame-pointer init.c cat init.s ... addr_is_valid: movl$1, %eax ret ... aka: static int addr_is_valid (grub_addr_t addr) { return 1; } This is at least a proof that the original function returns the correct result when real memory is present :-) :-) BTW: this also proves that the routine leaves memory unchanged. Christian ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] bug fix for the ntfs driver
On Sat, Nov 10, 2007 at 06:31:09PM +0100, Marco Gerards wrote: Sorry for forgetting about this patch. It should be committed. Robert, if you have time, can you commit this? I will mark this mail as important... If you don't have the time, I will surely commit it ASAP :-) Done. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: detecting other versions of SmartFirmware
On Sat, Nov 10, 2007 at 06:46:28PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: 2007-09-05 Robert Millan [EMAIL PROTECTED] * 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. This doesn't break anything, right? In that case we better have this applied soon :-) It was already. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] generic ELF version of grub-mkimage
On Sat, Nov 10, 2007 at 06:29:12PM +0100, Marco Gerards wrote: Robert Millan [EMAIL PROTECTED] writes: On Fri, Oct 12, 2007 at 05:55:03PM +0200, Robert Millan wrote: Ok. But no, I didn't really notice. I'll fix this entry and keep trying to get it right next time. Does this look good? This was committed, right? Otherwise poke me and I will look :-) No. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Avoid crash on empty menu
On Sat, Nov 10, 2007 at 04:27:28PM +0100, Marco Gerards wrote: 2007-11-10 Christian Franke [EMAIL PROTECTED] * normal/menu.c (run_menu): Check for empty menu to avoid crash. (grub_menu_run): Likewise. This looks ok to me. We can apply this now, it's just a few line. Committed. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Status of ATA support
On Sat, Nov 10, 2007 at 09:21:38PM +0200, Vesa Jääskeläinen wrote: Marco Gerards wrote: First of all, this is mainly for i386-linuxbios. On i386-pc we have to disable biosdisk support because ata.mod and biosdisk.mod do not like eachother :-). Perhaps disk access via the BIOS will not be possible/safe anymore after loading ata.mod. We have to make sure we are not using BIOS for accessing disk after that point. We already do (check for grub_disk_firmware_fini() function and grub_disk_firmware_is_tainted variable). But it has no effect on loaded OSes of course :-/ And ATA controller should be at stable state after resuming normal operations OR we install custom int13h handler. An int handler sounds like the sane thing to do.. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: GRUB 2 development
On Sat, Nov 10, 2007 at 06:53:51PM +0100, Marco Gerards wrote: The problem currently is that, accidently, we lose track of outstanding bugs and patches. It is frustrating to both developers and people sending in patches/bugreports. Hopefully we can start using a bug tracker soon. There are many that are good. In my opinion the mailinglist and wiki doesn't work for us anymore. If we have a bug tracker, bugs and patches won't be forgotted until we actively close them. This will fix a serious problem in GRUB development. At the moment I am a bit more active. But I can not promise if I can keep being this active... Many projects use bugzilla. Perhaps it isn't perfect, but it does what I want. I just do not have the resources to set that up. Perhaps someone else knows something better. I would even prefer using savannah than the current situation. I hope we can figure out a solution real soon. How about just using savannah and add a GRUB2 option there, unless someone comes up with something better in a few days/weeks? We had this discussion before. See: http://lists.gnu.org/archive/html/grub-devel/2007-06/msg00208.html And: http://lists.gnu.org/archive/html/grub-devel/2007-07/msg00086.html (funny that we all forget things so easily ;-)) I think Okuji makes valid points. How about using the tracker in savannah? It's certainly better than using the mailing list as a bug tracker ;-) -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: Improving the website about GRUB 2 development
On Sat, Nov 10, 2007 at 07:19:34PM +0100, Marco Gerards wrote: If we put this on a website in a friendly and attractive way, we might get more contributions. Getting more contributions sounds nice; but can we cope with them? I think it's more important to make sure we can properly (and timely!) attend all the contributions we receive first. -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
Re: [PATCH] Handle C symbols with leading underscore (HAVE_ASM_USCORE)
On Sat, Nov 10, 2007 at 08:03:57PM +0100, Christian Franke wrote: This patch fixes this by ignoring the difference. It actually works to load modules compiled on Linux by a kernel compiled on Cygwin (with underscores) and vice versa. [...] + + /* Ignore leading underscore used for C symbols. + Done at runtime to allow loading modules compiled on other OS. */ + if (*name == '_') +name++; Is that something we really want? We never made any efforts at maintaining ABI between kernel and modules, or in allowing this kind of combinations. If we go this path, it can mean more work later (e.g. support for building kernel and modules with different versions of GCC, etc). Could you give an example of a situation in which this would be useful? -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel
serial port
Hi Any reason why the serial port is not enabled in grub_serial_init() ? grub terminal Available terminal(s): console Current terminal: console grub serial grub terminal Available terminal(s): serial console Current terminal: serial -- Robert Millan GPLv2 I know my rights; I want my phone call! DRM What use is a phone call, if you are unable to speak? (as seen on /.) ___ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel