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 forced by user. Note: on pre 10.6 systems, the default EFI values used for 64 bit processors while booting i386 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; i get extra characters that don't belong to the Part Number, according to CPU-Z or Everest. This is consistent on the 2 brands of modules i own, Qimonda & Kingston 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 to disable "64 Bit Mode", which allows 64 bit processors to run 64 bit apps under i386 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=, 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. CanOverride=n disables overriding of the default Boot.plist values. Note: as far as i know, loading a override Boot.plist is not mandatory! Please correct me if i'm wrong. Motif: just in case ;) I was totally unaware of this Boot.plist override for a long time; this messed with my mind a lot of times! too many. So the first thing i did to the booter when i had the chance, was make sure i had this under control. The problem: - first path checked: rd(0,0)/Extra/com.apple.Boot.plist nice, override Boot.plist can be loaded from a ramdisk. - second path: /Extra/com.apple.Boot.plist (the plist on Selected volume) great, if we have the booter installed on a usb stick, that by the way it's the main device used these days to hold a rescue booter, the Boot.plist on it will be ignored (unlike one on a ramdisk) and the one on Selected volume loaded. - and there's no way to override it (config= is not working). This can cause all sorts of anxiety and panic attacks, if you are unaware of this like many people are. Note: This key it's not mentioned on BootHelp.txt on purpose, since it's not needed with my actual booter configuration. ---------------//---------------//--------------- Change: added a key to allow overriding the default paths to load Extra extensions. kext=/path-to-folder/ loads drivers from an alternate folder. e.g. kext=/Extra/test/ 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/. 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, just don't place it on a default searched path (as usual) or override it with key. 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. - no ambiguous paths!! It's bt(0,0) or nothing! (yeah, i'll explain this else were). - consistency across all file loading. Cons: - none that i could test, so far. The only booter install configuration that i can't really test is RAID. Motif: after adding the kext= key, i still couldn't override the Extra extensions loaded from the Selected volume, in case they were messed up and i needed to load another set from else were. It happens that similarly as with override Boot.plist, /Extra/Extensions (or /Extra/Extensions.mkext) is the first path to be checked on a HDD and worse, there's no argument to limit the action; this path is ALWAYS checked and if files are found they are loaded and will override any other files loaded from another path, like a ramdisk (only path checked before /Extra/Extensions), making a recovery much more complicated (not impossible). So, according to at least one of my guidelines (simplify booter use as much as possible), changes to the code are/were needed. This algo was initially a merge between the search algo found on search_and_get_acpi_fd() (acpi_patcher.c), to load ACPI table and the one on LoadDrivers() (driver.c); also, the /Extra/* path was still included. I tried a long time playing with the used arguments (and others) to keep this path, as all i wanted was to give another priority to the file loading, but there was always problems; a file that kept defaulting to the Booter volume when i was trying to load it from Selected volume or the other way around. So, as i always wanted to try taking advantage of Chameleon's ability to load files from specific OS folders (e.g. /Extra/10.5), i gave it a try and here is the outcome. Note: it doesn't make any sense taking advantage of this specific OS folders and still check the Selected volume. Thus except for the obvious files like kernel, SystemVersion.plist, system caches, etc..., no other file is loaded from Selected volume (paths started with / ). To put it simple, as an example, when installed to a usb stick, this booter will not search for any files on the Extra folder of the volume were the system is installed! Or in other words, the booter will only check the Extra folder on the booter volume (paths started with bt(0,0) ), the usb stick in this example. Anyway, /Extra paths can still be passed with the use of override keys! ---------------//---------------//--------------- Change: expanded this "new" search algo to dsdt.aml and smbios.plist. 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= loads override plist from specified path. e.g. config=/Extra/test.plist 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) Change: added a key to display some debug info, that can only be accessed via code edit. Check http://forge.voodooprojects.org/p/chameleon/issues/12/ for history. 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) Change: added AutoResolution patch, by Lebidou (autoResolution branch). The main intention of this patch, is allowing native resolution after boot, even without graphics acceleration (qe/ci). The "side effect" is that it also enables native resolution at boot prompt (Gui). 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= 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) Change: removed -legacy flag interaction with the booter and reverted 32/64 flags to the trunk way. 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: --- ---------------//---------------//--------------- - (rev ) Change: template Motif: ---------------//---------------//--------------- Azimutz