summaryrefslogtreecommitdiff
path: root/kernel-devel/kernel-basics/pres_kernel-basics_de.tex
blob: 3c252faa4b6c762a73a90036375daa2a765306a3 (plain)
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
\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}

\subsubsection{Entwicklungsprozess}
\begin{frame}
\frametitle{Entwicklungsprozess}
\begin{itemize}
\item Änderungsvorschläge in Form von Patchen
\pause
\item Review und Diskussion auf Mailinglisten
\pause
\item strenge Richtlinien für Coding Style
\pause
\item strenge Richtlinien für Form und Weitergabe von Patchen
\pause
\item Nur technische Argumente zählen!
\end{itemize}
\end{frame}

\subsubsection{Versionierung}
\begin{frame}
\frametitle{Versionierung}
\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{staging und next}
\begin{frame}
\frametitle{staging}
\begin{block}
\begin{itemize}
\item Verzeichnis im Kernelsourcetree
\item erm\"oglicht Entwicklung im 'Mainline' Tree
\item enth\"alt haupts\"achlich Treiber
\item Voraussetzung: aktive Weiterentwicklung im Code
\end{itemize}
\end{block}
\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{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}
\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}

\subsubsection{Konfiguration}
\begin{frame}
\frametitle{Kernel-Konfiguration}
\begin{itemize}
\item Grosse Zahl von Konfigurations-Optionen
\pause
\item Speicherung in \cmd{.config}
\pause
\item Ändern der Konfiguration: \cmd{make menuconfig}
\pause
\item Informationen über Optionen in \cmd{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}