Chameleon

Chameleon Commit Details

Date:2010-10-31 02:06:07 (8 years 11 months ago)
Author:Azimutz
Commit:627
Parents: 626
Message:Literature update.
Changes:
M/branches/azimutz/Chazi/doc-azi/CHANGES.txt
M/branches/azimutz/Chazi/doc-azi/Modules.txt

File differences

branches/azimutz/Chazi/doc-azi/CHANGES.txt
11
22
3
3
44
5
5
66
77
88
......
1212
1313
1414
15
15
1616
1717
18
18
1919
20
20
2121
22
22
2323
24
24
2525
2626
2727
28
28
2929
30
30
3131
3232
3333
......
3636
3737
3838
39
39
4040
41
41
4242
4343
44
44
4545
4646
4747
4848
49
49
5050
51
51
5252
5353
5454
55
55
5656
57
57
5858
5959
60
60
6161
6262
6363
6464
6565
6666
67
67
6868
69
69
7070
7171
7272
......
7474
7575
7676
77
77
7878
79
79
8080
8181
8282
8383
84
84
8585
8686
87
87
8888
89
89
9090
9191
92
92
9393
9494
95
95
9696
97
97
9898
9999
100100
101101
102102
103
103
104104
105105
106106
107107
108
108
109109
110
110
111111
112112
113
113
114114
115115
116116
......
153153
154154
155155
156
156
157157
158158
159159
......
204204
205205
206206
207
207
208208
209
209
210210
211211
212212
213213
214214
215
215
216216
217
217
218218
219219
220
220
221221
222
222
223223
224224
225225
......
228228
229229
230230
231
231
232232
233
233
234234
235
235
236236
237
237
238238
239239
240240
241241
242
242
243243
244
244
245245
246246
247247
248248
249
249
250250
251251
252252
253
253
254254
255255
256256
......
259259
260260
261261
262
262
263263
264264
265
265
266266
267
267
268268
269269
270270
271271
272272
273273
274
274
275275
276
276
277277
278278
279279
......
283283
284284
285285
286
286
287287
288
288
289289
290290
291291
292
292
293293
294294
295
295
296296
297
297
298298
299299
300300
301301
302302
303303
304
304
305305
306
306
307307
308308
309309
......
312312
313313
314314
315
315
316316
317
317
318318
319319
320320
321321
322322
323323
324
324
325325
326
326
327327
328
328
329329
330330
331331
332332
333333
334334
335
335
336
337
338
339
336340
337341
338342
339
340
341
343
342344
343
345
344346
345347
346348
......
363365
364366
365367
366
368
367369
368370
371
372
373
374
375
376
377
378
379
380
369381
370382
371
372
373
383
384
385
374386
375387
376388
Note: this text doesn't use the "most recent layout" of the main Chameleon CHANGES file.
Also, not all the changes done on the code will end up here, for obvious reasons.
---------------//---------------//---------------
- (rev 299)
Change: added hands-off (without user intervention) setting of EFI32 values, for 32 bit only
processors. Works according to the architecture in use, either chosen by the booter or
arch (only arch on these systems), will still be EFI64, which causes absolutely no problem.
EFI32 values still can be forced by using the respective booter flag.
Tested only on Leopard.
Note: there's a typo on the comment of rev 299 commit;
RC3 should read RC4.
Motif: fixes http://forge.voodooprojects.org/p/chameleon/issues/21/.
Note: included on the trunk at revs 449 & 450 :) Thanks!
---------------//---------------//---------------
- (rev 320)
Change: using the original code i suggested to Mozodojo, for memory modules Part Number extraction.
(http://www.projectosx.com/forum/index.php?s=&showtopic=1337&view=findpost&p=8809)
Motif: If i don't do:
if (isspace(sPart[i]))
break;
and others i saw on some user reports.
If someone wishes to test this, contact me and i'll cook a booter to help debug
this behavior.
---------------//---------------//---------------
- (rev 321)
Change: a tweak that got hidden on this commit; changed RestartFix from true to false, by default.
Motif: this goes against at least one of my "Guidelines" for the booter!
(check README.txt). It's absolutely not needed by all users! If someone proves that this is
needed by more than 50% of the motherboards Chameleon needs to handle atm
(recommended OSx86 motherboards don't count), then i'll change it back to true.
---------------//---------------//---------------
- (rev 335) (REVERTED to trunk way, rev 520)
Change: merged the educational side of arch=i386 + the practical one of -x32, into a simple 32
booter flag.
Note: -x32 was removed from trunk on rev 377.
Note: only useful on 64 bit processors.
32 bit only processors, will cause i386 arch to be loaded by default.
Motif: 2 keys to do the same, should never had happen!
I really think that arch=i386 is a more "educational" definition, since what we're really
doing here is select an architecture to boot, but while reading the Chameleon TODO
"Integrate... quick shortcut modified version of 18seven" and knowing that these shortcuts
use the 3 + 2 key combination to select i386 arch, i can't avoid to think,
why not extend it to the boot prompt now!?
---------------//---------------//---------------
- (rev 335) (REMOVED, rev 520)
Change: added -legacy kernel flag. This flag tells the booter to load i386 arch before is passed to
the kernel. This procedure only needs to be done on Snow Leopard. -legacy tells the kernel
mach kernel.
Type -legacy to get you booted into Legacy Mode.
Note: only useful on 64 bit processors.
Note: just out of curiosity and for those who don't know, Legacy Mode is in fact the mode used
by 32 bit "only" processors! Since OS X kernel can handle 64 bit apps even on i386 arch,
64 bit processors need this flag to disable any handling of 64 bit instructions, when
"emulating a full" 32 bit environment.
Motif: this flag was not being passed on > 10.6; the reason why, is this mode is only available
under i386 arch. So, while testing Meklort's kernel patcher, i felt the need to add this key.
---------------//---------------//---------------
- (rev 335) (REVERTED to trunk way, rev 520)
Change: added 64 bit booter flag, to keep company to the 32 one :)
Motif: mainly to override 32 or -legacy if they are flagged on the Boot.plist.
Like -legacy, was born while testing kernel builds and with the need to do the above.
---------------//---------------//---------------
- (rev 336)
Change: removed 3 keys to handle PCI Root UID, two of them executing the exact same code
(PCIRootUID & PciRoot). Kept just the already existing PciRoot=<uid>, plus the new code.
0 is still the default value, use the key to set any other.
Motif: these many keys, should never had happened!
This came along when the Asere code was ported to Chameleon, but even on Asere's booter,
what's the point? Compatibility? None, it's seems!
The only key in use on Asere's booter is PCIRootUID. The others are commented out.
---------------//---------------//---------------
- (revs 337 --> 360)
Changes: file loading related (search algo). The short story:
Change: added a key to disable "override" Boot.plist from overriding the values on the "default"
Boot.plist. Only the values overriding is disabled, not the file loading.
Motif: there was no key to do this. (read next)
---------------//---------------//---------------
Change: added a "new" search algo, to load Extra extensions.
Pros:
- hands-off search of all main files. If you don't want a certain file to be loaded,
Note: same override keys used.
Motif: check Guidelines.
---------------//---------------//---------------
Change: tweaked the loading of override Boot.plist (loadOverrideConfig(), stringTable.c) according
the new search algo guideline: everything loads from Booter volume.
The search for this file was also extended to specific OS folders, to "emulate" the search
on Selected volume. Also added a verbose message to signal when user doesn't provide a
override plist.
Note: again, as far as i know, loading a override Boot.plist is not mandatory!
Motif: payback for all the neurons i burned while i was not aware of override Boot.plist function!!
Not kidding :P
---------------//---------------//---------------
Change: reactivated config= key, included on loadOverrideConfig changes.
config=<file> loads override plist from specified path.
Note: with the introduction of this key, all main files can now be overrided by the user.
Motif: the key wasn't working anymore and it's useful.
---------------//---------------//---------------
Don't forget to check FileLoad.txt/FileLoad-trunk.txt for detailed info on file loading search paths
---------------//---------------//---------------
- (rev 419)
Change: started adding documentation, with the creation of a dedicated folder, doc-azi. It would get very
messy mixing these with main Chameleon documentation and as i want to keep things as clean as
possible on CleanCut, thought a separate folder would be better idea.
Motif: do i need to say? :) i thought so.
---------------//---------------//---------------
- (rev 427)
Change: removed Chameleon.xcodeproj.
Motif: it's not up to date and i need time to update it properly, at least on Chazi.
Will reintroduce it later in the process. It's also giving me problems with the svn client
when i update it; need to check what i'm doing wrong!?
---------------//---------------//---------------
- (rev 460)
mm & attr, resolution specific info, are borrowed from autoResolution branch.
DebugInfo=y enables display of debug info.
Note: Boot Banner(*)=n will override DebugInfo=y , disabling the display of this info.
Disabled by default.
Motif: just making this info easily accessible.
---------------//---------------//---------------
---------------//---------------//---------------
- (rev 462)
Change:creation of this project, replacing Chazileon as my work folder;
hence, Chazileon is now frozen until archival and deletion.
Motif: Chazileon (Chazi) has no svn history.
---------------//---------------//---------------
- (revs 465 --> 467, 469 --> 471)
The con: doesn't work for all devices!!
AutoResolution=y enables the patch.
Note: Obviously, it only works in Graphics Mode (Gui).
Note: resolution set on theme.plist is overriding the native one set by AutoResolution. For now the
possible solutions are, remove the boot resolution (boot_width, boot_height) from theme.plist
or add Graphics Mode=<native resolution> to com.appleBoot.plist.reminder: ""
Motif: ... mentioned above. Check the topic for more details:
http://forum.voodooprojects.org/index.php/topic,1227.0.html
---------------//---------------//---------------
- (starting at rev 480)
Change: added Meklort's Modules support, plus Kernel Patcher (Kpatcher) module.
PatchKernel=y enables Kernel Patcher.
Note: Check Modules.txt for more info.
Motif: Testing Modules support.
---------------//---------------//---------------
- (rev 520)
Type arch=i386 to load i386 kernel architecture.
arch=x86_64 overrides i386 arch, if flagged on Boot.plist.
On Snow type arch=i386 -legacy to load i386 arch Legacy Mode.
Motif: don't want to contribute to confusion... and laziness ;)
---------------//---------------//---------------
- (rev 524)
Change: Added GraphicsEnabler module. Needs no introduction :)
Feedback is welcome.
Working as usual with my ATI Radeon X1300 openGL engine, doing the injection thing.
Newsflash: looks like it's raining modules over Meklort's branch :D
Motif: ---
---------------//---------------//---------------
- (rev 526)
Change: Added Memory detection module. Also needs no intro...
Working properly with my controler:
Intel Corporation 82945G/GZ/P/PL Memory Controller Hub [8086:2770] (rev 02)
Motif: ---
---------------//---------------//---------------
Note: latest changes need a call for ATTENTION; the bootloader install procedure is gaining
new steps! So far, we wre just playing with KernelPatcher module, which most people
don't use. Check Modules.txt for info on installing modules.
Motif: ---
---------------//---------------//---------------
Been a while since i last updated this file, as there were no major events to justify
doing so. There was however some activity, which deserves to be mentioned; resuming
the most relevant:
to hold the full log generated booting with -f argument and turns out to also be a fix
for some problems related with -f arg boot.
Trunk'ed on rev 616.
---------------//---------------//---------------
- (rev 625)
Change: Added HPET module, another existing patch converted to the modules cause. This carries
some new code to force enable HPET on VIA chipsets, contributed by bogdan-x86
(http://forum.voodooprojects.org/index.php/topic,1596.0.html).
Also carries any notebook support added by Meklort.
Motif: ---
---------------//---------------//---------------
- (rev )
Change:template
Motif:
Motif:
---------------//---------------//---------------
branches/azimutz/Chazi/doc-azi/Modules.txt
1
1
22
33
44
55
66
7
8
7
8
99
10
10
1111
12
12
1313
1414
1515
1616
17
18
17
18
1919
2020
2121
2222
2323
24
25
26
27
28
29
24
25
26
27
3028
31
29
30
31
32
33
3234
3335
34
35
36
36
37
3738
39
40
3841
3942
40
43
4144
4245
4346
4447
4548
4649
47
50
4851
4952
5053
5154
5255
5356
54
57
5558
5659
5760
5861
5962
6063
61
64
6265
66
67
6368
6469
65
70
6671
72
73
6774
75
76
77
78
79
80
81
82
6883
6984
7085
86
7187
88
7289
7390
7491
75
92
7693
94
7795
7896
7997
8098
81
82
83
84
85
99
86100
87
88
89101
90102
91103
......
97109
98110
99111
100
112
101113
102
103114
104
105115
106
107
108
109
110
111
112
113
114
115
116
117
118116
119117
120118
The possible info at the moment:
---------------// Modules Info //---------------
Installation:
- get the source, compile; find modules at /sym/i386, with .dylib file extension.
- create a /Extra/modules folder, copy Symbols.dylib (mandatory) to modules folder,
plus any other module you wish to load.
- create an /Extra/modules folder on the volume from were the booter is going to load from,
copy Symbols.dylib (mandatory) to modules folder, plus any other module you wish to load.
Note: GraphicsEnabler & MemDetect are now converted to modules.***
- update boot file or reinstall the booter completely, as needed.
- update boot file or reinstall the booter completely, as needed.
Note: GraphicsEnabler, MemDetect & ForceHPET patches are now converted to modules.
How to use?
- Just check if a key is needed to activate the module you pretend to use. Otherwise
modules are loaded at startup by the booter from default location. (check Issues below).
- Just check if a key is needed to activate the functionality you pretend to use. Otherwise
all modules are loaded at startup from the default location, before the boot prompt.
---------------//---------------//---------------
What are modules?
- good question! Well, can't add much on the "geek" side... need to study the stuff so
i don't start dumping bs. The easy answer is they are like plugins, adding/replacing
booter functionality. For instance: the Kernel Patcher (Kpatcher) is around for some time,
integrated on boot file like any other Chameleon function; with Modules support Kpatcher
can now live as a module, freeing the space occupied on boot file
(one of module's advantages).
- Modules can be refered as "plugins", adding and/or replacing booter functionality, without
touching the "core" of the booter. If you are familiar with e.g. browser plugins
(like Firefox's Addons), you know what i'm talking about; they either add completely new
functionality or replace/modify existing one; same thing with modules and Chameleon.
More info can be found on Meklort's blog and links at the bottom of the page:
http://www.meklort.com/
---------------//---------------//---------------
Featured modules:
- Symbols.dylib: always needed to load other modules! It's the first one to load and no
other module will work if this one fails. The booter will still perform as usual,
if it fails to load.
- Symbols.dylib: first one to load, contains all the symbols found on the booter.
All other modules depend on it to load.
---------------//---------------
- KernelPatcher.dylib:
- needs key to be enabled:
- needs key to enable patching:
PatchKernel=yat boot prompt or,
<key>PatchKernel</key>on Boot.plist.
<string>Yes</string>
- featured patches: cpuid_set - 32/64 bit
- featured patches: cpuid_set - 32/64 bit ??
commpage_stuff - 32/64 bit
lapic_init - 32 bit only.
Note on functionality: as it is, Kpatcher allows my Pentium D 925 to load vanilla(*)
kernel, with the help of -legacy flag; to enter x86_64 world i still need to patch
the kernel sources, as the 925 has no Supplemental SSE3 instructions and there's
no patch to fix this on Kpatcher atm (don't even know if is possible?!).
no patch to fix this on Kpatcher atm.
I assume that, the great majority of the legacy/unsupported processors with at least
SSE3 instructions, will benefit of the same treatment!
Let's just say that the only patch needed by the 925 on Legacy Mode(**) is cpuid_set!
Note: Kernel Patcher can stop working due to changes on the kernel code.
- GraphicsEnabler: graphics enabler option converted to module.
---------------//---------------
- GraphicsEnabler.dylib: graphics enabler patch converted to module.
- same activation key used.
- Memory detection: memory detection option converted to module.
---------------//---------------
- Memory.dylib: memory detection converted to module.
- same deactivation key used. (enabled by default)
---------------//---------------
- HPET.dylib: force enable HPET patch converted to module.
- same activation key used. (enabled by default)
---------------//---------------
- HelloWorld.dylib: just a notifier (not mandatory).
---------------//---------------//---------------
(*) In this context, "vanilla" means the use of a non pre-patched kernel; what we do here is
patch the kernel on the fly, in memory.
(**) For those who "missed" the lesson, Legacy Mode is the mode 32 bit only cpu's run on OS X.
(**) For those who "missed" the lesson, Legacy Mode is the one 32 bit only cpu's run on OS X.
---------------//---------------//---------------
Issues:
- the default path for loading modules (/Extra/modules/) is not being respected, the booter
always checks bt(0,0)/Extra/modules/ instead.
Anyway, i already intended to change the path due to the concept of this booter
and so i did it. Of course the problem is still there and needs to be fixed, at least if
one wants to be able to load modules from selected volume.
- compiling modules under Leo (Dev tools 3.1 (9M2809)) is not possible at the moment.
- compiling modules under Leo (XCode 3.1.4) is not possible at the moment.
---------------//---------------//---------------
---------------//---------------//---------------
Smith@@'s news :D
Thanks fly out to Meklort for this precious and huge work!
« Sent to: Azimutz on: Fri 03/09/2010 at 05:55:08 »
"Hi azi, i've try last chazi with modules, it works like a charm ;)"
-------/-/-------
Grazie Amico - Azi
---------------//---------------//---------------
Huge thanks fly out to Meklort for this precious work!
---------------//---------------//---------------
Azimutz

Archive Download the corresponding diff file

Revision: 627