source: trunk/doc/Readme.txt@ 4114

Last change on this file since 4114 was 3868, checked in by sandervl, 25 years ago

updated installation instructions in readme

File size: 17.1 KB
Line 
1
2 O D I N Public Alpha 5 - 1999/11/16
3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4
5WANTED: We are still looking for talented developers that want to
6 contribute! Please take a look at the last section!
7
8NOTE: LICENSE.TXT describes the Project Odin Software License.
9
10
11Project Odin Information
12========================
13
141.0 Introduction
15----------------
16
17This readme is intended for end users that have downloaded the
18latest public alpha release and want to give it a try. For more
19information, be sure to regularly check http://www.netlabs.org/odin.
20
211.1 Purpose
22-----------
23
24Odin is a free Open Source project with the goal to eventually
25provide a fully working Win32 (Win 95/98/NT/2000) runtime environment,
26making it possible to run your favorite Windows programs under OS/2,
27as if they were native OS/2 programs. The second goal of Odin is to
28provide the full Win32 application programming interface (API) so
29that it is possible to build OS/2 programs using Windows source
30code. This is also refered to as Odin32 whereas Odin is the name
31of the Win32 binary emulator.
32
331.2 Current Status
34------------------
35
36Odin is still in the early alpha state so that it is very far from
37being widely usable. Most programs will not work or show many
38problems. Even though it is not usable for most programs, we have
39decided to do a public release in order to show how much progress
40the project has been made. A second goal is to attract more developers
41in order to speedup development. Our job includes rewriting most
42parts of Windows 95/NT without having the original source code so
43the more developers we have the more progess will be seen. The
44last public release (Alpha 0.004) has been in 1997 and the project
45has changed much since then. Everything is free and Open Source now
46and the base architecture has been improved quite a lot. We are now
47in a position where we can expect the first bigger applications to
48run well and to make much more visible progress.
49
501.3 Changes and additions in alpha 5
51------------------------------------
52- Removed Open32 dependacy in User32 code: windows, dialogs, buttons and
53 other controls creation and manipulation is now implemented fully in Odin32.
54 Applications have Win32 look: Win32 specific controls are also supported
55 (Open32 is still a requirement as other Odin32 functions use it!)
56- New and improved PE2LX converter
57- New Portable Executable Loader (PE) that overcomes some differences
58 between OS/2 and Win32 memory models (this does not include 512MB
59 per-process memory limitation in OS/2, you still need the Aurora-level
60 kernel for that)
61- New WIN32K32k.SYS driver that automates loading of Win32 binaries (no
62 conversion or invocation through PE.EXE loader is needed), now
63 compatible with WSeB (Aurora) and no longer dependant of code under
64 GNU license
65- Wine ports of common controls (comctl32), shell extensions (shell32) and
66 OLE
67- Full implementation of memory mapped files
68- Joystick support (winmm)
69- Direct Input (DirectX keyboard & mouse) added (Wine Port)
70- Rewrite of DirectDraw. More complete implementation.
71- Couple of (not core Win32 API, but often used) new DLLs (winasp32, lz32,
72 avifil32...), so users don't have to have Windows license at all to run
73 Windows programs
74- Many new API functions implemented or ported from Wine, allows
75 developers to port Win32 apps directly to OS/2 with little to no rewriting
76- Many bugfixes and enhancements
77- Many new programs that load and/or work with Odin
78- Full source code available
79
802.0 Installing Odin (UPDATED)
81-----------------------------
82
83Odin daily builds are now also distributed as WarpIn archives.
84WarpIn is a generic OS/2 installation application that can be
85downloaded from warpin.netlabs.org.
86
87To install Odin run warpin.exe with the name of the daily build archive
88as parameter.
89Follow the instructions to complete the installation.
90The Odin installation consists of:
91 - creating an Odin directory and copying the included files to
92 x:\odin and x:\odin\system32
93 - creating empty directories in x:\odin (to create a similar directory
94 structure as found in Windows)
95 - creating a basic registry for executing win32 applications in OS/2
96 - adds x:\odin\system32 to the path and libpath settings in your config.sys
97
98NOTE: You MUST install Odin at least once using WarpIn (unless you know
99 what you're doing). Afterwards you can use the daily build zipfiles
100 to upgrade to a newer version.
101
102To run DirectDraw games or Quake 2 in Voodoo mode, you must install Holger
103Veit's XFree86/2 support driver (XF86SUP.SYS).
104Visit http://ais.gmd.de/~veit/os2/xf86sup.html to download it.
105
1062.0.1 Log files
107---------------
108The alpha 5 binaries and daily build zipfiles can generate logfiles to show
109what a win32 application is doing. This can be very useful to determine
110why certain applications don't run correctly.
111
112The major disadvantage of loggging is the overhead. Therefor it has been
113disabled by default in the alpha 5 release and daily builds.
114To enable logging set the environment variable WIN32LOG_ENABLED:
115 SET WIN32LOG_ENABLED=1
116
117To disable logging again, you must clear this variable:
118 SET WIN32LOG_ENABLED=
119
1202.1 Using Odin to run your Windows applications
121-----------------------------------------------
122
123Odin still has several ways to execute Win32 programs.
124
125
1262.2 The Ring3 Win32 Loader (PE.EXE)
127----------------------------------
128
129This is the new and also recommended method for loading programs.
130Unlike with the previous alphas, it is not required to convert or
131anyhow change the original files. Installing a device driver is
132also not necessary. Be sure to put the Odin binary directory into
133both the PATH and LIBPATH (alternatively you can use a batch file
134with SET PATH=C:\Odin;%PATH% and SET BEGINLIBPATH=C:\Odin;)
135and then call pe.exe winprog.exe param1 param2 ... If you wanted
136to start the Windows calculator, you would type
137
138pe calc
139
140The PE (Portable Executable, the Win32 executable format) loader
141will now try to load the application into memory and execute it.
142This will either work or fail with a loader message. If you get
143such a loader message, it is very likely that a required DLL is
144missing. To correct that problem, take a look at pe_0.log (or
145pe_1.log for the second program running at this time and so on).
146At the bottom of the file you will see the DLLs and the functions
147that the loader imports. It will tell you if it couldn't find a
148DLL and you can correct the problem and try it again.
149
150
1512.2.1 PE loader issues
152----------------------
153
154As the PE loader will create the process and load the program,
155a process utility such as pstat will always show PE.EXE as the
156executable file.
157It is also possible that a certain Win32 application becomes
158a zombie (that is when it does certain things the OS/2 kernel
159cannot recover such as die when waiting on a semaphore). Then
160it will not be possible to kill the application - only a system
161restart will help.
162Certain programs do use fixed memory addresses where they need
163to be loaded (i.e. they won't use fixups). You can notice this
164at the top of the loader log file (pe_0.log). If the fixed address
165is above the 512MB barrier present in Warp 4 and Warp 3, the
166program can not be run under these system. On Aurora (Warp Server
167for e-business) this limitation has been removed. Programs known
168to fall under this category are Microsoft Office (also the
169Office viewers) and other mainly Microsoft programs.
170
171
1722.3 The Ring0 conversion utility driver (WIN32K.SYS)
173----------------------------------------------------
174
175The win32k.sys driver makes PE (Win32) executables equal to native OS/2
176executables by implementing a Ring 0 on-the-fly converter. The converter is
177Pe2Lx.exe. So, everything that works with Pe2Lx will probably work with
178win32k.sys. And vice versa, when Pe2lx can't handle it, win32k.sys won't either.
179
180You may wonder how you may run a Win32 program using a device driver. You
181don't have to worry about that, simply treat the Win32 program just as an
182another OS/2 program. OS/2 can't tell the difference!
183No conversion of dlls or running programs thru Pe.EXE.
184
185For example, if you fancy playing windows solitaire.
186 1) Make sure the necessary DLLs are in you (BEGIN/END)LIBPATH,
187 and that SOL.EXE is in the current directory or the directory you
188 specify.
189
190 2) Then start SOL.EXE by simply typing SOL.EXE (with path if necessary).
191 It's also possible to start SOL.EXE from the desktop if you like.
192 Simply find the SOL.EXE icon (or create it) and double click on it!
193
194
1952.3.1 WARNING
196-------------
197
198The Win32k.sys is alpha software and any bugs which haven't been found
199yet may crash and/or corrupt you entire system! Make sure you have backed up
200important stuff first!
201
202We are not responsible for ANYTHING AT ALL! See Odin32 disclaimer...
203
204Before you install win32k.sys make sure that you have a backdoor to your system
205which works. For example try to boot your system using the Alt+F1 during bootup
206and choose Commandline boot (F2). Make sure you have an textmode editor which
207works; for example TEDIT.EXE.
208
209
2102.3.2 Requirements
211------------------
212
213Win32k should work on any Warp 4 or Warp Server for e-business installations
214which Odin32 works on. It requires only one thing, a kernel symbol file. The
215kernel symbol is looked for in \OS2\PDPSI\PMDF\WARP4 and
216\OS2\PDPSI\PMDF\WARP45_U/S. All warp 4 and WE4eB installations should have
217those direcotries (we hope). It is updated when you install a new fixpack - so
218there is really nothing to worry about for the common user.
219
220For those playing with debug-kernels, make sure that OS2KRNL.SYM is matching
221the running kernel, while this file too is investigated. (The complete list
222is found in src\Win32k\dev16\probkrnl.c,apszSym[] - odin32 source tree.)
223
224
2252.3.2.1 Warp 3
226--------------
227
228Win32k is not tested with Warp 3. It is supposed to work with Warp 3 provided
229that the os2krnl.sym file is present. Warp Server 4 has this, common Warp 3
230doesn't.
231
232
2332.3.3 Installation
234------------------
235
236To use Win32k.sys you have to add the following line into your config.sys:
237 device=<d:\path\>win32k.sys
238
239Where <d:\path\> is the path to the win32k.sys, i.e. the odin32 executables
240directory.
241
242After doing this, you'll have to reboot your machine to load the driver. During
243the boot process you will on a successful installation see some lines of
244technical info and finally a line saying:
245 'Win32k.sys succesfully initiated!'
246
247If you don't see the line above something is wrong.
248
249
2502.3.4 Win32k parameters
251-----------------------
252
253There are some useful parameters for Win32k:
254-Q Quiet driver initiation. (Default is verbose (-V) initiation.)
255-V Verbose driver initiation. Default.
256-S:<filename> Full path to the current OS/2 kernel symbol file.
257-K:<filename> Full path to the running OS/2 kernel.
258
259
2602.3.5 Rings - Ring 0 / Ring 3
261-----------------------------
262
263FYI. Ring 0 is the most priveleged level of execution in OS/2. The OS/2 kernel
264and device drivers execute at this level, while user applications execute in
265Ring 3, the least priveleged executing level.
266
267
2682.4 The Ring3 conversion utility (PE2LX.EXE)
269--------------------------------------------
270
271PE2LX.EXE was the first method of running Win32 programs under
272OS/2. It is still provided and also functional but it has been
273deprecated. Using it is only sensible for debugging certain
274problems as it requires all DLLs and EXEs to be converted into
275another file format thus changing the original Win32 files.
276
277
2783.0 Applications known to be working
279------------------------------------
280
281- Windows 95/NT Help Viewer (winhlp32.exe)
282- Windows 95/NT Registry Editor
283- Windows NT Solitaire (not the one from Windows 95)
284- Windows NT Freecell (not the one from Windows 95)
285- Windows 95/NT Calculator
286- Windows NT Pinball
287- Windows NT Minesweeper
288- Quake II
289- Red Alert
290- Professional Minesweeper
291- Windiff (part of Win32 SDK)
292
293Note that many other applications load and/or partly work.
294
2954.0 Reporting Problems and Successes
296------------------------------------
297
298In this early stage it is not required that you report every
299bug to the developers as we still have huge lists of to do items.
300However, an application compatibility database has been created
301at Netlabs where you can share your experiences with Odin.
302The application compatibility database can be found at
303
304http://www.netlabs.org/odin/appdatabase
305
306
307Project Odin Source Code Notes
308==============================
309
3101.0 Introduction
311----------------
312
313This readme is intended for making people more familiar with ODIN and to
314describe various aspects of the project such as accessing latest sources via
315cvs, building the binaries, running win32 applications, how to identify and
316report problems and bugs, as well as how to participate in this very
317promising project.
318
319
3201.1 Prerequisites:
321------------------
322
323Required compilers/tools:
324 - IBM VisualAge 3.0 (CTx8 fixpack applied)
325 (version 3.6 might also work, but version 4 is not
326 recommended)
327 - OS/2 Warp 4 Toolkit (project apparently doesn't compile with
328 VAC's OS/2 headers)
329 Might also work with EMX headers. (haven't tried this!)
330 - ALP 4.0 (IBM Assembly Language Processor)
331 Download the tools zipfile from http://service.boulder.ibm.com/ddk/
332 (you need to register, but it's free)
333 - Unix-like rm.exe (nmake clean)
334
335Changes from last source code release:
336 - Uses Wine headers and a stripped down version of os2win.h (Open32
337 header)
338 - All Open32 apis have the 'O32_' prefix.
339 - All Open32 declarations are appended with '_O32' (mostly due to
340 calling convention differences)
341 - nmake DEBUG=1 builds the debug version
342 nmake builds the release version
343 - Several dlls (i.e. USER32, KERNEL32, ADVAPI32) contain extra .def
344 files that are used to create libraries that contain the api names
345 as required by the linker when you use them. (_apiname@nrparameterbytes)
346
347Wine header notes:
348 - Several header files have been changed to make them usable for VAC
349 - Several header files contain bugfixes (mostly parameter type changes)
350 - Several header files include additional declarations
351 - At this time we don't intend to have our changes included in the
352 Wine codebase as header files are not likely to change often.
353
354Coding conventions:
355 - Do NOT directly call the Open32 apis unless you're writing
356 a wrapper for it.
357 - Do NOT include os2.h directly. Use os2wrap.h instead.
358 os2wrap.h contains all the OS/2 apis with a wrapper around it to save
359 and restore the selector in FS. (some OS/2 apis set it back to the
360 default value (150b))
361 - Use the correct Win32 api when there are two version (ascii & unicode)
362 Calling the standard one (SendMessage) causes a error during
363 compilation.
364 Use SendMessageA instead.
365 - Source code style will be decided on in the near future.
366
367
3682.0 Accessing ODIN source code via CVS
369--------------------------------------
370
371Please check out http://www.netlabs.org/ and http://www.netlabs.org/odin.
372
373
3743.0 Building the binaries
375-------------------------
376
377Basically, if your system setup meets above stated requirements, everything you
378need to do for a binary build is:
379
380 nmake DEBUG=1
381
382or alternatively
383
384 nmake release (not working right now!)
385
386As the current state of the project is still known to be alpha level, one should
387expect some functions not to work properly. Therefore, we recommend the use of
388the debug-version which creates long logfiles for problem determination purpose
389and to allow active debugging with debuggers such as IPMD, ICAT, KDB, etc.
390
391Please note if you do not want to suffer from the performance loss of writing
392logfiles, you can disable logging even with the debug binaries of ODIN by
393setting:
394
395 SET NOWIN32LOG=YES
396
397To enable logging again, clear this environment variable by typing:
398
399 SET NOWIN32LOG=
400
401Logging is enabled by default in the debug build, but disabled by default
402in the nodebuginfo build and not present in the release build.
403
4043.1 Build problems
405------------------
406
407ODIN is moving at a fast pace. Sometimes side effects of source dependencies may
408require you to do a full rebuild of the binaries instead of an incremental build.
409
410However, rarely it also happens the sources contained in the CVS repository do
411not build completely due to erroneous source code. Usually, this is fixed within
412two days at maximum.
413In such event, one can normally stick with the previous version of the particular
414module to further test win32 applications on ODIN.
415
416Please report such build problems through the appropriate channel.
417
418
4193.2 Downloading daily built binaries
420------------------------------------
421
422http://www.os2.org/ has setup an ftp server that hosts the automatically
423built binaries on daily basis. For people that do not have a suitable
424development setup for ODIN, we provide the latest binary code that way.
425
426
4274.0 Project participation
428-------------------------
429
430As ODIN became an open source project, everybody is kindly invited to
431contribute his/her share to the progress of the project. May it be
432active coding, fixing bugs or just providing detailed information about
433examined problems.
434
435We suggest you subscribe to win32os2-wai and the corresponsing mailing lists
436on http://www.egroups.com.
437In case you are interested in participating, every member of the project will
438be happy to give you direction to the right places and to give a personal
439introduction to further development of the particular modules.
440
Note: See TracBrowser for help on using the repository browser.