1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
|
\input{configpres}
\title{Kernel-Grundlagen}
\maketitle
\subsection{Grundlagen}
\subsubsection{Kernel Eigenschaften}
\begin{frame}
\frametitle{Kernel Eigenschaften}
\begin{itemize}
\item Freie Software (GPL Version 2)
\pause
\item Auf vielen Plattformen lauffähig
\pause
\item Hohe Skalierbarkeit vom Handy bis zum Supercomputer
\pause
\item Große Anzahl integrierter Treiber
\pause
\item Einfache Entwicklung eigener Treiber
\pause
\item Codequalität auf hohem Niveau
\pause
\item Qualitätssicherung durch Code-Review unabhängiger Personen
\pause
\item ca. 10 Millionen Codezeilen (ca. 80\% davon Treiber)
\pause
\item hohes Entwicklungstempo
\pause
\item hervorragende Netzwerk-Fähigkeiten
\pause
\item Echtzeit-Fähigkeit leicht und sauber erreichbar
\end{itemize}
\end{frame}
\subsubsection{Aufbau}
\begin{frame}
\frametitle{Aufbau des Kernels}
\centering
\includegraphics[width=0.8\textwidth]{images/Subsystems.png}
\end{frame}
\subsubsection{Maintainer}
\begin{frame}
\frametitle{Kernel Maintainer}
\begin{itemize}
\item Betreuer eines Subsystems oder Treibers
\pause
\item Verantwortlich für Weiterentwicklung
\pause
\item Review von Änderungsvorschlägen
\pause
\item Annehmen/Ablehnen von Änderungsvorschlägen
\pause
\item Weitergabe/Verwaltung angenommener Änderungen
\end{itemize}
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/linus7.jpg}
Maintains: THE REST
Company: linuxfoundation
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/alan.png}
Credits: NET2Debugged/NET3 author, Network layer debugging, Initial AX.25 and
IPX releases, Original Linux netatalk patches, Current 3c501 hacker, Watchdog
timer drivers, Linux/SMP
Company: intel
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/morton.jpg}
Maintains: EXT3, JOURNALLING LAYER FOR BLOCK DEVICES (JBD)
Credits: Linux Quality Management
Company: Linux Foundation
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/greg.jpg}
Maintains: SERIAL DRIVER, DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS, STABLE
BRANCH, STAGING SUBSYSTEM, TTY LAYER, USB SERIAL DRIVER, USB SUBSYSTEM,
USERSPACE I/O
Company: Linux Foundation
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/hch.jpg}
Maintains: FREEVXFS FILESYSTEM, PERSONALITY HANDLING, SYSV FILESYSTEM, XFS
FILESYSTEM
Company: Freelancer
\end{frame}
\begin{frame}
\includegraphics[height=5cm]{images/tglx.jpg}
Maintains: HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS, POSIX CLOCKS and
TIMERS, X86 ARCHITECTURE (32-BIT AND 64-BIT), PREEMPT RT
Company: linutronix
\end{frame}
\subsubsection{Entwicklungsprozess}
\begin{frame}
\frametitle{Entwicklungsprozess}
\begin{itemize}
\item Änderungsvorschläge in Form von Patchen
\pause
\item Review und Diskussion auf Mailinglisten
\item z.B. Subsystem Mailinglisten und LKML
\pause
\item strenge Richtlinien für Coding Style
\item siehe Documentation/CodingStyle im Kernel Source Tree
\pause
\item strenge Richtlinien für Form und Weitergabe von Patchen
\item scripts/checkpatch.pl zur Kontrolle verwenden!
\pause
\item Nur technische Argumente zählen!
\pause
\item Dokumentation siehe MAINTAINER Datei im Kernel Source Tree
\end{itemize}
\end{frame}
\subsubsection{Versionierung (2.6.x)}
\begin{frame}
\frametitle{Versionierung (2.6.x)}
\begin{itemize}
\item 2.6.38.1 oder 2.6.39-rc1
\pause
\item 2.6 - historisch gegeben (aus altem Schema)
\pause
\item .38 - aktuelle Version
\pause
\item .1 - Security Fix
\pause
\item .rc1 - Release Candidate
\end{itemize}
\end{frame}
\subsubsection{Versionierung (3.x)}
\begin{frame}
\frametitle{Versionierung (3.x)}
\begin{itemize}
\item 3.8.2 oder 3.9-rc1
\pause
\item 3. - historisch gegeben (Nachfolger von 2.6.39)
\pause
\item .8 - aktuelle Version
\pause
\item .2 - Security Fix
\pause
\item .rc1 - Release Candidate
\end{itemize}
\end{frame}
\subsubsection{Entwicklungstempo}
\begin{frame}
\frametitle{Entwicklungstempo}
\begin{itemize}
\item 2 \dots 3 months release cycle
\item \dots about 10,000 patches each cycle
\item \dots from over 1000 developers
\item \dots about 200 companies
\end{itemize}
Quelle: http://www.linuxfoundation.org/docs/lf\_linux\_kernel\_development\_2010.pdf
\end{frame}
\begin{frame}
\includegraphics[height=6.5cm]{images/linux-devel-cycle.png}
\end{frame}
\begin{frame}
\includegraphics[height=6.5cm]{images/linux-found-changes-version.png}
\begin{tabular}{ l | l| }
2.6.25 & 12,243 \\
2.6.26 & 9,941 \\
2.6.27 & 10,628 \\
2.6.28 & 9,048 \\
2.6.29 & 11,678 \\
2.6.30 & 11,989 \\
2.6.31 & 10,883 \\
2.6.32 & 10,989 \\
2.6.33 & 10,871 \\
2.6.34 & 9,443 \\
2.6.35 & 9,801 \\
\end{tabular}
Source: Linux Foundation
\end{frame}
\begin{frame}
\includegraphics[height=6.5cm]{images/linux-found-changes-hour.png}
\begin{tabular}{ l | l| }
2.6.25 & 6.15 \\
2.6.26 & 4.71 \\
2.6.27 & 5.03 \\
2.6.28 & 4.96 \\
2.6.29 & 5.47 \\
2.6.30 & 6.40 \\
2.6.31 & 4.93 \\
2.6.32 & 5.46 \\
2.6.33 & 5.39 \\
2.6.34 & 4.86 \\
2.6.35 & 5.30 \\
\end{tabular}
Source: Linux Foundation
\end{frame}
\begin{frame}
\frametitle{Kernel size}
\begin{tabular}{ l | l | r }
Version & Files & Lines \\
\hline
2.6.11 & 17,090 & 6,624,076 \\
2.6.13 & 18,090 & 6,988,800 \\
2.6.15 & 18,811 & 7,290,070 \\
2.6.17 & 19,553 & 7,588,014 \\
2.6.19 & 20,936 & 7,976,221 \\
2.6.21 & 21,614 & 8,246,517 \\
2.6.23 & 22,530 & 8,566,606 \\
2.6.25 & 23,813 & 9,232,592 \\
2.6.27 & 24,356 & 9,630,074 \\
2.6.29 & 26,702 & 10,934,554 \\
2.6.31 & 29,143 & 11,970,124 \\
2.6.33 & 31,584 & 12,912,684 \\
2.6.35 & 33,335 & 13,468,253 \\
\end{tabular}
Source: Linux Foundation
\end{frame}
\begin{frame}
\frametitle{Kernel lines per day}
\begin{tabular}{ l | r | l | r }
Version & Added & Deleted & Modified \\
\hline
2.6.11 & 3,224 & 1,360 & 1,290 \\
2.6.13 & 4,443 & 1,553 & 1,711 \\
2.6.15 & 5,614 & 3,454 & 2,219 \\
2.6.17 & 3,635 & 2,469 & 1,329 \\
2.6.19 & 6,013 & 2,900 & 1,862 \\
2.6.21 & 3,256 & 1,479 & 982 \\
2.6.23 & 3,747 & 3,034 & 1,343 \\
2.6.25 & 7,980 & 3,488 & 2,430 \\
2.6.27 & 12,270 & 9,791 & 2,102 \\
2.6.29 & 14,678 & 5,516 & 2,454 \\
2.6.31 & 9,408 & 4,962 & 1,635 \\
2.6.33 & 8,925 & 4,379 & 2,841 \\
2.6.35 & 7,896 & 5,037 & 1,802 \\
\end{tabular}
Source: Linux Foundation
\end{frame}
\begin{frame}
\frametitle{Linux Companies}
contribution between 2.6.11 and 2.6.35
\begin{tabular}{ l | r | r }
Company & Changes & Percent of Total \\
\hline
None & 35,663 & 18.9 \\
Red Hat & 23,356 & 12.4 \\
Novell & 13,120 & 7.0 \\
IBM & 13,026 & 6.9 \\
Unknown & 12,060 & 6.4 \\
Intel & 11,028 & 5.8 \\
consultants & 4,817 & 2.6 \\
Oracle & 4,367 & 2.3 \\
Renesas Technology & 2,621 & 1.4 \\
The Linux Foundation & 2,488 & 1.3 \\
academics & 2,464 & 1.3 \\
SGI & 2,450 & 1.3 \\
Fujitsu & 2,293 & 1.2 \\
Parallels & 2,226 & 1.2 \\
Analog Devices & 1,955 & 1.0 \\
Nokia & 1,896 & 1.0 \\
\end{tabular}
\end{frame}
\begin{frame}
\frametitle{Linux Companies (cont.)}
contribution between 2.6.11 and 2.6.35
\begin{tabular}{ l | r | r }
Company & Changes & Percent of Total \\
\hline
HP & 1,854 & 1.0 \\
MontaVista & 1,821 & 1.0 \\
Google & 1,565 & 0.8 \\
AMD & 1,518 & 0.8 \\
Freescale & 1,501 & 0.8 \\
linutronix & 1,470 & 0.8 \\
MIPS Technologies & 1,410 & 0.7 \\
NetApp & 1,322 & 0.7 \\
Marvell & 1,241 & 0.7 \\
Atheros Communications & 1,234 & 0.7 \\
Astaro & 1,222 & 0.6 \\
Broadcom & 1,130 & 0.6 \\
QLogic & 1,076 & 0.6 \\
NTT & 1,068 & 0.6 \\
\end{tabular}
Source: Linux Foundation
\end{frame}
\subsubsection{staging und next}
\begin{frame}
\frametitle{staging}
\begin{itemize}
\item Verzeichnis im Kernelsourcetree
\pause
\item erm\"oglicht Entwicklung im Mainline Tree
\pause
\item enth\"alt haupts\"achlich Treiber
\pause
\item Voraussetzung: aktive Weiterentwicklung im Code
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{next}
\begin{itemize}
\item \"Anderungen welche vermutlich in die n\"achste Version aufgenommen
werden
\item tracked andere Trees und quilt queues
\end{itemize}
\begin{lstlisting}
Feb-2008, Stephen Rothwell:
I hope to recreate this tree every day automatically.
In order to do this, any tree that has a conflict will
be dropped from that days tree.
The maintainer will be notified. I hope to provide some
clue as to what the conflict is with, but probably not
initially. I will attempt to build the tree between each
merge (and a failed build will again cause the offending
tree to be dropped). These builds will be necessarily
restricted to probably one architecture/config.
\end{lstlisting}
\end{frame}
\subsubsection{Konfiguration}
\begin{frame}[fragile]
\frametitle{Kernel-Konfiguration}
\begin{itemize}
\item Grosse Zahl von Konfigurations-Optionen
\pause
\item Speicherung in ".config"
\pause
\item Ändern der Konfiguration: "make menuconfig"
\pause
\item Informationen über Optionen in "Kconfig"-Dateien
\pause
\item Kernel-Buildsystem: Eigenes Subsystem mit eigenem Maintainer
\pause
\item Unterstützt explizit auch Cross-Compiling
\end{itemize}
\end{frame}
\input{tailpres}
|