7752d478ef551d48b92b731d2ee7f6035ac87a31
[debian-kernel-talk.git] / index.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
2         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
4 <html xmlns="http://www.w3.org/1999/xhtml">
5
6 <head>
7 <title>The Linux kernel in Debian - Ben Hutchings - Mini-DebConf Paris 2012</title>
8 <!-- metadata -->
9 <meta name="generator" content="S5" />
10 <meta name="version" content="S5 1.1" />
11 <meta name="author" content="Ben Hutchings" />
12 <!-- configuration parameters -->
13 <meta name="defaultView" content="slideshow" />
14 <meta name="controlVis" content="hidden" />
15 <!-- style sheet links -->
16 <link rel="stylesheet" href="s5-blank/ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
17 <link rel="stylesheet" href="s5-blank/ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
18 <link rel="stylesheet" href="s5-blank/ui/default/print.css" type="text/css" media="print" id="slidePrint" />
19 <link rel="stylesheet" href="s5-blank/ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
20 <style type="text/css">
21   .logo { position: absolute; right: 0; top: 0; height: 100% }
22   table { border-collapse: collapse }
23   th { border-bottom: 2pt solid black }
24   th, td { padding: 0 6pt }
25   .package { font-family: monospace }
26   var { font-family: sans }
27 </style>
28 <style type="text/css" media="print">
29   .slide { page-break-after: always }
30 </style>
31 <!-- S5 JS -->
32 <script src="s5-blank/ui/default/slides.js" type="text/javascript"></script>
33 </head>
34 <body>
35
36 <div class="layout">
37 <div id="controls"><!-- DO NOT EDIT --></div>
38 <div id="currentSlide"><!-- DO NOT EDIT --></div>
39 <div id="header">
40 </div>
41 <div id="footer">
42 <h1>Mini-DebConf Paris 2012</h1>
43 <h2>The Linux kernel in Debian</h2>
44 </div>
45
46 </div>
47
48 <div class="presentation">
49
50 <div class="slide">
51 <h1>The Linux kernel in Debian</h1>
52 <object data="tux-debian.svg" width="35%" align="right"></object>
53 <h3>Ben Hutchings</h3>
54 </div>
55
56 <div class="slide">
57   <h1>The author</h1>
58   <ul class="incremental">
59     <li>
60       Professional software developer since 1998
61     </li>
62     <li>
63       Debian contributor since 2003
64     </li>
65     <li>
66       Regular Linux contributor since 2008
67       <ul>
68         <li>
69           Maintaining a net driver in my day job, plus core networking
70           and PCI code as necessary
71         </li>
72       </ul>
73     </li>
74     <li>
75       Debian kernel contributor since 2008; uploader since 2009
76       <ul class="incremental">
77         <li>
78           Initially trying to deal with the non-free firmware issue
79         </li>
80         <li>
81           Moved on to triaging bugs, fixing bugs, backporting
82           features, updating packaging...
83         </li>
84       </ul>
85     </li>
86   </ul>
87 </div>
88
89 <div class="slide">
90   <h1>Linux kernel</h1>
91   <ul class="incremental">
92     <li>
93       Started by Linus Torvalds in 1991 as a kernel for i386
94       PCs: <q>just a hobby, won't be big and professional like gnu</q>
95     </li>
96     <li>
97       Adopted as the kernel of the Debian system in 1993
98     </li>
99     <li>
100       After 20 years' development, supports more hardware
101       architectures and devices than anything else
102       <ul class="incremental">
103         <li>
104           Hardware vendors <em>must</em> provide Linux drivers because
105           their customers demand it
106         </li>
107       </ul>
108     </li>
109     <li>
110       Still the default kernel for the Debian system
111     </li>
112   </ul>
113 </div>
114
115 <div class="slide">
116   <h1>Linux release model (1)</h1>
117   <p>
118     The old model:
119   </p>
120   <ul class="incremental">
121     <li>
122       Each stable release had even second component.  Bug fixes and
123       minor features in stable releases with third component
124       incremented (e.g. 2.4.27)
125     </li>
126     <li>
127       Major development done separately, resulting in series of
128       unstable releases with odd second component (e.g. 2.5.50)
129     </li>
130     <li>
131       After a year or two, development resulted in a new stable
132       release
133     </li>
134     <li>
135       Problem: users waited years for new features, and then got many
136       more changes all at once.  Particularly bad in the 2.4-2.6
137       transition.
138     </li>
139   </ul>
140 </div>
141
142 <div class="slide">
143   <h1>Linux release model (2)</h1>
144   <p>
145     The new model:
146   </p>
147   <ul class="incremental">
148     <li>
149       Development results in a new stable(-ish) release every 2-3
150       months
151       <ul class="incremental">
152         <li>
153           git (and previously BitKeeper) made distributed development
154           and testing a lot easier
155         </li>
156       </ul>
157     </li>
158     <li>
159       Each 2.6.<var>x</var> release has stable update branch; releases
160       numbered 2.6.<var>x</var>.<var>y</var>
161       <ul class="incremental">
162         <li>
163           Usually closed shortly after next stable release, but may
164           continue as a 'longterm' branch (e.g. 2.6.32.<var>y</var>)
165         </li>
166       </ul>
167     </li>
168     <li>
169       Linux 3.0 doesn't change this, except that <var>x</var> is now
170       the second component and <var>y</var> is the third
171     </li>
172   </ul>
173 </div>
174
175 <div class="slide">
176   <h1>Debian kernel team (1)</h1>
177   <p>
178     Who are we?
179   </p>
180   <ul class="incremental">
181     <li>
182       Currently 5 general maintainers: Maximilian Attems, Bastian
183       Blank, dann frazier, Moritz Muehlenhoff and me
184     </li>
185     <li>
186       Many more specialised contributors:
187       <ul>
188         <li>Specific architectures</li>
189         <li>Specific features (e.g. Xen)</li>
190         <li>Bug triage</li>
191       </ul>
192     </li>
193     <li>
194       Would appreciate more help, particularly with bug triage and
195       PowerPC
196     </li>
197   </ul>
198 </div>
199
200 <div class="slide">
201   <h1>Debian kernel team (2)</h1>
202   <p>
203     What do we do?
204   </p>
205   <ul class="incremental">
206     <li>
207       Bug triage - takes a huge amount of time
208     </li>
209     <li>
210       Backport bug fixes and features - particularly new hardware
211       support for stable
212       <ul class="incremental">
213         <li>...while trying not to change kernel ABI in stable</li>
214       </ul>
215     </li>
216     <li>
217       Update build configurations for each new upstream release -
218       e.g. to enable new drivers
219     </li>
220     <li>
221       Try to ensure smooth upgrades when there are major
222       implementation changes - e.g. KMS, switch to libata drivers
223     </li>
224     <li>
225       Integrate <em>some</em> features not accepted upstream
226     </li>
227   </ul>
228 </div>
229
230 <div class="slide">
231   <h1>Official Linux kernel packages (1)</h1>
232   <p>
233     Main source package is <span class="package">linux-2.6</span>
234     (still!).  Most binary package names change regularly.
235   </p>
236   <ul class="incremental">
237     <li>
238       <span class="package">linux-image-<var>upstream</var>-<var>abi</var>-<var>flavour</var></span>
239       - compiled kernel and modules
240     </li>
241     <li>
242       <span class="package">linux-headers-<var>upstream</var>-<var>abi</var>-<var>flavour</var></span>
243       (and others) - development package for OOT modules
244     </li>
245     <li>
246       <span class="package">linux-libc-dev</span> - headers for userland
247     </li>
248     <li>
249       <span class="package">linux-source-<var>upstream</var></span> -
250       for custom kernels
251     </li>
252     <li>
253       <span class="package">linux-doc-<var>upstream</var></span>,
254       <span class="package">linux-tools-<var>upstream</var></span>, etc.
255     </li>
256     <li>
257       <span class="package">linux-support-<var>upstream</var>-<var>abi</var></span> -
258       scripts and metadata to support linux-latest-2.6
259     </li>
260   </ul>
261 </div>
262
263 <div class="slide">
264   <h1>Official Linux kernel packages (2)</h1>
265   <p>
266     The <span class="package">linux-latest-2.6</span> source package builds meta-packages
267     to support automatic upgrades between binaries built
268     from <span class="package">linux-2.6</span>.
269   </p>
270   <ul class="incremental">
271     <li>
272       <span class="package">linux-image-<var>flavour</var></span>
273     </li>
274     <li>
275       <span class="package">linux-headers-<var>flavour</var></span>
276     </li>
277     <li>
278       <span class="package">linux-source</span>,
279       <span class="package">linux-doc</span>,
280       <span class="package">linux-tools</span>, etc.
281     </li>
282   </ul>
283   <p class="incremental">
284     The installer will normally install
285     <span class="package">linux-image-<var>flavour</var></span> (for
286     some appropriate <var>flavour</var>).
287   </p>
288 </div>
289
290 <div class="slide">
291   <h1>Official Linux kernel packages (3)</h1>
292   <ul class="incremental">
293     <li>
294       <span class="package">firmware-free</span> - separate 'firmware'
295       compliant with DFSG
296     </li>
297     <li>
298       <span class="package">linux-base</span> - base package for
299       images and tools
300     </li>
301     <li>
302       <span class="package">linux-kbuild-2.6</span> builds
303       <span class="package">linux-kbuild-<var>upstream</var></span> -
304       kernel build system and tools for building OOT modules
305     </li>
306   </ul>
307 </div>
308
309 <div class="slide">
310   <h1>Custom Linux kernel builds</h1>
311   <p>
312     The official packages work for most users, but not all:
313   </p>
314   <ul class="incremental">
315     <li>
316       Different ARM platforms need incompatible configurations,
317       and we cannot build them all
318     </li>
319     <li>
320       New features are not enabled immediately if we are worried
321       about potential regressions
322     </li>
323   </ul>
324   <p class="incremental">
325     Using either upstream source or Debian linux-source package:
326   </p>
327   <ul class="incremental">
328     <li>
329       <span class="package">make && make install</span>
330     </li>
331     <li>
332       <span class="package">make deb-pkg</span> - build packages
333     </li>
334     <li>
335       <span class="package">make-kpkg</span> - build packages with
336       more customisation; requires
337       <span class="package">kernel-package</span>
338     </li>
339   </ul>
340 </div>
341
342 <div class="slide">
343   <h1>Extra features</h1>
344   <p>
345     Always aim to get patches merged upstream.  But many big features
346     that users want added are <em>not</em> merged upstream for a long
347     time.  Kernel team expects features to be upstream first, then
348     backported.
349   </p>
350   <p class="incremental">
351     But there have been exceptions:
352   </p>
353   <ul class="incremental">
354     <li>
355       OpenVZ and VServer - mostly reimplemented with cgroups and
356       namespaces
357     </li>
358     <li>
359       Xen - now upstream; Linux 3.0 is a useful dom0 kernel!
360     </li>
361     <li>
362       aufs - needed for Debian Live
363     </li>
364     <li>
365       PREEMPT_RT - gradually being merged upstream; new option in
366       amd64 packages
367     </li>
368   </ul>
369 </div>
370
371 <div class="slide">
372   <h1>Out-of-tree modules</h1>
373   <p>
374     The kernel team does not encourage the use of out-of-tree modules.
375     However, we support them by providing development packages and by
376     avoiding ABI changes during a stable release.
377   </p>
378   <p class="incremental">
379     Debian has two packages to aid in building out-of-tree modules:
380   </p>
381   <ul class="incremental">
382     <li>
383       <span class="package">dkms</span> - builds and installs modules
384       automatically.  Can build packages for installation on other
385       systems.  Also supported by Ubuntu and SUSE.
386     </li>
387     <li>
388       <span class="package">module-assistant</span> - builds packages
389       as directed.  Uses a separate package name for each kernel ABI.
390     </li>
391   </ul>
392 </div>
393
394 <div class="slide">
395   <h1>Firmware files</h1>
396   <ul class="incremental">
397     <li>
398       Most peripherals have microcontroller running non-free
399       firmware; some require host to load it
400     </li>
401     <li>
402       Several drivers used to include firmware, making kernel
403       non-free.  Fudged with GRs for a while; finally fixed in squeeze
404     </li>
405     <li>
406       Users with these devices - almost any wifi card, some network
407       controllers and Radeon GPUs - will still need the firmware
408       files installed
409     </li>
410     <li>
411       Kernel team maintains
412       <span class="package">firmware-nonfree</span> source package
413       covering most firmware files that are clearly redistributable
414     </li>
415     <li>
416       Also collected in linux-firmware.git repository maintained by
417       David Woodhouse and myself
418     </li>
419   </ul>
420 </div>
421
422 <div class="slide">
423   <h1>Documentation</h1>
424   <ul class="incremental">
425     <li>
426       <span class="package">manpages-dev</span> - the system call API
427     </li>
428     <li>
429       <span class="package">linux-doc-</span><var>upstream</var> -
430       miscellaneous upstream documentation
431     </li>
432     <li>
433       <span class="package">linux-manual-</span><var>upstream</var> -
434       the internal API, based on structured comments
435     </li>
436     <li>
437       <span class="package">debian-kernel-handbook</span> -
438       Debian-specific information; currently also Linux-specific but
439       could cover other kernels
440     </li>
441     <li>
442       <a href="http://wiki.debian.org/DebianKernel">http://wiki.debian.org/DebianKernel</a>
443       - wiki index page
444     </li>
445   </ul>
446 </div>
447
448 <div class="slide">
449   <h1>Questions?</h1>
450 </div>
451
452 <div class="slide">
453   <h1>Credits</h1>
454   <ul>
455     <li>
456       Linux 'Tux' logo &copy; Larry Ewing, Simon Budig.
457       <!--
458 Redistribution is free but has to include this notice.
459       -->
460       <ul>
461         <li>Modified by me to add Debian open-ND logo</li>
462       </ul>
463     </li>
464     <li>
465       Debian open-ND logo &copy; Software in the Public Interest, Inc.
466       <!--
467 Permission is hereby granted, free of charge, to any person obtaining
468 a copy of this software and associated documentation files (the
469 "Software"), to deal in the Software without restriction, including
470 without limitation the rights to use, copy, modify, merge, publish,
471 distribute, sublicense, and/or sell copies of the Software, and to
472 permit persons to whom the Software is furnished to do so, subject to
473 the following conditions:
474
475 The above copyright notice and this permission notice shall be
476 included in all copies or substantial portions of the Software.
477
478 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
479 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
480 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
481 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
482 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
483 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
484 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
485       -->
486     </li>
487   </ul>
488 </div>
489
490 </body>
491 </html>