Symbian developer community

Forums

Reply
 
Thread Tools Display Modes
  #1  
Old 2009-11-10, 23:27
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default ZSH and PIPS on Syborg - The Grand Adventure

It seems that I've managed to get slightly closer to the goal of running ZSH under Syborg using the binaries supplied in PDK 3.0.b, after spending hours figuring out the Right Combination of DLLs and executables using ROMbuild and sifting through a dozen "trace /l 4" dump files...

Sadly, it seems that ZSH just hangs and refuses to accept keyboard input, after execution, unless it's expecting said input to come from a source other than the emulated QEMU keyboard.

In order to get to this stage, I ended up extending the OBY file from my previous EUserHL ROM image with 46 additional DLLs (mostly related to the telephony and Bluetooth stacks of all things), and 5 additional executables...

If anyone else wants to attempt this, and see if they can be more successful, the additional code (assuming the use of a clean copy of the existing TShell.OBY file) is included:
Code:
/* Hmm, who knew that we'd need to dragnet pretty much all of ETel, the Bluetooth stack, and parts of the IrDA stack for a shell?

As a bonus, we also include EUserHL and EStor to make the EUserHL_Walkthrough happy.
*/

file=\epoc32\release\armv5\udeb\estor.dll \sys\bin\estor.dll
file=\epoc32\release\armv5\udeb\euserhl.dll \sys\bin\euserhl.dll
file=\epoc32\release\armv5\udeb\libc.dll \sys\bin\libc.dll
file=\epoc32\release\armv5\udeb\libdl.dll \sys\bin\libdl.dll
file=\epoc32\release\armv5\udeb\libm.dll \sys\bin\libm.dll
file=\epoc32\release\armv5\udeb\libpthread.dll \sys\bin\libpthread.dll
file=\epoc32\release\armv5\udeb\backend.dll \sys\bin\backend.dll
file=\epoc32\release\armv5\udeb\bafl.dll \sys\bin\bafl.dll
file=\epoc32\release\armv5\udeb\charconv.dll \sys\bin\charconv.dll
file=\epoc32\release\armv5\udeb\esock.dll \sys\bin\esock.dll
file=\epoc32\release\armv5\udeb\comsdbgutil.dll \sys\bin\comsdbgutil.dll
file=\epoc32\release\armv5\udeb\comsdbgsvr.dll \sys\bin\comsdbgsvr.dll
file=\epoc32\release\armv5\udeb\ostuser.dll \sys\bin\ostuser.dll
file=\epoc32\release\armv5\udeb\hciserverclient.dll \sys\bin\hciserverclient.dll
file=\epoc32\release\armv5\udeb\esocksvr.dll \sys\bin\esocksvr.dll
file=\epoc32\release\armv5\udeb\esockmessagesimpl.dll \sys\bin\esockmessagesimpl.dll
file=\epoc32\release\armv5\udeb\tzclient.dll \sys\bin\tzclient.dll
file=\epoc32\release\armv5\udeb\bluetooth.dll \sys\bin\bluetooth.dll
file=\epoc32\release\armv5\udeb\btdevice.dll \sys\bin\btdevice.dll
file=\epoc32\release\armv5\udeb\btlogger.dll \sys\bin\btlogger.dll
file=\epoc32\release\armv5\udeb\insock.dll \sys\bin\insock.dll
file=\epoc32\release\armv5\udeb\netsm.dll \sys\bin\netsm.dll
file=\epoc32\release\armv5\udeb\serverden.dll \sys\bin\serverden.dll
file=\epoc32\release\armv5\udeb\netmeta.dll \sys\bin\netmeta.dll
file=\epoc32\release\armv5\udeb\netinterfaces.dll \sys\bin\netinterfaces.dll
file=\epoc32\release\armv5\udeb\c32.dll \sys\bin\c32.dll
file=\epoc32\release\armv5\udeb\dial.dll \sys\bin\dial.dll
file=\epoc32\release\armv5\udeb\c32root.dll \sys\bin\c32root.dll
file=\epoc32\release\armv5\udeb\commdb.dll \sys\bin\commdb.dll
file=\epoc32\release\armv5\udeb\responsemsg.dll \sys\bin\responsemsg.dll
file=\epoc32\release\armv5\udeb\commsdat.dll \sys\bin\commsdat.dll
file=\epoc32\release\armv5\udeb\commsbufs.dll \sys\bin\commsbufs.dll
file=\epoc32\release\armv5\udeb\commsfw.dll \sys\bin\commsfw.dll
file=\epoc32\release\armv5\udeb\eirclient.dll \sys\bin\eirclient.dll
file=\epoc32\release\armv5\udeb\commsdataobjects.dll \sys\bin\commsdataobjects.dll
file=\epoc32\release\armv5\udeb\mbufmgr.dll \sys\bin\mbufmgr.dll
file=\epoc32\release\armv5\udeb\meshmachine.dll \sys\bin\meshmachine.dll
file=\epoc32\release\armv5\udeb\esock_api_ext.dll \sys\bin\esock_api_ext.dll
file=\epoc32\release\armv5\udeb\virtualconstructors.dll \sys\bin\virtualconstructors.dll
file=\epoc32\release\armv5\udeb\shimnotifiercli.dll \sys\bin\shimnotifiercli.dll
file=\epoc32\release\armv5\udeb\cflog.dll \sys\bin\cflog.dll
file=\epoc32\release\armv5\udeb\timezonelocalization.dll \sys\bin\timezonelocalization.dll
file=\epoc32\release\armv5\udeb\centralrepository.dll \sys\bin\centralrepository.dll
file=\epoc32\release\armv5\udeb\ecom.dll \sys\bin\ecom.dll
file=\epoc32\release\armv5\udeb\nodemessages.dll \sys\bin\nodemessages.dll
file=\epoc32\release\armv5\udeb\factories.dll \sys\bin\factories.dll
file=\epoc32\release\armv5\udeb\ecompatchdata.dll \sys\bin\ecompatchdata.dll
file=\epoc32\release\armv5\udeb\edbms.dll \sys\bin\edbms.dll
file=\epoc32\release\armv5\udeb\zsh.exe \sys\bin\zsh.exe

