Commit 2af238e455ef5fd31c2f7a06c2db3f13d843b9bf
Committed by
Sam Ravnborg
1 parent
80a7d1d991
Exists in
master
and in
20 other branches
kbuild: make *config usage docs
Create a kconfig user assistance guide, with a few tips and hints about using menuconfig, xconfig, and gconfig. Mostly contains user interface, environment variables, and search topics, along with mini.config/custom.config usage. Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Showing 3 changed files with 210 additions and 12 deletions Side-by-side Diff
Documentation/kbuild/00-INDEX
Documentation/kbuild/kconfig.txt
1 | +This file contains some assistance for using "make *config". | |
2 | + | |
3 | +Use "make help" to list all of the possible configuration targets. | |
4 | + | |
5 | +The xconfig ('qconf') and menuconfig ('mconf') programs also | |
6 | +have embedded help text. Be sure to check it for navigation, | |
7 | +search, and other general help text. | |
8 | + | |
9 | +====================================================================== | |
10 | +General | |
11 | +-------------------------------------------------- | |
12 | + | |
13 | +New kernel releases often introduce new config symbols. Often more | |
14 | +important, new kernel releases may rename config symbols. When | |
15 | +this happens, using a previously working .config file and running | |
16 | +"make oldconfig" won't necessarily produce a working new kernel | |
17 | +for you, so you may find that you need to see what NEW kernel | |
18 | +symbols have been introduced. | |
19 | + | |
20 | +To see a list of new config symbols when using "make oldconfig", use | |
21 | + | |
22 | + cp user/some/old.config .config | |
23 | + yes "" | make oldconfig >conf.new | |
24 | + | |
25 | +and the config program will list as (NEW) any new symbols that have | |
26 | +unknown values. Of course, the .config file is also updated with | |
27 | +new (default) values, so you can use: | |
28 | + | |
29 | + grep "(NEW)" conf.new | |
30 | + | |
31 | +to see the new config symbols or you can 'diff' the previous and | |
32 | +new .config files to see the differences: | |
33 | + | |
34 | + diff .config.old .config | less | |
35 | + | |
36 | +(Yes, we need something better here.) | |
37 | + | |
38 | + | |
39 | +====================================================================== | |
40 | +menuconfig | |
41 | +-------------------------------------------------- | |
42 | + | |
43 | +SEARCHING for CONFIG symbols | |
44 | + | |
45 | +Searching in menuconfig: | |
46 | + | |
47 | + The Search function searches for kernel configuration symbol | |
48 | + names, so you have to know something close to what you are | |
49 | + looking for. | |
50 | + | |
51 | + Example: | |
52 | + /hotplug | |
53 | + This lists all config symbols that contain "hotplug", | |
54 | + e.g., HOTPLUG, HOTPLUG_CPU, MEMORY_HOTPLUG. | |
55 | + | |
56 | + For search help, enter / followed TAB-TAB-TAB (to highlight | |
57 | + <Help>) and Enter. This will tell you that you can also use | |
58 | + regular expressions (regexes) in the search string, so if you | |
59 | + are not interested in MEMORY_HOTPLUG, you could try | |
60 | + | |
61 | + /^hotplug | |
62 | + | |
63 | + | |
64 | +______________________________________________________________________ | |
65 | +Color Themes for 'menuconfig' | |
66 | + | |
67 | +It is possible to select different color themes using the variable | |
68 | +MENUCONFIG_COLOR. To select a theme use: | |
69 | + | |
70 | + make MENUCONFIG_COLOR=<theme> menuconfig | |
71 | + | |
72 | +Available themes are: | |
73 | + mono => selects colors suitable for monochrome displays | |
74 | + blackbg => selects a color scheme with black background | |
75 | + classic => theme with blue background. The classic look | |
76 | + bluetitle => a LCD friendly version of classic. (default) | |
77 | + | |
78 | +______________________________________________________________________ | |
79 | +Environment variables in 'menuconfig' | |
80 | + | |
81 | +KCONFIG_ALLCONFIG | |
82 | +-------------------------------------------------- | |
83 | +(partially based on lkml email from/by Rob Landley, re: miniconfig) | |
84 | +-------------------------------------------------- | |
85 | +The allyesconfig/allmodconfig/allnoconfig/randconfig variants can | |
86 | +also use the environment variable KCONFIG_ALLCONFIG as a flag or a | |
87 | +filename that contains config symbols that the user requires to be | |
88 | +set to a specific value. If KCONFIG_ALLCONFIG is used without a | |
89 | +filename, "make *config" checks for a file named | |
90 | +"all{yes/mod/no/random}.config" (corresponding to the *config command | |
91 | +that was used) for symbol values that are to be forced. If this file | |
92 | +is not found, it checks for a file named "all.config" to contain forced | |
93 | +values. | |
94 | + | |
95 | +This enables you to create "miniature" config (miniconfig) or custom | |
96 | +config files containing just the config symbols that you are interested | |
97 | +in. Then the kernel config system generates the full .config file, | |
98 | +including dependencies of your miniconfig file, based on the miniconfig | |
99 | +file. | |
100 | + | |
101 | +This 'KCONFIG_ALLCONFIG' file is a config file which contains | |
102 | +(usually a subset of all) preset config symbols. These variable | |
103 | +settings are still subject to normal dependency checks. | |
104 | + | |
105 | +Examples: | |
106 | + KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig | |
107 | +or | |
108 | + KCONFIG_ALLCONFIG=mini.config make allnoconfig | |
109 | +or | |
110 | + make KCONFIG_ALLCONFIG=mini.config allnoconfig | |
111 | + | |
112 | +These examples will disable most options (allnoconfig) but enable or | |
113 | +disable the options that are explicitly listed in the specified | |
114 | +mini-config files. | |
115 | + | |
116 | +KCONFIG_NOSILENTUPDATE | |
117 | +-------------------------------------------------- | |
118 | +If this variable has a non-blank value, it prevents silent kernel | |
119 | +config udpates (requires explicit updates). | |
120 | + | |
121 | +KCONFIG_CONFIG | |
122 | +-------------------------------------------------- | |
123 | +This environment variable can be used to specify a default kernel config | |
124 | +file name to override the default name of ".config". | |
125 | + | |
126 | +KCONFIG_OVERWRITECONFIG | |
127 | +-------------------------------------------------- | |
128 | +If you set KCONFIG_OVERWRITECONFIG in the environment, Kconfig will not | |
129 | +break symlinks when .config is a symlink to somewhere else. | |
130 | + | |
131 | +KCONFIG_NOTIMESTAMP | |
132 | +-------------------------------------------------- | |
133 | +If this environment variable exists and is non-null, the timestamp line | |
134 | +in generated .config files is omitted. | |
135 | + | |
136 | +KCONFIG_AUTOCONFIG | |
137 | +-------------------------------------------------- | |
138 | +This environment variable can be set to specify the path & name of the | |
139 | +"auto.conf" file. Its default value is "include/config/auto.conf". | |
140 | + | |
141 | +KCONFIG_AUTOHEADER | |
142 | +-------------------------------------------------- | |
143 | +This environment variable can be set to specify the path & name of the | |
144 | +"autoconf.h" (header) file. Its default value is "include/linux/autoconf.h". | |
145 | + | |
146 | +______________________________________________________________________ | |
147 | +menuconfig User Interface Options | |
148 | +---------------------------------------------------------------------- | |
149 | +MENUCONFIG_MODE | |
150 | +-------------------------------------------------- | |
151 | +This mode shows all sub-menus in one large tree. | |
152 | + | |
153 | +Example: | |
154 | + MENUCONFIG_MODE=single_menu make menuconfig | |
155 | + | |
156 | +====================================================================== | |
157 | +xconfig | |
158 | +-------------------------------------------------- | |
159 | + | |
160 | +Searching in xconfig: | |
161 | + | |
162 | + The Search function searches for kernel configuration symbol | |
163 | + names, so you have to know something close to what you are | |
164 | + looking for. | |
165 | + | |
166 | + Example: | |
167 | + Ctrl-F hotplug | |
168 | + or | |
169 | + Menu: File, Search, hotplug | |
170 | + | |
171 | + lists all config symbol entries that contain "hotplug" in | |
172 | + the symbol name. In this Search dialog, you may change the | |
173 | + config setting for any of the entries that are not grayed out. | |
174 | + You can also enter a different search string without having | |
175 | + to return to the main menu. | |
176 | + | |
177 | + | |
178 | +====================================================================== | |
179 | +gconfig | |
180 | +-------------------------------------------------- | |
181 | + | |
182 | +Searching in gconfig: | |
183 | + | |
184 | + None (gconfig isn't maintained as well as xconfig or menuconfig); | |
185 | + however, gconfig does have a few more viewing choices than | |
186 | + xconfig does. | |
187 | + | |
188 | +### |
README
... | ... | @@ -52,11 +52,11 @@ |
52 | 52 | |
53 | 53 | - The Documentation/DocBook/ subdirectory contains several guides for |
54 | 54 | kernel developers and users. These guides can be rendered in a |
55 | - number of formats: PostScript (.ps), PDF, and HTML, among others. | |
56 | - After installation, "make psdocs", "make pdfdocs", or "make htmldocs" | |
57 | - will render the documentation in the requested format. | |
55 | + number of formats: PostScript (.ps), PDF, HTML, & man-pages, among others. | |
56 | + After installation, "make psdocs", "make pdfdocs", "make htmldocs", | |
57 | + or "make mandocs" will render the documentation in the requested format. | |
58 | 58 | |
59 | -INSTALLING the kernel: | |
59 | +INSTALLING the kernel source: | |
60 | 60 | |
61 | 61 | - If you install the full sources, put the kernel tarball in a |
62 | 62 | directory where you have permissions (eg. your home directory) and |
... | ... | @@ -187,14 +187,9 @@ |
187 | 187 | "make randconfig" Create a ./.config file by setting symbol |
188 | 188 | values to random values. |
189 | 189 | |
190 | - The allyesconfig/allmodconfig/allnoconfig/randconfig variants can | |
191 | - also use the environment variable KCONFIG_ALLCONFIG to specify a | |
192 | - filename that contains config options that the user requires to be | |
193 | - set to a specific value. If KCONFIG_ALLCONFIG=filename is not used, | |
194 | - "make *config" checks for a file named "all{yes/mod/no/random}.config" | |
195 | - for symbol values that are to be forced. If this file is not found, | |
196 | - it checks for a file named "all.config" to contain forced values. | |
197 | - | |
190 | + You can find more information on using the Linux kernel config tools | |
191 | + in Documentation/kbuild/make-configs.txt. | |
192 | + | |
198 | 193 | NOTES on "make config": |
199 | 194 | - having unnecessary drivers will make the kernel bigger, and can |
200 | 195 | under some circumstances lead to problems: probing for a |
... | ... | @@ -230,6 +225,19 @@ |
230 | 225 | |
231 | 226 | - If you configured any of the parts of the kernel as `modules', you |
232 | 227 | will also have to do "make modules_install". |
228 | + | |
229 | + - Verbose kernel compile/build output: | |
230 | + | |
231 | + Normally the kernel build system runs in a fairly quiet mode (but not | |
232 | + totally silent). However, sometimes you or other kernel developers need | |
233 | + to see compile, link, or other commands exactly as they are executed. | |
234 | + For this, use "verbose" build mode. This is done by inserting | |
235 | + "V=1" in the "make" command. E.g.: | |
236 | + | |
237 | + make V=1 all | |
238 | + | |
239 | + To have the build system also tell the reason for the rebuild of each | |
240 | + target, use "V=2". The default is "V=0". | |
233 | 241 | |
234 | 242 | - Keep a backup kernel handy in case something goes wrong. This is |
235 | 243 | especially true for the development releases, since each new release |