|
#1
|
||||
|
||||
|
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 Last edited by vmlemon; 2009-11-11 at 11:01. |
|
#2
|
||||
|
||||
|
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. |
|
#3
|
||||
|
||||
|
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. |
|
#4
|
||||
|
||||
|
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.
|
|
#5
|
||||
|
||||
|
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
|
|
#6
|
||||
|
||||
|
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.
|
|
#7
|
||||
|
||||
|
Thanks for the tip, cdavies. Where/how would I include said file in the ROM image, out of interest?
|
|
#8
|
||||
|
||||
|
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.
|
|
#9
|
||||
|
||||
|
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 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 |
|
#10
|
||||
|
||||
|
Give it a fully qualified path to the config file. I don't think concepts like the PWD are very supported in eshell
|
|
#11
|
||||
|
||||
|
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. |
|
#12
|
||||
|
||||
|
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.
|
|
#13
|
||||
|
||||
|
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. |
|
#14
|
||||
|
||||
|
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. |
|
#15
|
||||
|
||||
|
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 Tyson |
|
#16
|
||||
|
||||
|
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. Last edited by vmlemon; 2009-11-12 at 20:16. Reason: Replace the attachment with the correct file... |
|
#17
|
||||
|
||||
|
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. |
|
#18
|
||||
|
||||
|
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 |
|
#19
|
||||
|
||||
|
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? |
|
#20
|
||||
|
||||
|
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... :( |
|
#21
|
||||
|
||||
|
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 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) |
|
#22
|
||||
|
||||
|
Wild stab in the dark here, is the central repository server (centralrepositorysrv.exe) in your ROM, and not just the client DLL?
|
|
#23
|
||||
|
||||
|
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 |
![]() |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|