/* Apparently, this isn't enough to satisfy ZSH at runtime, although it pacifies the ROM building tool...
   We're going to need a lot more, if 'trace /l 4' is anything to go by...
*/


file=\epoc32\release\armv5\udeb\SignalServer.EXE \sys\bin\SignalServer.EXE
file=\epoc32\release\armv5\udeb\COMSDBGSVR.EXE \sys\bin\COMSDBGSVR.EXE
file=\epoc32\release\armv5\udeb\C32start.exe \sys\bin\C32start.exe
file=\epoc32\release\armv5\udeb\stdioserver.EXE \sys\bin\stdioserver.EXE
Tyson.

Last edited by vmlemon; 2009-11-11 at 11:01.
Reply With Quote
  #2  
Old 2009-11-11, 11:43
markw's Avatar
markw markw is offline
Staff
 
Join Date: 2009 Mar
Posts: 608
Default

Is ZSH actually expecting to be used remotely via telnet?

http://developer.symbian.org/wiki/in...netd_guide.chm

FYI, Accenture have a shell (called fshell) and related tools that are designed to run in a fairly limited environment (kernel & hardware services package, baseport, P.I.P.S. and not much more) that they're planning to contribute, although who knows how long that will take, so this is certainly a useful initiative!

Last edited by markw; 2009-11-11 at 11:45.
Reply With Quote
  #3  
Old 2009-11-11, 12:25
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Hi Mark,
Thanks for the update on the potential contribution. I had a hunch that the ZSH port was designed to accept input from the TCP/IP stack via Telnet, although given that there isn't a driver for the QEMU synthetic Ethernet device (as far as I know), I can't confirm/test that.

Tyson.
Reply With Quote
  #4  
Old 2009-11-11, 12:30
markw's Avatar
markw markw is offline
Staff
 
Join Date: 2009 Mar
Posts: 608
Default

