Am Freitag, den 24.07.2009, 20:40 +0200 schrieb Jean-Luc Coulon (f5ibh): > Hi Felix, > > >> Jean-Luc > > > >Oh not good. > >Then please do again a debug compile with `DEB_BUILD_OPTIONS="nostrip > >noopt debug" dpkg-buildpackage -b' > >and get a backtrace with gdb. > >See [0] for my previous mail but note the spaces now in > >DEB_BUILD_OPTIONS instead of the commas. I was wrong. > > > >[0] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495949#30 > > > > So, I rebuilt grub. > Then as I don't know how to debug directly the shell script (grub- > install), I laaunched it with set -x and got the failing line: > > --->8---------->8------------->8----------->8------------>8---------- > ... > + /usr/bin/grub-mkimage --output=/boot/grub/core.img '--prefix=(md0)/ > grub' biosdisk ext2 pc raid mdraid > + /usr/sbin/grub-setup --force --directory=/boot/grub --device-map=/ > boot/grub/device.map /dev/md0 > ./grub-install: line 323: 4663 Erreur de segmentation $grub_setup > ${setup_verbose} ${setup_force} --directory=${grubdir} --device-map= > ${device_map} ${install_device} > + exit 1 > --->8---------->8------------->8----------->8------------>8---------- > > So I launched gdb as follos, I don't know if it is the right process... > but I got a (small) backtrace): > > --->8---------->8------------->8----------->8------------>8---------- > [jean-...@tangerine] % sudio gdb --args /usr/sbin/grub-setup --force -- > directory=/boot/grub --device-map=/boot/grub/device.map /dev/md0 > GNU gdb (GDB) 6.8.50.20090628-cvs-debian > Copyright (C) 2009 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/ > gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show > copying" > and "show warranty" for details. > This GDB was configured as "x86_64-linux-gnu". > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>... > (gdb) run > Starting program: /usr/sbin/grub-setup --force --directory=/boot/grub > --device-map=/boot/grub/device.map /dev/md0 > > Program received signal SIGSEGV, Segmentation fault. > 0x00007ffff7b08c60 in strcmp () from /lib/libc.so.6 > (gdb) bt > #0 0x00007ffff7b08c60 in strcmp () from /lib/libc.so.6 > #1 0x0000000000401cb1 in setup (dir=0x63e010 "/boot/grub", > boot_file=0x4279f4 "boot.img", core_file=0x4279eb "core.img", > root=0x64b9c0 "md0", dest=0x0, must_embed=1, force=1) > at /usr/local/src/tmp/grub/grub2-1.96+20090721/util/i386/pc/grub- > setup.c:335 > #2 0x0000000000402cea in main (argc=5, argv=0x7fffffffe8a8) > at /usr/local/src/tmp/grub/grub2-1.96+20090721/util/i386/pc/grub- > setup.c:774 > (gdb) > --->8---------->8------------->8----------->8------------>8---------- > > Best regards > > Jean-Luc
Please test if the attached patch solves it. -- Felix Zielcke
Index: util/i386/pc/grub-setup.c =================================================================== --- util/i386/pc/grub-setup.c (Revision 2441) +++ util/i386/pc/grub-setup.c (Revision 2442) @@ -329,10 +329,18 @@ dest_partmap = p->partmap->name; return 1; } + dest_partmap = 0; grub_partition_iterate (dest_dev->disk, identify_partmap); + if (! dest_partmap) + { + grub_util_warn ("Attempting to install GRUB to a partitionless disk. This is a BAD idea."); + goto unable_to_embed; + } + grub_partition_iterate (dest_dev->disk, (strcmp (dest_partmap, "pc_partition_map") ? find_usable_region_gpt : find_usable_region_msdos)); + if (embed_region.end == embed_region.start) { if (! strcmp (dest_partmap, "pc_partition_map"))