/[gentoo]/xml/htdocs/proj/en/glep/glep-0026.html
Gentoo

Contents of /xml/htdocs/proj/en/glep/glep-0026.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (show annotations) (download) (as text)
Thu Jan 25 03:26:26 2007 UTC (7 years, 9 months ago) by antarus
Branch: MAIN
Changes since 1.3: +3 -3 lines
File MIME type: text/html
Fix headers in all current gleps

1 <?xml version="1.0" encoding="utf-8" ?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4 <!--
5 This HTML is auto-generated. DO NOT EDIT THIS FILE! If you are writing a new
6 PEP, see http://www.python.org/peps/pep-0001.html for instructions and links
7 to templates. DO NOT USE THIS HTML FILE AS YOUR TEMPLATE!
8 -->
9 <head>
10 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
11 <meta name="generator" content="Docutils 0.4: http://docutils.sourceforge.net/" />
12 <title>GLEP 26 -- Handling kernels with portage</title>
13 <style type="text/css">
14
15 /*
16 :Author: David Goodger
17 :Contact: goodger@users.sourceforge.net
18 :date: $Date: 2006/10/10 20:25:14 $
19 :version: $Revision: 1.3 $
20 :copyright: This stylesheet has been placed in the public domain.
21
22 Default cascading style sheet for the PEP HTML output of Docutils.
23 */
24
25 .first {
26 margin-top: 0 }
27
28 .last {
29 margin-bottom: 0 }
30
31 .navigation {
32 width: 100% ;
33 background: #cc99ff ;
34 margin-top: 0px ;
35 margin-bottom: 0px }
36
37 .navigation .navicon {
38 width: 150px ;
39 height: 35px }
40
41 .navigation .textlinks {
42 padding-left: 1em ;
43 text-align: left }
44
45 .navigation td, .navigation th {
46 padding-left: 0em ;
47 padding-right: 0em ;
48 vertical-align: middle }
49
50 .rfc2822 {
51 margin-top: 0.5em ;
52 margin-left: 0.5em ;
53 margin-right: 0.5em ;
54 margin-bottom: 0em }
55
56 .rfc2822 td {
57 text-align: left }
58
59 .rfc2822 th.field-name {
60 text-align: right ;
61 font-family: sans-serif ;
62 padding-right: 0.5em ;
63 font-weight: bold ;
64 margin-bottom: 0em }
65
66 a.toc-backref {
67 text-decoration: none ;
68 color: black }
69
70 body {
71 margin: 0px ;
72 margin-bottom: 1em ;
73 padding: 0px }
74
75 dd {
76 margin-bottom: 0.5em }
77
78 div.section {
79 margin-left: 1em ;
80 margin-right: 1em ;
81 margin-bottom: 1.5em }
82
83 div.section div.section {
84 margin-left: 0em ;
85 margin-right: 0em ;
86 margin-top: 1.5em }
87
88 div.abstract {
89 margin: 2em 5em }
90
91 div.abstract p.topic-title {
92 font-weight: bold ;
93 text-align: center }
94
95 div.attention, div.caution, div.danger, div.error, div.hint,
96 div.important, div.note, div.tip, div.warning {
97 margin: 2em ;
98 border: medium outset ;
99 padding: 1em }
100
101 div.attention p.admonition-title, div.caution p.admonition-title,
102 div.danger p.admonition-title, div.error p.admonition-title,
103 div.warning p.admonition-title {
104 color: red ;
105 font-weight: bold ;
106 font-family: sans-serif }
107
108 div.hint p.admonition-title, div.important p.admonition-title,
109 div.note p.admonition-title, div.tip p.admonition-title {
110 font-weight: bold ;
111 font-family: sans-serif }
112
113 div.figure {
114 margin-left: 2em }
115
116 div.footer, div.header {
117 font-size: smaller }
118
119 div.footer {
120 margin-left: 1em ;
121 margin-right: 1em }
122
123 div.system-messages {
124 margin: 5em }
125
126 div.system-messages h1 {
127 color: red }
128
129 div.system-message {
130 border: medium outset ;
131 padding: 1em }
132
133 div.system-message p.system-message-title {
134 color: red ;
135 font-weight: bold }
136
137 div.topic {
138 margin: 2em }
139
140 h1 {
141 font-family: sans-serif ;
142 font-size: large }
143
144 h2 {
145 font-family: sans-serif ;
146 font-size: medium }
147
148 h3 {
149 font-family: sans-serif ;
150 font-size: small }
151
152 h4 {
153 font-family: sans-serif ;
154 font-style: italic ;
155 font-size: small }
156
157 h5 {
158 font-family: sans-serif;
159 font-size: x-small }
160
161 h6 {
162 font-family: sans-serif;
163 font-style: italic ;
164 font-size: x-small }
165
166 .section hr {
167 width: 75% }
168
169 ol.simple, ul.simple {
170 margin-bottom: 1em }
171
172 ol.arabic {
173 list-style: decimal }
174
175 ol.loweralpha {
176 list-style: lower-alpha }
177
178 ol.upperalpha {
179 list-style: upper-alpha }
180
181 ol.lowerroman {
182 list-style: lower-roman }
183
184 ol.upperroman {
185 list-style: upper-roman }
186
187 p.caption {
188 font-style: italic }
189
190 p.credits {
191 font-style: italic ;
192 font-size: smaller }
193
194 p.label {
195 white-space: nowrap }
196
197 p.topic-title {
198 font-family: sans-serif ;
199 font-weight: bold }
200
201 pre.line-block {
202 font-family: serif ;
203 font-size: 100% }
204
205 pre.literal-block, pre.doctest-block {
206 margin-left: 2em ;
207 margin-right: 2em ;
208 background-color: #eeeeee }
209
210 span.classifier {
211 font-family: sans-serif ;
212 font-style: oblique }
213
214 span.classifier-delimiter {
215 font-family: sans-serif ;
216 font-weight: bold }
217
218 span.interpreted {
219 font-family: sans-serif }
220
221 span.option-argument {
222 font-style: italic }
223
224 span.pre {
225 white-space: pre }
226
227 span.problematic {
228 color: red }
229
230 table {
231 margin-top: 0.5em ;
232 margin-bottom: 0.5em }
233
234 td, th {
235 padding-left: 0.5em ;
236 padding-right: 0.5em ;
237 vertical-align: top }
238
239 td.num {
240 text-align: right }
241
242 th.field-name {
243 font-weight: bold ;
244 text-align: left ;
245 white-space: nowrap }
246
247 h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
248 font-size: 100% }
249
250 tt {
251 background-color: #eeeeee }
252
253 ul.auto-toc {
254 list-style-type: none }
255
256 </style>
257 </head>
258 <body bgcolor="white">
259 <table class="navigation" cellpadding="0" cellspacing="0"
260 width="100%" border="0">
261 <tr><td class="navicon" width="150" height="35">
262 <a href="http://www.gentoo.org/" title="Gentoo Linux Home Page">
263 <img src="http://www.gentoo.org/images/gentoo-new.gif" alt="[Gentoo]"
264 border="0" width="150" height="35" /></a></td>
265 <td class="textlinks" align="left">
266 [<b><a href="http://www.gentoo.org/">Gentoo Linux Home</a></b>]
267 [<b><a href="http://www.gentoo.org/proj/en/glep/">GLEP Index</a></b>]
268 [<b><a href="http://www.gentoo.org/proj/en/glep/glep-0026.txt">GLEP Source</a></b>]
269 </td></tr></table>
270 <table class="rfc2822 docutils field-list" frame="void" rules="none">
271 <col class="field-name" />
272 <col class="field-body" />
273 <tbody valign="top">
274 <tr class="field"><th class="field-name">GLEP:</th><td class="field-body">26</td>
275 </tr>
276 <tr class="field"><th class="field-name">Title:</th><td class="field-body">Handling kernels with portage</td>
277 </tr>
278 <tr class="field"><th class="field-name">Version:</th><td class="field-body">1.2</td>
279 </tr>
280 <tr class="field"><th class="field-name">Last-Modified:</th><td class="field-body"><a class="reference" href="http://www.gentoo.org/cgi-bin/viewcvs.cgi/xml/htdocs/proj/en/glep/glep-0026.txt?cvsroot=gentoo">2004/11/11 21:32:21</a></td>
281 </tr>
282 <tr class="field"><th class="field-name">Author:</th><td class="field-body">Nathaniel McCallum &lt;npmccallum&#32;&#97;t&#32;gentoo.org&gt;, Joshua Campbell &lt;warpzero&#32;&#97;t&#32;gentoo.org&gt;</td>
283 </tr>
284 <tr class="field"><th class="field-name">Status:</th><td class="field-body">deferred</td>
285 </tr>
286 <tr class="field"><th class="field-name">Type:</th><td class="field-body">Standards Track</td>
287 </tr>
288 <tr class="field"><th class="field-name">Content-Type:</th><td class="field-body"><a class="reference" href="glep-0002.html">text/x-rst</a></td>
289 </tr>
290 <tr class="field"><th class="field-name">Created:</th><td class="field-body">2-May-2004</td>
291 </tr>
292 <tr class="field"><th class="field-name">Post-History:</th><td class="field-body">2-May-2004, 11-Nov-2004</td>
293 </tr>
294 </tbody>
295 </table>
296 <hr />
297 <div class="contents topic">
298 <p class="topic-title first"><a id="contents" name="contents">Contents</a></p>
299 <ul class="simple">
300 <li><a class="reference" href="#abstract" id="id2" name="id2">Abstract</a></li>
301 <li><a class="reference" href="#status" id="id3" name="id3">Status</a></li>
302 <li><a class="reference" href="#motivation" id="id4" name="id4">Motivation</a></li>
303 <li><a class="reference" href="#specification" id="id5" name="id5">Specification</a></li>
304 <li><a class="reference" href="#rationale" id="id6" name="id6">Rationale</a></li>
305 <li><a class="reference" href="#backwards-compatibility" id="id7" name="id7">Backwards Compatibility</a></li>
306 <li><a class="reference" href="#reference-implementation" id="id8" name="id8">Reference Implementation</a></li>
307 <li><a class="reference" href="#copyright" id="id9" name="id9">Copyright</a></li>
308 </ul>
309 </div>
310 <div class="section">
311 <h1><a class="toc-backref" href="#id2" id="abstract" name="abstract">Abstract</a></h1>
312 <p>This GLEP proposes to create a more consistent handling of kernels and kernel building.
313 Currently &quot;emerge kernel-name&quot; only installs the sources and does not build anything.
314 &quot;emerge kernel-name&quot; should install only sources OR only a binary kernel, its modules,
315 and a tarballed package of kernel-headers, depending on USE flag.</p>
316 </div>
317 <div class="section">
318 <h1><a class="toc-backref" href="#id3" id="status" name="status">Status</a></h1>
319 <p>Timed out</p>
320 </div>
321 <div class="section">
322 <h1><a class="toc-backref" href="#id4" id="motivation" name="motivation">Motivation</a></h1>
323 <p>Currently, the only automated kernel build proceedure that we have is genkernel. While
324 genkernel is a great tool, its main weakness is that it does not port well to other
325 arches because of the initrd and the lack of good &quot;generic&quot; settings for other arches.
326 This GLEP hopes to overcome this by abstracting the various layers of genkernel and
327 implementing the most common aspect (the build proceedure) into a portage eclass.</p>
328 </div>
329 <div class="section">
330 <h1><a class="toc-backref" href="#id5" id="specification" name="specification">Specification</a></h1>
331 <p>There would be 3 layers to kernel building: (place of implementation)</p>
332 <blockquote>
333 <ul class="simple">
334 <li>Stage 1 - Configuring the kernel (optional) -- external utility</li>
335 <li>Stage 2 - Building the kernel -- in an eclass</li>
336 <li>Stage 3 - Building the initrd (optional) -- in an ebuild</li>
337 </ul>
338 </blockquote>
339 <p>Stages 1 and 3 are optional on most arches.</p>
340 <p>Stage 1 would be achieved through a seperate utility (perhaps like the current
341 genkernel). This utility would help the user configure the kernel and any kernel/build
342 related settings. This stage is optional and would only be used if a person wanted a
343 customized kernel settings. One optional thought is to have this utility a part of the
344 base Gentoo system. That way there are less steps to make a custom kernel.</p>
345 <p>Stage 2 would be implimented through an eclass. This stage is not optional. One would
346 perform this step by typing &quot;emerge kernel-name&quot;, where &quot;kernel-name&quot; is the name of
347 the kernel package you want to use (ie. &quot;gentoo-dev&quot;). This package would have a
348 &quot;buildkernel&quot; USE flag. If the flag was not set, it would simply download and install
349 sources like we do currently. However, if the &quot;buildkernel&quot; flag is set, portage will
350 perform the following steps:</p>
351 <blockquote>
352 <ol class="arabic simple">
353 <li>(as a dependency) download and install a tarball of &quot;generic&quot; kernel config files.</li>
354 <li>Check to see if customized kernel config/settings have been set via Stage 1.</li>
355 <li>Portage will use a custom config, if available. Otherwise, a &quot;generic&quot; config.</li>
356 <li>If neither a custom config or a &quot;generic&quot; config is available, die (with message).
357 This is needed as some arches don't/can't have &quot;generic&quot; configs, so they will
358 simply be presented a message telling them to run the utility from Stage 1 (which
359 they obviously skipped).</li>
360 <li>Build the kernel and modules and install them</li>
361 <li>Remove unnecessary files from the sources and tarball it as &quot;kernel-headers&quot;.
362 This tarball provides the appropriate files to build external modules against, like
363 nvidia-kernel, etc... The external modules (when built) will determine the running
364 kernel and unpack the appropriate tarball, to build against, then remove the files.</li>
365 </ol>
366 </blockquote>
367 <p>Stage 3 would merely be an ebuild that constructs an initrd image for either the running
368 kernel or, lacking a running kernel, the newest kernel installed (by version/date installed?).
369 Initrd's can't be used on all arches, so this ebuild can be keyword masked as appropriate.
370 The initrd package would also have a &quot;bootsplash&quot; USE flag (on x86, maybe others) that
371 would build in bootsplash support. Any non-default actions desired by the user can be
372 handled with the utility from Stage 1.</p>
373 <p>This would lead us to several case scenarios (assuming kernel-config is part of the base
374 system):</p>
375 <blockquote>
376 <ol class="arabic">
377 <li><p class="first">default kernel, no initrd: &quot;emerge gentoo-kernel&quot;</p>
378 </li>
379 <li><p class="first">default kernel, initrd: &quot;emerge aa-kernel initrd&quot;</p>
380 </li>
381 <li><p class="first">default kernel, bootsplash initrd: &quot;USE=bootsplash emerge mm-kernel initrd&quot;</p>
382 </li>
383 <li><dl class="first docutils">
384 <dt>non-default kernel, no initrd: &quot;kernel-config gentoo-dev-kernel&quot;</dt>
385 <dd><p class="first last">&quot;emerge gentoo-dev-kernel&quot;</p>
386 </dd>
387 </dl>
388 </li>
389 <li><dl class="first docutils">
390 <dt>non-default kernel, initrd: &quot;kernel-config alpha-kernel&quot;</dt>
391 <dd><p class="first last">&quot;emerge alpha-kernel initrd&quot;</p>
392 </dd>
393 </dl>
394 </li>
395 <li><p class="first">JUST sources, no binary &quot;USE=-buildkernel emerge grsec-kernel&quot;</p>
396 </li>
397 </ol>
398 </blockquote>
399 </div>
400 <div class="section">
401 <h1><a class="toc-backref" href="#id6" id="rationale" name="rationale">Rationale</a></h1>
402 <p>There are many advantages gained by this method:</p>
403 <blockquote>
404 <ol class="arabic simple">
405 <li>Full arch support (GentooInstaller really could use this)</li>
406 <li>More consistent with the rest of portage (installs binaries by building from source)</li>
407 <li>Better user experience</li>
408 <li>More flexability (genkernel forces building of initrd on x86)</li>
409 <li>Don't have to store full kernel sources (each source tree is ~200MB unpacked)</li>
410 <li>Creates the ability to make binary kernel packages for fast installs (think GRP kernel)</li>
411 <li>A seperate package for &quot;generic&quot; kernel config files gives us better version tracking</li>
412 </ol>
413 </blockquote>
414 <p>The major problem is, however, that we currently have two different build systems,
415 portage and genkernel. Having competing build systems is not a GoodThing TM. Therefore,
416 we can either make portage build kernels or we can make genkernel build everything else.</p>
417 </div>
418 <div class="section">
419 <h1><a class="toc-backref" href="#id7" id="backwards-compatibility" name="backwards-compatibility">Backwards Compatibility</a></h1>
420 <p>If you want to emerge kernel sources the old way, just do: USE=&quot;-buildkernel&quot; emerge kernel-name</p>
421 <p>Perhaps we could also name the new kernel-config program (from Stage 1) &quot;genkernel&quot; so that users
422 can have a seemless transition.</p>
423 </div>
424 <div class="section">
425 <h1><a class="toc-backref" href="#id8" id="reference-implementation" name="reference-implementation">Reference Implementation</a></h1>
426 <p>not yet ..</p>
427 </div>
428 <div class="section">
429 <h1><a class="toc-backref" href="#id9" id="copyright" name="copyright">Copyright</a></h1>
430 <p>This document has been placed in the public domain.</p>
431 </div>
432
433 </div>
434 <div class="footer">
435 <hr class="footer" />
436 <a class="reference" href="glep-0026.txt">View document source</a>.
437 Generated on: 2006-10-10 20:23 UTC.
438 Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.
439
440 </div>
441 </body>
442 </html>

  ViewVC Help
Powered by ViewVC 1.1.20