[OpenBIOS] Fix boot-script parsing for openSUSE ppc media

Laurent Vivier Laurent at vivier.eu
Mon Feb 2 12:39:59 CET 2009


Le 2 févr. 09 à 12:17, Stefan Assmann a écrit :

> laurent at vivier.eu wrote:
>>>> Fix boot-script parsing for openSUSE ppc media
>>> applied, thanks
>>
>> I've applied it, as it breaks nothing and allows to use Suse, but a  
>> better fix should be:
>>
>> - correctly parse the script to replace &device; by the boot device  
>> ("cd:", and not "cd:0", which is "&bootdevice;:&partition;")
>
> Working on a patch for that.
>
>>
>> - correctly manage CD partition to be able to use ":1" instead of ": 
>> 0" (in fact, for the moment, we use mac partition on CD and ":0" to  
>> use the entire disk).
>
> I couldn't figure this out yet. When I use cd:1\somepath it doesn't  
> work
> for the openSUSE DVD, there's something wrong with the ihandle. Any  
> idea
> why it doesn't work?
>
> Here's what parted tells about the iso:
> Disk openSUSE-11.1-DVD-ppc.iso: 4126MB
> Sector size (logical/physical): 512B/512B
> Partition Table: mac
>
> Number  Start  End     Size    File system  Name        Flags
> 1      512B   1535B   1024B                 
> Apple       , , , , , , , , , , , , type=Apple_partition_map
> 2      8192B  4126MB  4126MB                
> SU1110.001  , , , , , , , , , , , , type=Apple_HFS

Perhaps a bug in partition map decoding in openbios: Apple CD  
partition map is complex to be able to manage 512 and 2048 bytes   
block size on the same disk.

see http://developer.apple.com/technotes/tn/tn1189.html#Non512ByteBlockDevices

Moreover, you have HFS and ISO9660 filesystems on the same disk.

>
> works:
>>> =============================================================
>>> OpenBIOS 1.0RC1 [Feb 2 2009 09:52]
>>> Configuration device id QEMU version 1 machine id 2
>>> CPUs: 1
>>> Memory: 256M
>>> UUID: 00000000-0000-0000-0000-000000000000
>>> CPU type PowerPC,750
>>> ELF - yaboot_startup: Entering boot, no path
>>> ELF - try_bootinfo: Trying cd:0,ppc\bootinfo.txt
>>> ELF - open_io: ih
>>> ELF - try_bootinfo: got bootscript boot &device;:0,\suseboot 
>>> \yaboot.ibm
>>> ELF - try_bootinfo: fixed bootscript boot cd:0,\suseboot\yaboot.ibm
>>> ELF - yaboot_startup: Entering boot, path cd:0,\suseboot\yaboot.ibm
>>> ELF - try_path: Trying cd:0,\suseboot\yaboot.ibm
>>> ELF - open_io: ih
>
> doesn't work:
>>> CPU type PowerPC,750
>>> ELF - yaboot_startup: Entering boot, no path
>>> ELF - try_bootinfo: Trying cd:0,ppc\bootinfo.txt
>>> ELF - open_io: ih
>>> ELF - try_bootinfo: got bootscript boot &device;:1,\suseboot 
>>> \yaboot.ibm
>>> ELF - try_bootinfo: fixed bootscript boot cd:1,\suseboot\yaboot.ibm
>>> ELF - yaboot_startup: Entering boot, path cd:1,\suseboot\yaboot.ibm
>>> ELF - try_path: Trying cd:1,\suseboot\yaboot.ibm
>>> ELF - open_io: !ih
>
> open_io calls open_dev which dives into forth and that's were I lost
> track.

look at:

- drivers:ide.c, ob_ide_open().
- modules/disk-label.c (which is the parent),  dlabel_open()
- and then partitions and filesystems.

Regards,
Laurent


More information about the OpenBIOS mailing list