Syborg does have an ethernet driver - just look in the baseport code. The story on that is that is works for ping, but will almost certainly need improvements for real data transfer. It hasn't been properly tested. Might be a good place to start digging around, if you can get the telnet daemon properly configured to use it.
Reply With Quote
  #5  
Old 2009-11-11, 20:46
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

For what it's worth, the ZIP port also seems to exhibit identical behaviour as far as shell I/O handling is concerned. I guess it's time to investigate the tools for configuring the IPv4 and Ethernet stack, and figure out how to interface them with the baseport drivers...

In the meantime, to play with ZIP, add the following to the (decidedly huge and bloated) example in the initial post:
Code:
/* Components required for ZIP.exe - builds upon the stuff we imported for ZSH.
    ZIP.exe can either go inside the ROM if you add the necessary file= line, or be 
    placed at \svphostfs\sys\bin
*/
file=\epoc32\release\armv5\udeb\ezlib.dll \sys\bin\ezlib.dll
file=\epoc32\release\armv5\udeb\libzcore.dll \sys\bin\libzcore.dll
Reply With Quote
  #6  
Old 2009-11-11, 21:08
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

There's actually a commdb configuration file included with the PDK, it's under /epoc32/rom/syborg/syborg.cfg, though it isn't actually complete. It's currently set to use NT RAS, and to prompt for an IAP selection which isn't appropriate for textshell ROMs. Switch it over to DONOTPROMPT and the Syborg virtual ethernet IAP and it might even work out of the box. I haven't tried this yet, so take this with a pinch of salt.
Reply With Quote
  #7  
Old 2009-11-11, 21:42
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Thanks for the tip, cdavies. Where/how would I include said file in the ROM image, out of interest?
Reply With Quote
  #8  
Old 2009-11-11, 21:58
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Anywhere you like, or on the S: drive. The text configuration file is input for ced.exe to compile in to a commdb for you. Just include ced.exe in your ROM, and then at the shell invoke ced -i s:\path\to\syborg.cfg to get a working commdb. You'll have to do that every run, since the C drive doesn't persist.
Reply With Quote
  #9  
Old 2009-11-11, 22:32
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Thanks. I've just tweaked a copy of the syborg.cfg file, baked it into a ROM, and tested "ced -i syborg-veth1.cfg" within drive Z:, only for a ced.log file containing the following to be produced in the C: drive:

Code:
 
====================================================
CommsDat Configuration Utility
====================================================
 
Processing configuration from [syborg-veth1.cfg]
The config file is in CFG format 
MESHINFO: Checking if input file <syborg-veth1.cfg> is mesh compatible
MESHERR: Configuration file [syborg-veth1.cfg] could not be opened
===================
ERROR
MESHERR: Configuration file [syborg-veth1.cfg], processing failed, reason=<-1>
===================
ERROR
Attached is the said file, which was included in the ROM image using:
Code:
/* CommDB stuff */
file=\epoc32\release\armv5\udeb\ced.exe \sys\bin\ced.exe
file=\epoc32\release\armv5\udeb\xmlframework.dll \sys\bin\xmlframework.dll
data=\epoc32\rom\syborg\syborg-veth1.cfg \syborg-veth1.cfg
Attached Files
File Type: zip syborg-veth1.zip (4.6 KB, 1 views)
Reply With Quote
  #10  
Old 2009-11-11, 22:40
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Give it a fully qualified path to the config file. I don't think concepts like the PWD are very supported in eshell
Reply With Quote
  #11  
Old 2009-11-11, 22:55
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Fun times ahead - EShell on Syborg, or at least the Platform keyboard driver doesn't seem to like my rather contorted keymapping configuration as it stands...

I'm using a Mac OS X host with the UK keyboard mapping set, with a UK PC/Windows keyboard, and running Windows XP under VirtualBox, where it seems that the backslash keycode is blackholed, so I have to use a US layout there. However, it seems that the backslash keycode never gets passed through QEMU into EShell, or at least it acts like a dead key - so it's impossible to type a backslash.

Looks like I might need to have another go at recompiling the baseport/keyboard driver with the US_KEYBOARD switch macro set, and hope that the process doesn't bail out again.

I "love" how little things like this end up making mountains out of molehills... Oh well.
Reply With Quote
  #12  
