[syslinux] isolinux needing mkisofs

David Bond daveb123 at hotmail.com
Tue Dec 7 18:28:50 PST 2004


Due to limitations of equipment, I have need of using the isolinux boot 
loader with .iso files generated by roxio.

After trying (and of course failing) with an off the shelf version of 
isolinux, I grabbed the source for isolinux (syslinux 2.11 package) and 
started looking.

It took a few hours to orient myself, but I ended up doing the modification 
below to isolinux.asm.  I then had to write a small C program to take the 
.bin file and patch offset 0x14 with the proper checksum info.  With that I 
now have a isolinux.bin file suitable for roxio - and probably other 
software.

Is there any interest in this, or is the dependency on mkisofs there for 
another reason?

Thanks,

David



245c245
< bi_pvd:               dd 0x00000010                   ; LBA of primary 
volume descriptor      ;DEB
---
>bi_pvd:               dd 0xdeadbeef                   ; LBA of primary 
>volume descriptor
247c247
< bi_length:    dd size_of_code                 ; Length of boot file        
            ;DEB
---
>bi_length:    dd 0xdeadbeef                   ; Length of boot file
282a283,290
>               ; Set up boot file sizes
>               mov eax,[bi_length]
>               sub eax,SECTORSIZE-3
>               shr eax,2                       ; bytes->dwords
>               mov [ImageDwords],eax           ; boot file dwords
>               add eax,(2047 >> 2)
>               shr eax,9                       ; dwords->sectors
>               mov [ImageSectors],ax           ; boot file sectors
319,365d326
< ;DEB -- Patch to have code actually insert values for bi_file and 
bi_length
<               mov bx, trackbuf                ;DEB
<               mov eax, 17                     ;DEB Location of Boot Record 
Volume
<               call getonesec                  ;DEB Retrieve Boot Record 
Volume
<
<               mov eax, dword [trackbuf+47h]   ;DEB EAX is now address of 
Boot Catalog
<
< %ifdef DEBUG_MESSAGES
<               mov si,bcat_loc_msg             ;DEB Write sector address of 
boot cat
<               call writemsg                   ;DEB
<               call writehex8                  ;DEB
<               call crlf                       ;DEB
< %endif
<
<               mov bx, trackbuf                ;DEB
<               call getonesec                  ;DEB get the Boot Catalog
<
<               mov eax, dword [trackbuf+28h]   ;DEB put RBA sector address 
in EAX
<               mov dword [bi_file], eax        ;DEB Put RBA address into 
bi_file variable
<
< %ifdef DEBUG_MESSAGES
<               mov si,rba_loc_msg              ;DEB write out RBA sector 
address
<               call writemsg                   ;DEB
<               call writehex8                  ;DEB
<               call crlf                       ;DEB
< %endif
<
< %ifdef DEBUG_MESSAGES
<               mov si,imgsz_msg                ;DEB write out image size
<               call writemsg                   ;DEB
<               mov eax, dword [bi_length]      ;DEB
<               call writehex8                  ;DEB
<               call crlf                       ;DEB
< %endif                                                ;DEB
< ;DEB -- we now return you to your regularly scheduled programing :)
<
<
<               ; Set up boot file sizes
<               mov eax,[bi_length]
<               sub eax,SECTORSIZE-3
<               shr eax,2                       ; bytes->dwords
<               mov [ImageDwords],eax           ; boot file dwords
<               add eax,(2047 >> 2)
<               shr eax,9                       ; dwords->sectors
<               mov [ImageSectors],ax           ; boot file sectors
<
<
368d328
<
802,804d761
< bcat_loc_msg: db 'Boot Catalog found at ',0                           ;DEB 
debug msg
< rba_loc_msg:  db 'RBA is ',0                                          ;DEB 
debug msg
< imgsz_msg:    db 'Boot loader size in bytes ',0                       ;DEB 
debug msg
1759,1760d1715
< size_of_code  equ ldlinux_end-bootsec         ;DEB Used to calculate 
bi_length





More information about the Syslinux mailing list