[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