1 | TODO List for Chameleon Boot Loader␊ |
2 | ====================================␊ |
3 | 31.01.2011 Slice␊ |
4 | - linux detection␊ |
5 | - proper bootArgs when starting from CD␊ |
6 | ␊ |
7 | 27.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 | ␊ |
16 | 16.12.2010 Slice␊ |
17 | - I want to implement NVRAM for use with nvram, bless, StartupDisk.prefPane, and with VoodooHDA in future. ␊ |
18 | 1. Write a script rc.shutdown.local and place it into /etc␊ |
19 | <--------------␊ |
20 | #!/bin/sh␊ |
21 | nvram -p >nvram.inf␊ |
22 | echo Hello! NVRAM is saved!␊ |
23 | -------------->␊ |
24 | 2. Read and interpret nvram.inf to place variables into /options node␊ |
25 | 3. Prepare some other boot-time variables in the node (platform-uuid, BootOrder, FirmwareFeatures, efi-boot-device and so on)␊ |
26 | 4. Implement boot flag -c to clear growing amount of nvram savings.␊ |
27 | ␊ |
28 | - ATI GraphicsEnabler is not perfect. ␊ |
29 | 1. ATY,SCLK, ATY,MCLK, ATY,RefCLK must be read from VideoBIOS but not constant values. Excluded!␊ |
30 | 2. 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 | |