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