Chameleon

Chameleon Svn Source Tree

Root/branches/slice/TODO

1TODO List for Chameleon Boot Loader
2====================================
331.01.2011 Slice
4- linux detection
5- proper bootArgs when starting from CD
6
727.12.2010 Slice
8- numerous errors, mistakes, reservation, non-finished codes... Spaghetti sources!
9- kernelcache never used (adler32 is wrong?) -- resolved
10- more careful CPU detection
11- readNVRAM is wrong -- resolved
12- graphicsEnabler for X3100 is not good
13- ATI Radeon enabler is not perfect
14
15
1616.12.2010 Slice
17- I want to implement NVRAM for use with nvram, bless, StartupDisk.prefPane, and with VoodooHDA in future.
181. Write a script rc.shutdown.local and place it into /etc
19<--------------
20#!/bin/sh
21nvram -p >nvram.inf
22echo Hello! NVRAM is saved!
23-------------->
242. Read and interpret nvram.inf to place variables into /options node
253. Prepare some other boot-time variables in the node (platform-uuid, BootOrder, FirmwareFeatures, efi-boot-device and so on)
264. Implement boot flag -c to clear growing amount of nvram savings.
27
28- ATI GraphicsEnabler is not perfect.
291. ATY,SCLK, ATY,MCLK, ATY,RefCLK must be read from VideoBIOS but not constant values. Excluded!
302. FakeDeviceID needed
31
32- Intel GraphicsEnabler needs to be corrected by calculating LCD info. Done!
33--------------------------------------------------------------------------------------------------------
34- Integrate Prasys current work on options and quick shortcut modified version of 18seven
35
36- Add autodetection of efistring algorythm to enabke graphics enabler to beanbled by default while not conflicting whith other efi string overriden content
37 (original idea of Galaxy)
38
39- Add a more sophisticated acpi loading mechanism to enable loading custom acpi tables when dsdtdrop=y
40 Here's a specification to think about:
41 First we must care about if a forced DSDT full path has been specified (was the pb smith had in
42 his first tries) and take it for the DSDT path as is.
43 Then we have the case where no DSDT path was set where we run our usual DSDT search algorithm to find this file.
44 In the latter case, the file has to be named DSDT.aml and be in one of the / /Extra or bt(0,0)/Extra directory.
45
46 Now a first idea to implement correctly the acpi tables loading would be:
47
48 Whatever the path was hardcoded in the DSDT option or was automatically found, we extract the path part of
49 the DSDT file that has been successfully found and we run a loop to enumerate all other acpi files in the same directory.
50 Now for each acpi file found, we should compare the name with an existing acpi table found in the system that
51 we would normally load and replace this usual injection by the content of the file.
52
53 Once DropDSDT=y is set, no other acpi table than dsdt is loaded, then it is the responsability of user
54 to provide any other acpi table.
55
56- Add a new module capable of writing proprietary Chameleon data to ioreg:
57 Using the DT__xxx() API, we will create a set of functions to write
58 to log info, chameleon boot info to be retrieved by helper applications...
59 the only public function for log info purpose of this module would be:
60 logMessageToIOREG(...); // var args printf style format
61 flushLogToIOREG(); // store a unique log info property to the ioreg
62
63 The preferred internal behavior of the log info ioreg buffer
64 would be to store the messages in a consolidated buffer then only write once,
65 this buffer (i.e just before call the kernel) with flushLogToIOREG();
66 The other public function for writing chameleon boot info data would be:
67
68 verbose() should incorporate a call to logMessageToIOREG()
69 to permit helper applications to extract
70 this log info (i.e: the chameleon system pref pane)
71
72- Add API for displaying and logging messages like:
73
74 void verbose(...)
75 {
76 ...
77 logMessageToIOREG("%s: %sn", title, s);
78
79 }
80
81 void display_and_log( const char* title, const char* msg)
82 {
83 printf("%s: %sn", title, s);
84 logMessageToIOREG(title,s);
85 }
86
87 void deprecated(const char * s)
88 {
89 display_and_log("WARNING: Deprecated option",s);
90 sleep(1);
91 }
92
93 void error_message(const char * s)
94 {
95 display_and_log("ERROR",s);
96 getc();
97 }
98
99 - Case unsensitive parsing for the bootConfig options:
100 should help the common/novice user to setup more easily.
101
102

Archive Download this file

Revision: 727