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