Old 2009-11-11, 23:49
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Yay, and the entire baseport and ROM image have just finished rebuilding, for the one-line change necessary to switch keyboard layouts... Now to test CED again.
Reply With Quote
  #13  
Old 2009-11-12, 04:57
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Oh, just got around to glancing at your cfg file. Did you really mean IAP=5? The Syborg ethernet IAP is #16.

(Oh, yes, and change the bearerset to "LAN")

Last edited by cdavies; 2009-11-12 at 05:01.
Reply With Quote
  #14  
Old 2009-11-12, 10:41
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Thanks, it was an oversight on my part.

It looks like the posted file still doesn't load, if I use an absolute path, although I don't have the error log available here.
I assume that it's related to linebreaks, or a syntax error somewhere, for what it's worth. I'll have another go tonight, and report back.
Reply With Quote
  #15  
Old 2009-11-12, 19:46
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Here's the log that I meant to post last night (after invoking CED with an absolute path to syborg-veth1.cfg):
Code:
 
====================================================
CommsDat Configuration Utility
====================================================
 
Processing configuration from [Z:\syborg-veth1.cfg]
The config file is in CFG format 
MESHINFO: Checking if input file <Z:\syborg-veth1.cfg> is mesh compatible
 
Parsing TierTable Table
 
Parsing MCprTable Table
 
Parsing CprTable Table
 
Parsing SCprTable Table
 
Parsing ProtocolTable Table
 
Parsing BearerTypeTable Table
 
Parsing ConfigAccessPointTable Table
MESHINFO: Configuration file [Z:\syborg-veth1.cfg] is not mesh-compatible, inserting default meshtables
MESHERR: Configuration file [z:\system\data\meshpreface1.cfg] could not be opened
===================
ERROR
I'll post later, once I've tested the new IAP, and had a play with changing the linebreaks on the file...

Tyson
Reply With Quote
  #16  
Old 2009-11-12, 20:13
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Probably bad form to reply to my own post so soon...

I've just updated the syborg-veth1.cfg file to use the new IAP, and had a play with the linebreaks (which doesn't seem to have made a difference, as far as the result is concerned).

Does anyone know how I can go about creating a meshpreface1.cfg file to pacify CED? Assuming that an empty file won't do the trick, that is...

Thanks.
Attached Files
File Type: zip syborg-veth1.zip (4.5 KB, 1 views)

Last edited by vmlemon; 2009-11-12 at 20:16. Reason: Replace the attachment with the correct file...
Reply With Quote
  #17  
Old 2009-11-12, 20:19
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Nick it from the winscw emulator. /epoc32/release/winscw/u[deb|rel]/z/system/data/
(Or I suppose, more properly, from /epoc32/data/z/system/data)

Last edited by cdavies; 2009-11-12 at 20:24.
Reply With Quote
  #18  
Old 2009-11-12, 20:29
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Thanks, that makes it shut up, at the cost of introducing a new error.

Code:
 
====================================================
CommsDat Configuration Utility
====================================================
 
Processing configuration from [Z:\system\data\syborg-veth1.cfg]
The config file is in CFG format 
MESHINFO: Checking if input file <Z:\system\data\syborg-veth1.cfg> is mesh compatible
MESHERR: Configuration file [Z:\system\data\syborg-veth1.cfg] could not be opened
===================
ERROR
MESHERR: Configuration file [Z:\system\data\syborg-veth1.cfg], processing failed, reason=<-1>
===================
ERROR
I wonder if now's a good time to dig through "trace /l 4" log data to see if anything useful comes up...
Reply With Quote
  #19  
Old 2009-11-12, 20:32
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Along the lines of "is it plugged in, is it switched on", it looks to me like it's bitching that the configuration file you're telling it to use doesn't exist.

Since last time you invoked it the cfg file lived under the z: root, are you sure it now lives under z:\system\data?
Reply With Quote
  #20  
