]> git.decadent.org.uk Git - debian-kernel-talk.git/blob - index.html
4bfc2ddbdccb69c706fa3687c2fafb6a1ff5714e
[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 - 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, Max Attems" />
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&nbsp;Hutchings and Max&nbsp;Attems</h3>
54 </div>
55
56 <div class="slide">
57   <h1>Ben Hutchings</h1>
58   <ul>
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       <ul>
74         <li>
75           Maintaining Linux 3.2.<var>y</var> stable update series on
76           kernel.org
77         </li>
78       </ul>
79     </li>
80     <li>
81       Debian kernel contributor since 2008; uploader since 2009
82       <ul>
83         <li>
84           Initially trying to deal with the non-free firmware issue
85         </li>
86         <li>
87           Moved on to triaging bugs, fixing bugs, backporting
88           features, updating packaging...
89         </li>
90       </ul>
91     </li>
92   </ul>
93 </div>
94
95 <div class="slide">
96   <h1>Max Attems</h1>
97   <ul>
98     <li>TODO</li>
99   </ul>
100 </div>
101
102 <div class="slide">
103   <h1>Linux kernel</h1>
104   <ul class="incremental">
105     <li>
106       Started by Linus Torvalds in 1991 as a kernel for i386
107       PCs: <q>just a hobby, won't be big and professional like gnu</q>
108     </li>
109     <li>
110       Adopted as the kernel of the Debian system in 1993
111     </li>
112     <li>
113       After 20 years' development, supports more hardware
114       architectures and devices than anything else
115       <ul class="incremental">
116         <li>
117           Hardware vendors <em>must</em> provide Linux drivers because
118           their customers demand it
119         </li>
120       </ul>
121     </li>
122     <li>
123       Still the default kernel for the Debian system
124     </li>
125   </ul>
126 </div>
127
128 <div class="slide">
129   <h1>Linux release model</h1>
130   <p>
131     Since ~2004:
132   </p>
133   <ul class="incremental">
134     <li>
135       Development results in a new stable(-ish) release every 2-3
136       months
137       <ul class="incremental">
138         <li>
139           git (and previously BitKeeper) made distributed development
140           and testing a lot easier
141         </li>
142       </ul>
143     </li>
144     <li>
145       Each 2.6.<var>x</var> and 3.<var>x</var> release has a stable
146       update branch; releases numbered 2.6.<var>x</var>.<var>y</var>
147       and 3.<var>x</var>.<var>y</var>
148       <ul class="incremental">
149         <li>
150           Usually closed shortly after next stable release, but may
151           continue as a 'longterm' branch (e.g. 2.6.32.<var>y</var>)
152         </li>
153       </ul>
154     </li>
155   </ul>
156 </div>
157
158 <div class="slide">
159   <h1>Debian kernel team (1)</h1>
160   <p>
161     Who are we?
162   </p>
163   <ul class="incremental">
164     <li>
165       Currently 5 general maintainers: Maximilian Attems, Bastian
166       Blank, dann frazier, Ben Hutchings, Moritz Muehlenhoff
167     </li>
168     <li>
169       Many more specialised contributors:
170       <ul>
171         <li>Specific architectures</li>
172         <li>Specific features (e.g. Xen)</li>
173         <li>Bug triage</li>
174       </ul>
175     </li>
176     <li>
177       Would appreciate more help, particularly with bug triage and
178       PowerPC
179     </li>
180   </ul>
181 </div>
182
183 <div class="slide">
184   <h1>Debian kernel team (2)</h1>
185   <p>
186     What do we do?
187   </p>
188   <ul class="incremental">
189     <li>
190       Bug triage - takes a huge amount of time
191     </li>
192     <li>
193       Backport bug fixes and features - particularly new hardware
194       support for stable
195       <ul class="incremental">
196         <li>...while trying not to change kernel ABI in stable</li>
197       </ul>
198     </li>
199     <li>
200       Update build configurations for each new upstream release -
201       e.g. to enable new drivers
202     </li>
203     <li>
204       Try to ensure smooth upgrades when there are major
205       implementation changes - e.g. KMS, switch to libata drivers
206     </li>
207     <li>
208       Integrate <em>some</em> features not accepted upstream
209     </li>
210   </ul>
211 </div>
212
213 <div class="slide">
214   <h1>Official Linux kernel packages (1)</h1>
215   <p>
216     Main source package is <span class="package">linux</span>.  Most
217     binary package names change regularly.
218   </p>
219   <ul class="incremental">
220     <li>
221       <span class="package">linux-image-<var>upstream</var>-<var>abi</var>-<var>flavour</var></span>
222       - compiled kernel and modules
223     </li>
224     <li>
225       <span class="package">linux-headers-<var>upstream</var>-<var>abi</var>-<var>flavour</var></span>
226       (and others) - development package for OOT modules
227     </li>
228     <li>
229       <span class="package">linux-libc-dev</span> - headers for userland
230     </li>
231     <li>
232       <span class="package">linux-source-<var>upstream</var></span> -
233       for custom kernels
234     </li>
235     <li>
236       <span class="package">linux-doc-<var>upstream</var></span>,
237       <span class="package">linux-manual-<var>upstream</var></span>, etc.
238     </li>
239     <li>
240       <span class="package">linux-support-<var>upstream</var>-<var>abi</var></span> -
241       scripts and metadata to support linux-latest
242     </li>
243   </ul>
244 </div>
245
246 <div class="slide">
247   <h1>Official Linux kernel packages (2)</h1>
248   <p>
249     The <span class="package">linux-latest</span> source package builds meta-packages
250     to support automatic upgrades between binaries built
251     from <span class="package">linux</span>.
252   </p>
253   <ul class="incremental">
254     <li>
255       <span class="package">linux-image-<var>flavour</var></span>
256     </li>
257     <li>
258       <span class="package">linux-headers-<var>flavour</var></span>
259     </li>
260     <li>
261       <span class="package">linux-source</span>,
262       <span class="package">linux-doc</span>,
263       <span class="package">linux-tools</span>, etc.
264     </li>
265   </ul>
266   <p class="incremental">
267     The installer will normally install
268     <span class="package">linux-image-<var>flavour</var></span> (for
269     some appropriate <var>flavour</var>).
270   </p>
271 </div>
272
273 <div class="slide">
274   <h1>Official Linux kernel packages (3)</h1>
275   <ul class="incremental">
276     <li>
277       <span class="package">firmware-free</span> - separate 'firmware'
278       compliant with DFSG
279     </li>
280     <li>
281       <span class="package">linux-base</span> - base package for
282       images and tools
283     </li>
284     <li>
285       <span class="package">linux-tools</span> builds
286       <ul>
287         <li>
288           <span class="package">linux-kbuild-<var>upstream</var></span> -
289           kernel build system and tools for building OOT modules
290         </li>
291         <li>
292           <span class="package">linux-tools-<var>upstream</var></span>
293           - perf tool
294         </li>
295         <li>
296           <span class="package">usbip</span> - usbip configuration
297           tools
298         </li>
299       </ul>
300     </li>
301   </ul>
302 </div>
303
304 <div class="slide">
305   <h1>Custom Linux kernel builds</h1>
306   <p>
307     The official packages work for most users, but not all:
308   </p>
309   <ul class="incremental">
310     <li>
311       Different ARM platforms need incompatible configurations,
312       and we cannot build them all
313     </li>
314     <li>
315       New features are not enabled immediately if we are worried
316       about potential regressions
317     </li>
318   </ul>
319   <p class="incremental">
320     Using either upstream source or Debian linux-source package:
321   </p>
322   <ul class="incremental">
323     <li>
324       <span class="package">make && make install</span>
325     </li>
326     <li>
327       <span class="package">make deb-pkg</span> - build packages
328     </li>
329     <li>
330       <span class="package">make-kpkg</span> - build packages with
331       more customisation; requires
332       <span class="package">kernel-package</span>
333     </li>
334   </ul>
335 </div>
336
337 <div class="slide">
338   <h1>Extra features</h1>
339   <p>
340     Always aim to get patches merged upstream.  But many big features
341     that users want added are <em>not</em> merged upstream for a long
342     time.  Kernel team expects features to be upstream first, then
343     backported.
344   </p>
345   <p class="incremental">
346     But there have been exceptions:
347   </p>
348   <ul class="incremental">
349     <li>
350       OpenVZ and VServer - being reimplemented upstream with cgroups
351       and namespaces
352     </li>
353     <li>
354       Xen - now upstream
355     </li>
356     <li>
357       aufs - needed for Debian Live
358     </li>
359     <li>
360       PREEMPT_RT - gradually being merged upstream; new option in
361       amd64 and i386 packages
362     </li>
363   </ul>
364 </div>
365
366 <div class="slide">
367   <h1>Out-of-tree modules</h1>
368   <p>
369     The kernel team does not encourage the use of out-of-tree modules.
370     However, we support them by providing development packages and by
371     avoiding ABI changes during a stable release.
372   </p>
373   <p class="incremental">
374     Debian has two packages to aid in building out-of-tree modules:
375   </p>
376   <ul class="incremental">
377     <li>
378       <span class="package">dkms</span> - builds and installs modules
379       automatically.  Can build packages for installation on other
380       systems.  Also supported by Ubuntu and SUSE.
381     </li>
382     <li>
383       <span class="package">module-assistant</span> - builds packages
384       as directed.  Uses a separate package name for each kernel ABI.
385     </li>
386   </ul>
387 </div>
388
389 <div class="slide">
390   <h1>Firmware files</h1>
391   <ul class="incremental">
392     <li>
393       Most peripherals have microcontroller running non-free
394       firmware; some require host to load it
395     </li>
396     <li>
397       Several drivers used to include firmware, making kernel
398       non-free.  Fudged with GRs for a while; finally fixed in squeeze
399     </li>
400     <li>
401       Users with these devices - almost any wifi card, some network
402       controllers and Radeon GPUs - will still need the firmware
403       files installed
404     </li>
405     <li>
406       Kernel team maintains
407       <span class="package">firmware-nonfree</span> source package
408       covering most firmware files that are clearly redistributable
409     </li>
410     <li>
411       Also collected in linux-firmware.git repository maintained by
412       David Woodhouse and Ben Hutchings
413     </li>
414   </ul>
415 </div>
416
417 <div class="slide">
418   <h1>Documentation</h1>
419   <ul class="incremental">
420     <li>
421       <span class="package">manpages-dev</span> - the system call API
422     </li>
423     <li>
424       <span class="package">linux-doc-</span><var>upstream</var> -
425       miscellaneous upstream documentation
426     </li>
427     <li>
428       <span class="package">linux-manual-</span><var>upstream</var> -
429       the internal API, based on structured comments
430     </li>
431     <li>
432       <span class="package">debian-kernel-handbook</span> -
433       Debian-specific information; currently also Linux-specific but
434       could cover other kernels
435     </li>
436     <li>
437       <a href="http://wiki.debian.org/DebianKernel">http://wiki.debian.org/DebianKernel</a>
438       - wiki index page
439     </li>
440   </ul>
441 </div>
442
443 <div class="slide">
444   <h1>Questions?</h1>
445 </div>
446
447 <div class="slide">
448   <h1>Credits</h1>
449   <ul>
450     <li>
451       Linux 'Tux' logo &copy; Larry Ewing, Simon Budig.
452       <!--
453 Redistribution is free but has to include this notice.
454       -->
455       <ul>
456         <li>Modified by Ben to add Debian open-ND logo</li>
457       </ul>
458     </li>
459     <li>
460       Debian open-ND logo &copy; Software in the Public Interest, Inc.
461       <!--
462 Permission is hereby granted, free of charge, to any person obtaining
463 a copy of this software and associated documentation files (the
464 "Software"), to deal in the Software without restriction, including
465 without limitation the rights to use, copy, modify, merge, publish,
466 distribute, sublicense, and/or sell copies of the Software, and to
467 permit persons to whom the Software is furnished to do so, subject to
468 the following conditions:
469
470 The above copyright notice and this permission notice shall be
471 included in all copies or substantial portions of the Software.
472
473 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
474 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
475 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
476 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
477 LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
478 OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
479 WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
480       -->
481     </li>
482   </ul>
483 </div>
484
485 </body>
486 </html>