Re: 2.6.23-rc1: no setup signature found...

From: Borislav Petkov
Date: Sun Jul 29 2007 - 15:17:01 EST


On Sun, Jul 29, 2007 at 06:50:32AM -0700, H. Peter Anvin wrote:
> Borislav Petkov wrote:
>> Right, this was too easy to be true. I now did:
>> qemu -hda /dev/hda -snapshot
>> and booted from the hd using the installed grub and the same kernel and it
>> _didn't_ boot showing again "no setup signature found... "
>
> Okay, so it's an algorithmic problem. This is quite important to know.
>
> Is /boot a separate partition on your disk by any chance? Either way, this
> means we can use qemu to debug this, which will make it a lot easier.
>
> This is what I'd like you to do next:
>
> - run qemu in one window with the -S -s options.
> - in another window, do:
>
> gdb
> target remote localhost:1234
> set architecture i8086
> disp/i ($cs << 4)+$eip
> br *0x10200
> br *0x20200
> br *0x30200
> br *0x40200
> br *0x50200
> br *0x60200
> br *0x70200
> br *0x80200
> br *0x90200
> c
>
> # ... hopefully you're now stopped at a jump instruction
> p/x $ds
>
> # Hopefully this is showing, say, 0x9000 if you're stopped
> # at 0x90200
>
> # Where X is the first digit of the address stopped at:
> dump memory setup.dump 0xX0000 0xX8000
>
>
> Please send me setup.dump plus your vmlinuz file.
>
> Thanks,
>
> -hpa

Here's a complete log of what i did:

qemu -hda /dev/hda -snapshot -S -s

and then in another window:

-------
[]# gdb
GNU gdb 6.6-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000fff0 in ?? ()
(gdb) set architecture i8086
The target architecture is assumed to be i8086
(gdb) disp/i ($cs << 4)+$eip
1: x/i ($cs << 4) + $eip 0xffff0: ljmp $0xf000,$0xe05b
(gdb) br *0x10200
Breakpoint 1 at 0x10200
(gdb) br *0x20200
Breakpoint 2 at 0x20200
(gdb) br *0x30200
Breakpoint 3 at 0x30200
(gdb) br *0x40200
Breakpoint 4 at 0x40200
(gdb) br *0x50200
Breakpoint 5 at 0x50200
(gdb) br *0x60200
Breakpoint 6 at 0x60200
(gdb) br *0x70200
Breakpoint 7 at 0x70200
(gdb) br *0x80200
Breakpoint 8 at 0x80200
(gdb) br *0x90200
Breakpoint 9 at 0x90200
(gdb) c
Continuing.

Breakpoint 4, 0x00040200 in ?? ()
1: x/i ($cs << 4) + $eip 0x40300: lea (%si),%dx
(gdb) p/x $ds
$1 = 0x18
(gdb) dump memory setup.dump 0x40000 0x48000
(gdb) q
The program is running. Exit anyway? (y or n) y
---EOF---

Please find the setup.dump file attached. And by vmlinuz you meant bzImage,
right? Anyways, due to the fact that its size will not fit in vger's size limits
i'm sending it to you in a private mail.

--
Regards/Gruß,
Boris.

Attachment: setup.dump
Description: Binary data