Old 2009-11-12, 20:34
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Heh, I guess I can blame stupidity for the last post - it turns out that ROMbuild hadn't actually built the new ROM containing the moved syborg-veth1.cfg file, or the meshpreface1.cfg file, since it conked out trying to locate it. (Was trying to import from \epoc32\release\winscw\urel\z\system\data\meshpreface1.cfg, which doesn't exist).

Last edited by vmlemon; 2009-11-12 at 20:46. Reason: Fix a glaring typo. I shouldn't really post whilst tired... :(
Reply With Quote
  #21  
Old 2009-11-12, 20:45
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Third time's a charm, as usual.

I ended up using:
Code:
/* CommDB stuff */
file=\epoc32\release\armv5\udeb\ced.exe \sys\bin\ced.exe
file=\epoc32\release\armv5\udeb\xmlframework.dll \sys\bin\xmlframework.dll
data=\epoc32\rom\syborg\syborg-veth1.cfg \system\data\syborg-veth1.cfg
data=\epoc32\data\z\system\data\meshpreface1.cfg \system\data\meshpreface1.cfg
Which resulted in a ROM image with the files in the correct location, this time around.

As for CED, we get:
Code:
 
====================================================
CommsDat Configuration Utility
====================================================
 
Processing configuration from [Z:\system\data\syborg-veth1.cfg]
The config file is in CFG format 
MESHINFO: Checking if input file <Z:\system\data\syborg-veth1.cfg> is mesh compatible
 
Parsing TierTable Table
 
Parsing MCprTable Table
 
Parsing CprTable Table
 
Parsing SCprTable Table
 
Parsing ProtocolTable Table
 
Parsing BearerTypeTable Table
 
Parsing ConfigAccessPointTable Table
MESHINFO: Configuration file [Z:\system\data\syborg-veth1.cfg] is not mesh-compatible, inserting default meshtables
The old database will be replaced 
Failed to create Central Repository with ID : cccccc00   (error -1)
Which I suppose is marginal progress. I guess trying to run it again, with the files on the S: drive would be a good idea...
Reply With Quote
  #22  
Old 2009-11-12, 21:43
cdavies's Avatar
cdavies cdavies is offline
Symbian Foundation Community Member
 
Join Date: 2009 Jun
Posts: 235
Default

Wild stab in the dark here, is the central repository server (centralrepositorysrv.exe) in your ROM, and not just the client DLL?
Reply With Quote
  #23  
Old 2009-11-13, 01:12
vmlemon's Avatar
vmlemon vmlemon is offline
Symbian Foundation Community Member
 
Join Date: 2009 May
Location: United Kingdom
Posts: 39
Default

Thanks for the centralrepositorysrv.exe suggestion. I added it to my OBY file, along with dependencies, and rebuilt the ROM. Sadly, it seems that the same error was produced, although a series of additional files were created after either CED runtime, or boot, although I couldn't document them in time, since my laptop decided to overheat and crash a few minutes afterwards...

For reference, said dependencies are listed, as are the initial CED-related files:
Code:
/* CommDB stuff */
file=\epoc32\release\armv5\udeb\ced.exe \sys\bin\ced.exe
file=\epoc32\release\armv5\udeb\xmlframework.dll \sys\bin\xmlframework.dll
file=\epoc32\release\armv5\udeb\centralrepositorysrv.exe \sys\bin\centralrepositorysrv.exe
file=\epoc32\release\armv5\udeb\abclient.dll \sys\bin\abclient.dll
file=\epoc32\release\armv5\udeb\bsulinifile.dll \sys\bin\bsulinifile.dll
file=\epoc32\release\armv5\udeb\sysutil.dll \sys\bin\sysutil.dll
file=\epoc32\release\armv5\udeb\bsul.dll \sys\bin\bsul.dll
data=\epoc32\rom\syborg\syborg-veth1.cfg \system\data\syborg-veth1.cfg
data=\epoc32\data\z\system\data\meshpreface1.cfg \system\data\meshpreface1.cfg
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads.
You may not post replies.
You may not post attachments.
You may not edit your posts.

BB code is On.
Smilies are On.
[IMG] code is On.
HTML code is Off.


Forum Jump

Powered by vBulletin Copyright © 2010 vBulletin Solutions, Inc.