experimental qemu-devel port update, please test!

Eric Anderson anderson at freebsd.org
Tue Apr 24 12:08:42 UTC 2007


On 04/24/07 06:22, Kostik Belousov wrote:
> On Mon, Apr 23, 2007 at 12:23:09PM -0700, Bakul Shah wrote:
>>>>> I found and fixed one bug in src/core/osloader.c (in
>>>>> etherboot-5.4.3 code) which allows me to get a little bit
>>>>> further.  If anyone wants to play with this more, I can send
>>>>> them my changes.
>>>>  You may want to post those on the qemu list...
>>> On this list too, since I'm not subscribed to the qemu list (nor are 
>>> many people on this list I'm guessing).
>> The change I am talking about is in etherboot-5.4.3 code, not
>> in qemu.  I tried upgrading ports/net/etherboot 5.4.3 but my
>> effort is not in a usable state right now.
>>
>> Download etherboot-5.4.3.tar.bz2, untar it, cd to its top dir
>> and apply the following patch -- this is the only critical
>> change.  And I borrowed other changes from the current
>> net/etherboot port.
>>
>> If you can compile rtl8139.zrom fine, run qemu with
>> an explicit -option-rom argument and make sure you use
>> model=rtl8139.
>>
>> it will use dhcp to get an address, load freebsd's
>> pxeboot and jump to it at which point everything halts.
>>
>> May be etherboot does too much.  Since freebsd does pxeboot
>> on a real machine, ideally the exact same pxeboot should work
>> with etherboot.
>>
>> --- src/core/osloader.c.orig	Sat Feb 24 06:44:59 2007
>> +++ src/core/osloader.c	Sat Apr 21 21:50:37 2007
>> @@ -344,6 +344,8 @@
>>  	}
>>  #endif /* defined(ELF_IMAGE) && defined(IMAGE_MULTIBOOT) */
>>  
>> +	if (!len) goto done;
>> +
>>  	/* Either len is greater or the skip is greater */
>>  	if ((skip_sectors > (len >> 9)) ||
>>  		((skip_sectors == (len >> 9)) && (skip_bytes >= (len & 0x1ff)))) {
>> @@ -355,6 +357,7 @@
>>  		skip_bytes -= len;
>>  	}
>>  	else {
>> +	done:
>>  		len -= (skip_sectors << 9) + skip_bytes;
>>  		data += (skip_sectors << 9) + skip_bytes;
>>  		skip_sectors = os_download(data, len, eof);
> 
> You may try the following patch for btx:
> http://people.freebsd.org/~kib/realbtx/realbtx.2.patch
> or take the pxeboot built from the patched source at
> http://people.freebsd.org/~kib/realbtx/pxeboot
> 
> Please, handle the patch with care - do not install /boot/boot2 or
> /boot/loader built with patch on the machine without ability to boot
> from removable media, since the changes are in earliest stage and were not
> tested exhaustive.



I can confirm this works like a charm!!!!

I had to send pxelinux.0 to the QEMU system first, and then have it load 
the pxeboot file you created above (I used the binary).  It boots my 
QEMU NFS root system perfectly..

AWESOME!!!!

Anything else you want to test?


Thanks!
Eric





More information about the freebsd-emulation mailing list