help: failed to use qemu

Till Straumann strauman at slac.stanford.edu
Thu Feb 12 00:31:52 UTC 2009


Daron Chabot wrote:
> Till Straumann wrote:
>> Joel Sherrill wrote:
>>> I don't know that it matters but I am starting to use
>>> the Intel FXP driver now with qemu.
>> I have successfully used the 'pcnet' device with a
>> port of the freebsd 'if_le' driver.
>
> What are the NIC_NAME and NIC_ATTACH settings to use this card (pcnet)?
The driver is not bundled with rtems. Separate library (plus there is a mild
dependency on libbspExt until interrupt sharing for i386 is implemented).
>
> (more below)
>
>>> Till Straumann wrote:
>>>> Daron Chabot wrote:
>>>>  
>>>>> I've had some limited success with the Etherboot/TFTP approach to  
>>>>> launching RTEMS networking apps with Qemu. Specifically, Till's  
>>>>> GeSys-2.4 (using TFTP FS). However, I'm getting ne2000 error 
>>>>> messages  (see Qemu output below).
>>>>>
>>>>> Command line:
>>>>> ---------------------------------------------
>>>>>     qemu -no-reboot -m 128 -boot n -tftp ./o-optimize -bootp 
>>>>> /rtems.exe - serial stdio
>>>>>         -net nic,macaddr=00:ab:cd:ef:12:34 -net user,hostname=foo.bar
>>>>>     
>>>> You forgot to choose the NIC model:
>>>>
>>>> -net nic,model=ne2k_isa,macaddr=00:ab:cd:ef:12:34
>
> I didn't forget :-)  I was just hoping to get by with ne2k_pci, as 
> Qemu includes an etherboot image for that card-type, while it does not 
> for ne2k_isa. That's a requirement for the "-boot n" option...
I see - but then you need to change the interrupt, too - by querying the
config space I just found it's 11 (ymmv).
>
>
>>>> BTW: Is this 0xc100 value in a GeSys version I posted or sent you --
>>>>      AFAIK, GeSys-2.4 comes with the correct value of 0 and a comment
>>>>      regarding irno=9 ?
>
> Nope, your recollection is fine: I hacked up the network config file 
> in GeSys-2.4 to comply with the port address used by Qemu's 
> pxe-ne2k_pci.bin (Etherboot image).
>
>>>> Anyways, I created a cdrom bootimage containing grub and
>>>> the binary you sent me and said
>
> Are you creating the cdrom bootimage using the same method as you 
> distributed with your GeSys/Cexp/RTEMS/EPICS iso-image(s) ?
you bet.

mkdir -p boot/grub
mkdir    bin

cp    <from-grub>/stage2_eltorito   boot/grub

echo 'default=0'                 >  boot/grub/menu.lst
echo 'timeout=20'                >> boot/grub/menu.lst
echo 'title=RTEMS'               >> boot/grub/menu.lst
echo 'kernel=(cd)/bin/rtems.exe' >> boot/grub/menu.lst
echo 'boot'                      >> boot/grub/menu.lst

cp rtems.exe   bin/

mkisofs -J -r -o isoimg \
              -b boot/grub/stage2_eltorito \
              -no-emul-boot \
              -boot-load-size 4  \
              -boot-info-table   \
              -graft-points boot=boot bin=bin


then start qemu with -cdrom isoimg

