[syslinux] Illegal Opcode,the 2.
Shao Miller
sha0.miller at gmail.com
Wed Dec 5 10:04:59 PST 2012
On 12/5/2012 08:10, Jeffrey Hutzelman wrote:
> On Wed, 2012-12-05 at 13:30 +0100, artreader at gmx.net wrote:
>
>>>> To complete the description the whole script sequence for hpsa driver:
>>>> fdisk /dev/sda < "w\no\n"
>>>> mbr-sys -z /dev/sda
>>>> parted -s /dev/sda mklabel msdos
>>>> parted -s /dev/sda mkpart primary fat16 0 700
>>>> parted -s /dev/sda mkfs 1 fat16
>>>> parted -s /dev/sda set 1 boot on
>>>> partprobe
>>>> syslinux -f -U /dev/sda1
>>>>
>>>> For cciss:
>>>>
>>>> fdisk /dev/cciss/c0d0 < "w\no\n"
>>>> mbr-sys -z /dev/cciss/c0d0
>>>> parted -s /dev/cciss/c0d0 mklabel msdos
>>>> parted -s /dev/cciss/c0d0 mkpart primary fat16 0 700
>>>> parted -s /dev/cciss/c0d0 mkfs 1 fat16
>>>> parted -s /dev/cciss/c0d0 set 1 boot on
>>>> partprobe
>>>> syslinux -f -U /dev/cciss/c0d0p1
>>>>
>>>
>>> I do not see MBR code installed in any of these commands, unless
>>> 'mbr-sys' installs MBR code. Where does this command come from? I
>>> cannot seem to find it with an Internet search.
>>>
>>
>> It's my fault, pitty on me, mbr-sys is ms-sys (ms-sys.sourceforge.net)
>> ms-sys -z fills MBR with NULL, but "parted mklabel msdos" produces new
>> MBR, than "parted set 1 boot on" updates MBR with default value for
>> the first partition. This sequence works on almost every hardware
>> except those with HP RAID controller, where Illegal Opcode came
>
>
> "parted mklabel msdos" installs a trivial MBR, the source for which can
> be found in libparted/mbr.s.
My mistake! Thanks, Jeff.
> My reading of the register dump suggests
> that that MBR found the first partition bootable, loaded its boot
> record, and handed off control, and the failure happened sometime after
> that. But not too long after, because SI and DI both contain the value
> they would have had at handoff time.
Here they are again:
On 11/30/2012 08:33, artreader at gmx.net wrote:
> EAX=00001F01 EBX=000001A4 ECX=00000000 EDX=00000019F
> EBP=0000FBFA ESI=000007BE EDI=00000800
> DS=0000 ES=0000 FS=0000 GS=0000
> CS:EIP=0000:000083A6 SS:ESP=1000:0000AFF6
> EFLAGS=00000206
core/ldlinux.lst seems to have the LDLINUX.SYS extent list at this
location, if I'm interpreting it correctly. I guess it'll take a bit of
digging... :)
- Shao Miller
More information about the Syslinux
mailing list