Chameleon

Chameleon Commit Details

Date:2010-08-25 19:07:34 (13 years 7 months ago)
Author:Azimutz
Commit:431
Parents: 430
Message:Doc and comment edit. Adding FileLoad.txt and FileLoad-trunk.txt. Removing TODO file; will be replaced by a ISSUES file. TODO stays home ;)
Changes:
D/branches/azimutz/CleanCut/doc-azi/TODO.txt
C/branches/azimutz/CleanCut/doc-azi/FileLoad.txt → /branches/azimutz/CleanCut/doc-azi/FileLoad-trunk.txt
M/branches/azimutz/CleanCut/i386/libsaio/stringTable.c
M/branches/azimutz/Chazileon/i386/boot2/drivers.c
M/branches/azimutz/CleanCut/doc-azi/CHANGES.txt
M/branches/azimutz/CleanCut/i386/boot2/drivers.c
M/branches/azimutz/Chazileon/i386/libsaio/stringTable.c

File differences

branches/azimutz/Chazileon/i386/libsaio/stringTable.c
683683
684684
685685
686
687
688
686
687
688
689689
690690
691691
// "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// These i have no way to test, need advice.
// "/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// "/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// "/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
success_fd:
branches/azimutz/Chazileon/i386/boot2/drivers.c
201201
202202
203203
204
204
205205
206206
207207
// Also no need to specify (gRAMDiskVolume && gRAMDiskBTAliased); checking paths on a
// ramdisk aliased as bt(0,0) (rdbt), is the same as checking paths on booter volume.
// In this case the following two apply.
// In this case the following two will point to the ramdisk.
// Check booter volume/rdbt Extra for specific OS files, on specific OS folders.
sprintf(dirSpecExtra, "bt(0,0)/Extra/%s/", &gMacOSVersion);
branches/azimutz/CleanCut/doc-azi/TODO.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
- clean ramdisk.h #includes on Chazileon (Chazi).
- test pre-boot again - "Turn off any GUI elements" doubt.
---------------//---------------//---------------
Done:
- add documentation: work in progress... kind of, will always be :)
- remove xcodeproj: reintroduce it later.
---------------//---------------//---------------
Found issues:
---------------//---------------//---------------
- no ambiguous paths?? - reminder
Azimutz
branches/azimutz/CleanCut/doc-azi/CHANGES.txt
44
55
66
7
7
88
99
1010
......
146146
147147
148148
149
150
149
150
151151
152152
153153
......
158158
159159
160160
161
161
162162
163
163
164164
165165
166166
......
233233
234234
235235
236
236
237237
238238
239239
......
246246
247247
248248
249
249
250250
251251
252252
---------------//---------------//---------------
- (rev 299)
Change: added "hands off" (without user intervention) setting of EFI32 values, for 32 bit only
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
forced by user.
e.g. kext=/Extra/test/
Note: this key needs to point to a "folder" with kexts or Extensions.mkext,
thus always ends with / (slash).
Note: this key needs to point to a "folder" with either a Extensions sub folder or a
Extensions.mkext kext cache, thus always ends with / (slash).
Note: there's a typo on the comment of rev 337 commit;
Extensions=/path-to-folder/ should be read like kext=/path-to-folder/.
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,
- hands-off search of all main files. If you don't want a certain file to be loaded,
just don't place it on a default searched path (as usual) or override it with key.
First file found, is the one loaded (also as usual).
First file found, is the one loaded.
Check FileLoad.txt for info on searched paths.
- easy to configure with other paths.
- easy add to another file load functions.
---------------//---------------//---------------
Don't forget to check FileLoad.txt for detailed info on file loading search paths
Don't forget to check FileLoad.txt/FileLoad-trunk.txt for detailed info on file loading search paths
---------------//---------------//---------------
---------------//---------------//---------------
- (rev )
- (rev 427)
Change: removed Chameleon.xcodeproj.
Motif: it's not up to date and i need time to update it properly, at least on Chazileon (Chazi).
branches/azimutz/CleanCut/doc-azi/FileLoad.txt
1
2
3
4
1
2
3
4
5
6
7
58
6
9
10
11
12
713
8
914
15
1016
17
18
19
1120
21
22
23
1224
1325
26
1427
15
16
17
18
19
28
29
2030
31
32
33
34
35
36
37
38
39
40
2141
42
43
44
45
2246
47
2348
49
50
2451
52
53
54
55
56
57
58
59
60
2561
62
63
64
65
2666
67
2768
69
70
2871
72
73
74
75
76
77
78
79
2980
81
3082
83
3184
85
86
3287
88
89
90
91
92
3393
94
3495
96
3597
98
3699
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
37211
38212
213
- file name
- default name
- default path
- user override
Well, the intention here is to give some insight on Chameleon file loading, as well as providing
detailed info about what files are (or can be) loaded, from what devices, used paths, differences
between paths, if there's user overriding available, etc...
For now, it will just focus on comparing what's available (on trunk) and one of the many "paths"
we can follow (my branch); also, only the most frequently used files are featured.
For the purpose of comparison, there's a FileLoad-trunk.txt similar to this one, that will
reflect the current Chameleon (trunk) status on the matter.
boot.plist
To be honest, the info on this file will depend greatly on "feedback"; writing down this stuff it's
not the most pleasing and fruitful task i have to do atm, time is never enough and i don't feel
particularly inspired for the job; so if i see no interest in this, i will ditch it as quickly
as i started it.
override boot.plist
Note: unless other wise specified, first file found is the one used.
Before we go on:
- Selected volume = root volume (volume/partition were a system is installed)
- Booter volume = boot volume (volume/partition were the bootloader installed)
---------------//---------------//---------------
azimutz
---------------//---------------//---------------
- Extra extensions (kext)
Just a note on ramdisks: when a rd is aliased as bt(0,0), all paths started by bt(0,0) (booter volume)
will point to the rd and not to the volume were the booter is installed; meaning that, with this algo
that only uses bt(0,0) paths, when using a rd aliased as bt, the rd will be the only volume searched!!
This makes rd's aliased as bt, ideal to load full sets of files, like when using pre-boot discs,
were the files need to be all loaded from the ramdisk into memory.
Default name:Extensions (a directory with kext/s)
Name override:No
Default path/s: User override
rd(0,0)/Extensions- ramdisk
bt(0,0)/Extra/specificOSfolder/Extensions- booter volume or ramdisk aliased as bt(0,0) (1*)
bt(0,0)/Extra/Extensions- same as above
Helper partition/s:
- Apple_Boot (2*): checked only if exists
/com.apple.boot.P/System/Library/Extensions
/com.apple.boot.R/System/Library/Extensions
/com.apple.boot.S/System/Library/Extensions
Path override: Yes
User override: kext=path to folder with Extensions sub folder; e.g. /Extra/drivers/
Note: see CHANGES.txt, (revs 337 --> 360), second Change.
-------/-/------- - same search scheme as above.
- Extra extensions (mkext)
Default name: Extensions.mkext (kext cache)
Name override: No
Default path/s: User override
rd(0,0)/Extensions.mkext
bt(0,0)/Extra/specificOSfolder/Extensions.mkext
bt(0,0)/Extra/Extensions.mkext
Helper partition/s:
/com.apple.boot.P/System/Library/Extensions.mkext
/com.apple.boot.R/System/Library/Extensions.mkext
/com.apple.boot.S/System/Library/Extensions.mkext
Path override: Yes
User override: kext=path to folder with a Extensions.mkext; e.g. /Extra/drivers/
Note: see CHANGES.txt, (revs 337 --> 360), second Change.
---------------//---------------//---------------
- Default configuration file (plist)
Default name: com.apple.Boot.plist
Name override: No
Default path/s: (3*)
bt(0,0)/Extra/com.apple.Boot.plist
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Helper partition/s:
/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Path override: No
---------------//---------------//---------------
- Override configuration file (plist)
Default name: com.apple.Boot.plist
Name override: Yes
Default path/s: User override
rd(0,0)/com.apple.Boot.plist
bt(0,0)/Extra/specificOSfolder/com.apple.Boot.plist
(4*)
Path override: Yes
User override: config=path to file; e.g. /Extra/test/com.apple.Boot.plist or /Extra/b.plist
---------------//---------------//---------------
- ACPI table (aml)
Default name: dsdt.aml
Name override: Yes
Default path/s: User override
rd(0,0)/dsdt.aml
bt(0,0)/Extra/specificOSfolder/dsdt.aml
bt(0,0)/Extra/dsdt.aml
Path override: Yes
User override: DSDT=path to file; e.g. rd(0,0)/Extra/dsdt.aml or /Extra/test.aml
-------/-/-------
ssdt.aml (5*)
---------------//---------------//---------------
- SMBIOS (plist)
Default name: smbios.plist
Name override: Yes
Default path/s: User override
rd(0,0)/smbios.plist
bt(0,0)/Extra/specificOSfolder/smbios.plist
bt(0,0)/Extra/smbios.plist
Path override: Yes
User override: SMBIOS=path to file; e.g. bt(0,0)/Extra/smbios.plist or /Extra/MP21.plist
---------------//---------------//---------------
- ramdisk (dmg)
Default name: Preboot.dmg
Name override: Yes
Default path/s: User override
bt(0,0)/Extra/Preboot.dmg
Path override: Yes
User override: rd=path to file; e.g. /Extra/Preboot.dmg or /Leo.dmg
---------------//---------------//---------------
---------------//---------------//---------------
(1*)
Ramdisks (rd) are simple image files (dmg, etc...) most commonly associated with the pre-boot discs
used to boot retail Mac OS X Installer dvd's; in this case, they are used to load needed files into
memory, before discs can be swapped. But, pre-boot it's not their only use; they can be loaded from
any device the booter has access to and used to test/load, from kexts to complete boot configurations.
A rd aliased as bt(0,0), is a normal rd with a btalias activated pointing to it. The btalias is activated
via a configuration file placed on the root of the rd (RAMDisk.plist), using the pair BTAlias=y.
When this alias is activated on a rd, all paths started by bt(0,0) (pointing to the Booter volume)
will instead point to the rd. This makes rd's aliased as bt, ideal to load full sets of files,
like when using the mentioned pre-boot discs.
(2*)
Helper partitions - boot support partitions (Apple_Boot)
Need to gather more info on these, since i have no experience with them.
All i can say for now is that /com.apple.boot.P /com.apple.boot.R /com.apple.boot.S are directories on
Apple_boot partitions. So far, the only real case scenario i could find that uses these partitions is
software RAID, were the root partition can't be accessed before the "software RAID" is running.
In this situation, these partitions are used as Booter volume and hold the necessary files, that on a
normal setup are loaded directly from the root volume (were the system is installed).
Here is a link to the only decent explanation i ever found on the net:
http://lists.apple.com/archives/boot-dev/2009/May/msg00009.html
(RPS) Rock, Paper, Scissors (the next beats the previous)
(3*)
I'm not searching /Extra/com.apple.Boot.plist on Default paths (c.a.B.plist on selected volume).
The reason is pretty evident, if we don't forget that this booter only loads files from booter volume.
But that's not all; there's also a concept so, for now i'm going to focus only on it.
The concept is: Default configuration file should be loaded either from the Booter volume or from one
of the default system paths.
Why? Because it's the Default configuration file, with the Default configuration files, that the booter
is supposed to use by Default, on a hands-off situation. All these values can still be override by
the user in more ways than one, if the user wishes so! (read 4*)
Wish we could use just "One" default path!??
(4*)
Here i have my doubts if what i have is the ideal, if there's any ideal situation to follow?!
Anyway, explaining what i have now and why.
I'm not searching Default paths for now because:
- they are already checked when loading the Default configuration. In "many" situations
(not to say "most") this will just be reloading the already loaded values.
- on this booter, Selected volume is replaced by the use of a specific OS folder so, in some sense
the selected volume is still checked. And there's also a override key!
My doubts are related to the fact that, searching default paths here does make sense (in a way)
and i'm not entirely sure that's not needed in some configurations?! It's just that, the way
it's done now it gets confuse...
Does using a different name for the Override configuration file make any sense??
(5*)
ssdt: need to gather more info on these, since i have no experience with them.
As far as i understand, same paths as for dsdt.aml are used and if anything different from "dsdt.aml"
is found, it's loaded. 30 tables can be loaded and must be named as:
ssdt.aml, ssdt-1.aml, ssdt-2.aml,... ssdt-30.aml ??? bla bla bla... damn confusion :-/
reminder:
- no ambiguous paths
- what override paths can be used.
---------------//...still plenty to edit...//---------------
---------------//...still plenty brainstorm...//---------------
Azimutz
branches/azimutz/CleanCut/doc-azi/FileLoad-trunk.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Check FileLoad.txt for full comments.
Note: unless other wise specified, first file found is the one used.
---------------//---------------//---------------
trunk
---------------//---------------//---------------
- Extra extensions (kext)
Default name:Extensions (a directory with kext/s)
Name override:No
Default path/s: rd(0,0)/Extra/Extensions
- ramdisk: checked only if exists
/Extra/Extensions
- selected volume: always checked, even if theres a hit on rd(0,0)
bt(0,0)/Extra/specificOSfolder/Extensions
- booter volume or ramdisk aliased as bt(0,0) (1*): checked only if there's no hit on /Extra
bt(0,0)/Extra/Extensions
- same as previous
Helper partition/s:
- Apple_Boot: checked only if exists (2*)
/com.apple.boot.P/System/Library/Extensions
/com.apple.boot.R/System/Library/Extensions
/com.apple.boot.S/System/Library/Extensions
Path override: No
-------/-/------- - same search scheme as above.
- Extra extensions (mkext)
Default name: Extensions.mkext
Name override: No
Default path/s: rd(0,0)/Extensions.mkext
/Extra/Extensions.mkext
bt(0,0)/Extra/specificOSfolder/Extensions.mkext
bt(0,0)/Extra/Extensions.mkext
Helper partition/s:
/com.apple.boot.P/System/Library/Extensions.mkext
/com.apple.boot.R/System/Library/Extensions.mkext
/com.apple.boot.S/System/Library/Extensions.mkext
Path override: No
---------------//---------------//---------------
- Default configuration file (plist)
Default name: com.apple.Boot.plist
Name override: No
Default path/s: /Extra/com.apple.Boot.plist
bt(0,0)/Extra/com.apple.Boot.plist
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Helper partition/s:
/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Path override: No
---------------//---------------//---------------
- Override configuration file (plist)
Default name: com.apple.Boot.plist
Name override: No
Default path/s: rd(0,0)/Extra/com.apple.Boot.plist
/Extra/com.apple.Boot.plist
/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Helper partition/s:
/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist
Path override: No
---------------//---------------//---------------
- ACPI table/s (aml)
Default name: dsdt.aml
Name override: Yes
Default path/s: User override
/Extra/dsdt.aml
bt(0,0)/Extra/dsdt.aml
dsdt.aml (current dir)
/dsdt.aml
Path override: Yes
User override: DSDT=path to file; e.g. rd(0,0)/Extra/dsdt.aml or /Extra/test.aml
-------/-/-------
ssdt.aml (5*)
---------------//---------------//---------------
- SMBIOS (plist)
Default name: smbios.plist
Name override: Yes
Default path/s: User override
/Extra/smbios.plist
Path override: Yes
User override: SMBIOS=path to file; e.g. bt(0,0)/Extra/smbios.plist or /Extra/MP21.plist
---------------//---------------//---------------
- ramdisk (dmg)
Default name: Preboot.dmg
Name override: Yes
Default path/s: User override
bt(0,0)/Extra/Preboot.dmg
Path override: Yes
User override: rd=path to file; e.g. /Extra/Preboot.dmg or /Leo.dmg
---------------//---------------//---------------
Note: (n*) comments are located on FileLoad.txt.
Azimutz
branches/azimutz/CleanCut/i386/libsaio/stringTable.c
679679
680680
681681
682
683
684
682
683
684
685685
686686
687687
// "/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// These i have no way to test, need advice.
// "/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist)
// "/com.apple.boot.P/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// "/com.apple.boot.R/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
// "/com.apple.boot.S/Library/Preferences/SystemConfiguration/com.apple.Boot.plist"
success_fd:
branches/azimutz/CleanCut/i386/boot2/drivers.c
200200
201201
202202
203
203
204204
205205
206206
// Also no need to specify (gRAMDiskVolume && gRAMDiskBTAliased); checking paths on a
// ramdisk aliased as bt(0,0) (rdbt), is the same as checking paths on booter volume.
// In this case the following two apply.
// In this case the following two will point to the ramdisk.
// Check booter volume/rdbt Extra for specific OS files, on specific OS folders.
sprintf(dirSpecExtra, "bt(0,0)/Extra/%s/", &gMacOSVersion);

Archive Download the corresponding diff file

Revision: 431