HTH
-- T.
>
> If not, could you let me know how you're doing that ? Looks like 
> expending a little more effort *before* I hit the Qemu command line 
> may well be worth it, iff it grants easier access to Qemu's networking 
> facilities...
>
> Thx.
>
>
> -- dc
>>>>
>>>> till at tillbook:~/box$ /opt/qemu-0.9.0/bin/qemu \
>>>>              -L /opt/qemu-0.9.0/share/qemu/ \
>>>>              -cdrom iso \
>>>>              -serial stdio \
>>>>              -net nic,model=ne2k_isa,macaddr=00:ab:cd:ef:12:34 \
>>>>              -net user \
>>>>              -s
>>>>
>>>> I then connected gdb while grub was waiting
>>>>
>>>> (gdb) file rtems.exe
>>>> (gdb) target remote localhost:1234
>>>> (gdb) break Init
>>>> (gdb) cont
>>>>
>>>> and let the thing come up and hit the breakpoint.
>>>> At the breakpoint I patched the port
>>>>
>>>> (gdb) set rtems_bsdnet_config.ifconfig->port = 0
>>>> (gdb) cont
>>>>
>>>> and boom - I was in business ;-)
>>>>
>>>> Could not open '/dev/kqemu' - QEMU acceleration layer not activated
>>>> Welcome to RTEMS GeSys
>>>> This system $Name: GeSys_2_4 $ was built on 20090211CST11:17:21
>>>> $Id: init.c,v 1.43 2008/03/22 20:36:13 guest Exp $
>>>> Installing TIOCGWINSZ line discipline: ok.
>>>> To skip initialization, press a key now...
>>>> network device 'ne1' <00:AB:CD:EF:12:34> initialized on port 0x300, 
>>>> irq 9
>>>> bootpc_init: using network interface 'ne1'
>>>> ne_init()
>>>>
>>>> ne configuration:
>>>> ethernet addr: 0 AB CD EF 12 34
>>>> irq = 9
>>>> port = 0x300
>>>> accept_broadcasts = 1
>>>> byte_transfers = 0
>>>> ne_init_hardware()
>>>> ne_init_irq_handler(9)
>>>> ne_interrupt_on()
>>>> ne_init()
>>>>
>>>> ne configuration:
>>>> ethernet addr: 0 AB CD EF 12 34
>>>> irq = 9
>>>> port = 0x300
>>>> accept_broadcasts = 1
>>>> byte_transfers = 0
>>>> bootpc hw address is 0:ab:cd:ef:12:34
>>>> Sne_tx_daemon
>>>> Uploading NE2000 packet
>>>> vTransmitting NE2000 packet
>>>>  >!NE2000 status 0x3 (8259 enabled: no; mask: FFEA)
>>>> ne_rx_daemon: start page 4C; current page 4F
>>>> <My ip address is 10 .0 .2 .15
>>>> Ignoring BOOTP/DHCP option code 53
>>>> Domain Name Server is 10 .0 .2 .3
>>>> Ignoring BOOTP/DHCP option code 51
>>>> Subnet mask is 255 .255 .255 .0
>>>> Server ip address is 10 .0 .2 .2
>>>> Gateway ip address is 10 .0 .2 .2
>>>> Log server ip address is 10 .0 .2 .2
>>>> ne_init()
>>>>
>>>> ne configuration:
>>>> ethernet addr: 0 AB CD EF 12 34
>>>> irq = 9
>>>> port = 0x300
>>>> accept_broadcasts = 1
>>>> byte_transfers = 0
>>>> STrying symfile 'BUILTIN', system script '(NONE)'
>>>> ne_tx_daemon
>>>> Uploading NE2000 packet
>>>> vTransmitting NE2000 packet
>>>>  >!NE2000 status 0x2 (8259 enabled: no; mask: FFEA)
>>>> Type 'cexpsh.help()' for help (no quotes)
>>>> Cexp>
>>>>
>>>> HTH
>>>> -- Till
>>>>  
>>>>> }};
>>>>>
>>>>> struct rtems_bsdnet_config rtems_bsdnet_config = {
>>>>>      &netdriver_config[0],         /* Network interface */
>>>>> #ifdef NIC_NAME
>>>>>      RTEMS_DO_BOOTP,/* Use BOOTP to get network configuration */
>>>>> #else
>>>>>      0,                        /* Use BOOTP to get network  
>>>>> configuration */
>>>>> #endif
>>>>>      NETWORK_TASK_PRIORITY,    /* Network task priority */
>>>>> #if   defined(MEMORY_CUSTOM)
>>>>>      MEMORY_CUSTOM,
>>>>> #elif defined(MEMORY_SCARCE)
>>>>>      100*1024,                 /* MBUF space */
>>>>>      200*1024,                 /* MBUF cluster space */
>>>>> #elif defined(MEMORY_HUGE)
>>>>>      2*1024*1024,              /* MBUF space */
>>>>>      5*1024*1024,              /* MBUF cluster space */
>>>>> #else
>>>>>      180*1024,                 /* MBUF space */
>>>>>      350*1024,                 /* MBUF cluster space */
>>>>> #endif
>>>>> };
>>>>>
>>>>> Qemu stdout:
>>>>> -------------------------------------------------------------------
>>>>>
>>>>> djc at TooLBox--> qemu -no-reboot -m 128 -boot n -tftp ./o-optimize - 
>>>>> bootp /rtems.exe -serial stdio -net nic,macaddr=00:ab:cd:ef:12:34 
>>>>> - net user,hostname=foo.bar2009-02-11 08:13:12.358 
>>>>> i386-softmmu[27925] KO
>>>>> Welcome to RTEMS GeSys
>>>>> This system $Name: GeSys_2_4 $ was built on 20090210CST22:02:10
>>>>> $Id: init.c,v 1.43 2008/03/22 20:36:13 guest Exp $
>>>>> Installing TIOCGWINSZ line discipline: ok.
>>>>> To skip initialization, press a key now...
>>>>> network device 'ne1' <00:AB:CD:EF:12:34> initialized on port 
>>>>> 0xC100,  irq 9
>>>>> bootpc_init: using network interface 'ne1'
>>>>> bootpc hw address is 0:ab:cd:ef:12:34
>>>>> My ip address is 10 .0 .2 .15
>>>>> Ignoring BOOTP/DHCP option code 53
>>>>> Domain Name Server is 10 .0 .2 .3
>>>>> Ignoring BOOTP/DHCP option code 51
>>>>> Hostname is foo.bar
>>>>> Boot file is /rtems.exe
>>>>> Subnet mask is 255 .255 .255 .0
>>>>> Server ip address is 10 .0 .2 .2
>>>>> Gateway ip address is 10 .0 .2 .2
>>>>> Log server ip address is 10 .0 .2 .2
>>>>> Trying symfile 'BUILTIN', system script 'st.sys'
>>>>> Type 'cexpsh.help()' for help (no quotes)
>>>>> 'st.sys':
>>>>> ne2000: device timeout
>>>>> ne2000: device timeout
>>>>> ne2000: device timeout
>>>>> ne2000: device timeout
>>>>> ne2000: device timeout
>>>>> opening script file: I/O error
>>>>> Type 'cexpsh.help()' for help (no quotes)
>>>>> Cexp>cexpMod
>>>>> cexpModIterate()                cexpModuleInitOnce()
>>>>> cexpModuleDumpGdbSectionInfo()  cexpModuleLoad()
>>>>> cexpModuleFindByName()          cexpModuleName()
>>>>> cexpModuleFree()                cexpModuleUnload()
>>>>> cexpModuleInfo()
>>>>> Cexp>cexpModuleInfo()
>>>>> Module 'SYSTEM-BUILTIN' (0x008bcb94):
>>>>>    Text starts at: 0xdeadbeef
>>>>> 0x00000000 (0)
>>>>> Cexp>
>>>>>
>>>>>
>>>>> Need a little help here...
>>>>>
>>>>>
>>>>> -- dc
>>>>>
>>>>> On 10-Feb-09, at 12:43 PM, Joel Sherrill wrote:
>>>>>
>>>>>  
>>>>>> I am happy to report that the if_fxp (Intel i8255x driver)
>>>>>> works with QEMU with any of the following NIC models
>>>>>> specified:
>>>>>>
>>>>>> i82551
>>>>>> i82557b
>>>>>> i82559er
>>>>>>
>>>>>> That is in addition to the ne2k_isa we historically used.
>>>>>> That leaves pcnet, ne2k_pci,  pcnet, and rtl8139 as the
>>>>>> remaining NICs simulated for i386 qemu that we
>>>>>> don't support.
>>>>>>
>>>>>> --joel
>>>>>>
>>>>>> Joel Sherrill wrote:
>>>>>>    
>>>>>>> Daron Chabot wrote:
>>>>>>>
>>>>>>>      
>>>>>>>> Joel Sherrill wrote:
>>>>>>>>
>>>>>>>>        
>>>>>>>>> Daron Chabot wrote:
>>>>>>>>>
>>>>>>>>>          
>>>>>>>>>> On 10-Feb-09, at 7:02 AM, PowerMan wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>            
>>>>>>>>>>> I do it as the follow steps:
>>>>>>>>>>> 1. download QEMU from  http://bellard.org/qemu/qemu-0.9.1- 
>>>>>>>>>>> i386.tar.gz
>>>>>>>>>>> 2. install it
>>>>>>>>>>>     tar xfz qemu-0.9.1-i386.tar.gz -C /
>>>>>>>>>>> 3. download rtems floppy image from ftp server :
>>>>>>>>>>>     ftp://ftp.rtems.com/pub/rtems/qemu/i386-pc/rtems-boot.img
>>>>>>>>>>> 4. download 
>>>>>>>>>>> ftp://ftp.rtems.com/pub/rtems/qemu/i386-pc/rtems- grub.cfg
>>>>>>>>>>>     and copy it to my root directory /
>>>>>>>>>>> 5. mkdir /capture
>>>>>>>>>>>    cp hello.exe /capture/capture.exe
>>>>>>>>>>> 6. run qemu
>>>>>>>>>>>     qemu -fda rtems-boot.img -boot a -hda /dev/sda
>>>>>>>>>>>
>>>>>>>>>>> but the capture.exe (which is actually helloworld I build  
>>>>>>>>>>> with  rtems-4.7.3) does not run as I excepted.
>>>>>>>>>>> This capture.exe could run on my host by modifying 
>>>>>>>>>>> /boot/grub/ menu.lst
>>>>>>>>>>> I type the following commands in grub:
>>>>>>>>>>> grub> set root=(hd0,0)
>>>>>>>>>>> grub> set kernel=/capture/capture.exe
>>>>>>>>>>> grub> boot
>>>>>>>>>>>
>>>>>>>>>>> then grub told me:
>>>>>>>>>>> error: no loaded kernel
>>>>>>>>>>>
>>>>>>>>>>> I type the following commands in grub:
>>>>>>>>>>> grub> set root=(hd0,0)
>>>>>>>>>>> grub> multiboot /capture/capture.exe
>>>>>>>>>>>
>>>>>>>>>>> then grub told me:
>>>>>>>>>>> error: Couldn't open file
>>>>>>>>>>>
>>>>>>>>>>> Could somebody help me?
>>>>>>>>>>>
>>>>>>>>>>> My host is openSUSE 11.1, my disk information is:
>>>>>>>>>>> /dev/sda1              3091312    516528   2417752  18% /
>>>>>>>>>>> udev                    252876      5428    247448   3% /dev
>>>>>>>>>>> /dev/sda8              3605268    153972   3268160   5% /home
>>>>>>>>>>> /dev/sda7              1130540    221192    851920  21% /tmp
>>>>>>>>>>> /dev/sda9              6412052   3541120   2545216  59% /usr
>>>>>>>>>>> /dev/sda6              1130540    193556    879556  19% /var
>>>>>>>>>>>
>>>>>>>>>>> I type the following commands in grub:
>>>>>>>>>>> grub> ls
>>>>>>>>>>>
>>>>>>>>>>> then grub told me:
>>>>>>>>>>> (fd0) (hd0) (hd0,0) (hd0,4) (hd0,5) (hd0,6) (hd0,7) (hd0,8)
>>>>>>>>>>>
>>>>>>>>>>> they didn't match my host disk partition number
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>                 
>>>>>>>>>> Grub is not a requirement for using Qemu, and may actually  
>>>>>>>>>> complicate  the matter.
>>>>>>>>>>
>>>>>>>>>> I've had success with variations on the following command:
>>>>>>>>>>
>>>>>>>>>>     qemu -no-reboot -m 128 -boot n -tftp /path/to/exe/parent/ 
>>>>>>>>>> directory - bootp /yourRtemsApp.exe -serial stdio
>>>>>>>>>>
>>>>>>>>>>               
>>>>>>>>> I can make this work for hello and ticker but not for networked
>>>>>>>>> applications.  Do you have a way to run networked applications
>>>>>>>>> this way?
>>>>>>>>>
>>>>>>>>>             
>>>>>>>> Nope. Sorry. I haven't found the magic qemu-cmdline/network- 
>>>>>>>> config combo yet. It has been awhile since I was playing 
>>>>>>>> around  with Qemu and networked RTEMS apps, but I recall that 
>>>>>>>> one of the  problems for me was that mac os x has no concept of 
>>>>>>>> tun/tap  interfaces (at least not natively; there is a 
>>>>>>>> third-party driver,  but I had no luck with it).
>>>>>>>>
>>>>>>>> I'll revisit things tonight and see if I figure anything out.
>>>>>>>>
>>>>>>>>
>>>>>>>>           
>>>>>>> I can run networked applications just not after using tftp/bootp.
>>>>>>> I have to boot them from a floppy.
>>>>>>>
>>>>>>> I am curious if the Intel FXP driver works on qemu.  :)
>>>>>>>
>>>>>>>      
>>>>>>>>> I am trying to have some demos for a GSoC/RTEMS presentation
>>>>>>>>> on Monday at University of Tennessee at Chattanooga and was
>>>>>>>>> actually trying this out today. :)
>>>>>>>>>
>>>>>>>>> --joel
>>>>>>>>>
>>>>>>>>>             
>>>>>>>         
>>>>>> -- 
>>>>>> Joel Sherrill, Ph.D.             Director of Research & Development
>>>>>> joel.sherrill at OARcorp.com        On-Line Applications Research
>>>>>> Ask me about RTEMS: a free RTOS  Huntsville AL 35805
>>>>>>   Support Available             (256) 722-9985
>>>>>>
>>>>>>
>>>>>>       
>>>>> _______________________________________________
>>>>> rtems-users mailing list
>>>>> rtems-users at rtems.com
>>>>> http://rtems.rtems.org/mailman/listinfo/rtems-users
>>>>>     
>>>>
>>>>   
>>>
>>>
>>
>




More information about the users mailing list