[OpenBIOS] [RFC PATCH] ppc correctly replace &device; and &partition;
Stefan Assmann
sassmann at suse.de
Wed Feb 4 13:48:30 CET 2009
Stefan Assmann wrote:
> Laurent Vivier wrote:
[snip]
>>>> + } else {
>>>> + /* FIXME: allow booting of SUSE media with following
>>>> layout (fails without this workaround)
>>>> + * 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
>>>> + */
>>>> + if ( (buf = strstr(bootscript, (const char *) "1,\
>>>> \suseboot\\yaboot.ibm")) != NULL ) {
>>> what it is wrong here is we try to read a file from partition 1 which
>>> is the partition map...
>>> I guess we should write a "modules/iso9660-parts.c" to override this
>>> (as macintosh CD are hybrid: ISO9660 and HFS).
>> Something like that seems to work:
>>
>> Index: openbios-devel/modules/disk-label.c
>> ===================================================================
>> --- openbios-devel.orig/modules/disk-label.c 2009-02-04 12:51:53.000000000 +0100
>> +++ openbios-devel/modules/disk-label.c 2009-02-04 12:56:51.000000000 +0100
>> @@ -78,6 +78,19 @@
>> }
>> }
>>
>> + /* try to see if there is a filesystem without partition */
>> +
>> + PUSH_ih( my_self() );
>> + selfword("find-filesystem");
>> + ph = POP_ph();
>> + if( ph ) {
>> + push_str( filename );
>> + PUSH_ph( ph );
>> + fword("interpose");
>> + success = 1;
>> + goto out;
>> + }
>> +
>> /* find partition handler */
>> seek_io( fd, 0 );
>> if( read_io(fd, block0, sizeof(block0)) != sizeof(block0) )
>
> Nice! I'll try that and post an updated patch.
Almost there! Here comes the log I get with your patch applied. I guess
it worked for you because in your test yaboot was still loaded with
boot cd:0,\suseboot\yaboot.ibm
Here's my log:
>> =============================================================
>> OpenBIOS 1.0RC1 [Feb 4 2009 12:04]
>> 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
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> 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
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ELF - load_elf_rom: Loading '/suseboot/yaboot.ibm' from ''
>> ELF - load_elf_rom: filesz: 00013947 memsz: 00023FC8 p_offset: 00010000 p_vaddr 00040000
>> ELF - load_elf_rom: ELF ROM-section loaded at 00040000 (size 00023FC8)
>> ELF - load_elf_rom: filesz: 00000000 memsz: 00000000 p_offset: 00000000 p_vaddr 00000000
>> ELF - load_elf_rom: filesz: 0000002C memsz: 00000000 p_offset: 000000B4 p_vaddr 00000000
>> ELF - load_elf_rom: filesz: 00000044 memsz: 00000000 p_offset: 000000E0 p_vaddr 00000000
>> ELF - try_path: Transfering control to cd:1,\suseboot\yaboot.ibm
>> ELF - transfer_control_to_elf: Starting ELF boot loader
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> os_seek failure
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
>> ob_ide_read_blocks: error
After that I see a message in the qemu window saying
bad seek: blk 00000001 c fffffc00
Stefan
--
Stefan Assmann | SUSE LINUX Products GmbH
Software Engineer | Maxfeldstr. 5, D-90409 Nuernberg
Mail: sassmann at suse.de | GF: Markus Rex, HRB 16746 (AG Nuernberg)
More information about the OpenBIOS
mailing list