diff options
| author | Manuel Traut <manut@linutronix.de> | 2019-01-09 18:39:35 +0100 |
|---|---|---|
| committer | John Ogness <john.ogness@linutronix.de> | 2019-01-28 19:54:07 +0106 |
| commit | 1ef131987ce5ce27c5bfb7fbcbeead0eefd1fd82 (patch) | |
| tree | 812fd8953aa3a81bb8e60da66f48f5dc72c796a9 | |
| parent | 5b9736bf793623ed5e95cde3a3e6017399ecd095 (diff) | |
pres_kernel-basics_en: add translated version
Signed-off-by: Manuel Traut <manut@linutronix.de>
| -rw-r--r-- | kernel-devel/kernel-basics/Makefile | 3 | ||||
| -rw-r--r-- | kernel-devel/kernel-basics/pres_kernel-basics_en.tex | 318 |
2 files changed, 320 insertions, 1 deletions
diff --git a/kernel-devel/kernel-basics/Makefile b/kernel-devel/kernel-basics/Makefile index 2cecea5..d7edf68 100644 --- a/kernel-devel/kernel-basics/Makefile +++ b/kernel-devel/kernel-basics/Makefile @@ -1,2 +1,3 @@ -obj-$(CONFIG_KERNEL_BASICS) += hints_kernel-basics_de.pdf pres_kernel-basics_de.pdf +obj-$(CONFIG_KERNEL_BASICS) += hints_kernel-basics_de.pdf +obj-$(CONFIG_KERNEL_BASICS) += pres_kernel-basics_de.pdf pres_kernel-basics_en.pdf obj-handout-$(CONFIG_KERNEL_BASICS) += handout_kernel-basics_de.pdf diff --git a/kernel-devel/kernel-basics/pres_kernel-basics_en.tex b/kernel-devel/kernel-basics/pres_kernel-basics_en.tex new file mode 100644 index 0000000..c4a84ce --- /dev/null +++ b/kernel-devel/kernel-basics/pres_kernel-basics_en.tex @@ -0,0 +1,318 @@ +\input{configpres} + +\title{Linux Kernel} +\maketitle + +\subsection{Basics} + +\subsubsection{Facts} +\begin{frame} +\frametitle{Facts} +\begin{itemize} +\item Free Software (GPL Version 2) +\item Many different HW architectures and platforms are supported +\item Scales from supercomputers to embedded devices +\item Huge number of drivers +\item It's easy to add own drivers +\item Codequality is high +\item Quality is ensured by Code-Review of independent persons/organizations +\item Rapid development speed +\item Excellent network capabilities / performance +\item Simple Real-time concept +\end{itemize} +\end{frame} + +\subsubsection{Linux 4.16-rc5 (03/2018)} + +\begin{frame}[fragile] +\frametitle{Lines of code by language} +\begin{verbatim} +ansic: 16.686.769 (97.83%) +asm: 295.663 (1.73%) +perl: 26.424 (0.15%) +sh: 19.168 (0.11%) +python: 15.685 (0.09%) +cpp: 4.919 (0.03%) +yacc: 4.600 (0.03%) +lex: 2.478 (0.01%) +awk: 1.387 (0.01%) +pascal: 231 (0.00%) +sed: 5 (0.00%) +\end{verbatim} +\end{frame} + +\begin{frame}[fragile] +\frametitle{Lines of code per folder} +\begin{verbatim} +11.134.588 drivers 66% c=11.124.729 asm= 2.744 + 2.073.368 arch 11% c= 1.778.733 asm=290.614 + 869.993 fs 5% c= 869.993 + 775.712 sound 5% c= 775.712 + 712.404 net 5% c= 712.404 + 540.702 include 3% c= 538.568 + 286.340 tools 2% c= 253.768 + python= 12.196 + sh= 11.354 + perl= 4.012 + 191.741 kernel 2% c= 191.741 + 101.006 lib 1% c= 100.874 + 83.858 mm 1% c= 83.858 + 81.386 crypto 1% c= 81.386 + 59.271 security 1% c= 59.271 +\end{verbatim} +\end{frame} + + +\subsubsection{Architecture} + +\begin{frame} +\frametitle{Subsystems} +\centering +\includegraphics[width=\textwidth]{images/linux-kernel-map.png} +\end{frame} + + +\begin{frame} +\frametitle{Drivers} +\centering +\includegraphics[width=0.8\textwidth]{images/Subsystems.png} +\end{frame} + + + +\subsubsection{Maintainer} +\begin{frame} +\frametitle{Kernel Maintainer} +\begin{itemize} +\item Responsible for a driver, filesystem or subsystem +\pause +\item This includes new developments and bugfixes +\pause +\item Review of change requests +\pause +\item Accept/decline of change requests +\pause +\item Transfer of accepted changes / patches +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{Made by real people} +\begin{itemize} +\item Meet developers / maintainers on conferences +\pause +\item Technical communication via email / mailinglists +\pause +\item Everyone can see who has developed the code +\pause +\item Code of Conduct +\end{itemize} +\end{frame} + + +\begin{frame} +\frametitle{Linus Torvalds} +\includegraphics[height=5cm]{images/linus7.jpg} + +Maintains: THE REST + +Company: linuxfoundation +\end{frame} + +\begin{frame} +\frametitle{Alan Cox} +\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} +\frametitle{Andrew Morton} +\includegraphics[height=5cm]{images/morton.jpg} + +Maintains: EXT3, JOURNALLING LAYER FOR BLOCK DEVICES (JBD) + +Credits: Linux Quality Management + +Company: Google +\end{frame} + +\begin{frame} +\frametitle{Greg Kroah-Hartmann} +\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: SuSE +\end{frame} + +\begin{frame} +\frametitle{Christoph Hellwig} +\includegraphics[height=5cm]{images/hch.jpg} + +Maintains: FREEVXFS FILESYSTEM, PERSONALITY HANDLING, SYSV FILESYSTEM, XFS +FILESYSTEM +Company: ?? +\end{frame} + +\begin{frame} +\frametitle{Thomas Gleixner} +\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{Development Process} +\begin{frame} +\frametitle{Development Process} +\begin{itemize} +\item Change requests are formulated as source-code patches +\pause +\item Review / technical discussion on Mailinglists +\item There are ML for the hole kernel and for several subsystems. +\pause +\item Documented and checkable Coding Style +\pause +\item Guidelines and tooling for checking and transfering patches +\item e.g. scripts/checkpatch.pl +\pause +\item Only technical arguments count. +\pause +\item MAINTAINER file in the source tree describes responsibilites +\end{itemize} +\end{frame} + +\subsubsection{Versioning} +\begin{frame} +\frametitle{Versionierung (5.x)} +\begin{itemize} +\item 5.8.2 or 5.9-rc1 +\pause +\item 5. - Historical defined (successor of 4.20, 3.19, 2.6.39) +\pause +\item .8 - Current version +\pause +\item .1 OR -rc1 - Security Fix OR Release Candidate +\end{itemize} +\end{frame} + + +\begin{frame} +\frametitle{Versioning (0.x \dots 1.3.x)} +\begin{itemize} +\item 09.91-02.94: 0.01\dots0.99 Follows no schema +\item 03.94-03.94: 1.0 1st stable kernel +\item 04.94-03.95: 1.1.x Developer Version +\item 03.95-08.95: 1.2.x Stable Kernel (added Alpha, MIPS, SPARC) +\item 06.95-05.96: 1.3.x Developer Version (added MP Support) +\end{itemize} +\end{frame} + +\begin{frame} +\frametitle{Versionierung (2.0.x \dots 4.x)} +\begin{itemize} +\item 06.96-02.04: 2.0.x SMP Support +\item 09.96-01.99: 2.1.x Developer Version +\item 01.99-02.04: 2.2.x Stable Kernel, IPv6 +\item 05.99-05.00: 2.3.x Developer Version +\item 01.01-12.08: 2.4.x Stable Kernel, USB, ACPI, iptables +\item 11.01-07.03: 2.5.x Developer Version +\item 12.03-TODAY: 2.6.x, 3.x, 4.x, 5.x New schema +\end{itemize} +Version Boundaries +\begin{itemize} +\item 05.11: 2.6.39\dots3.0 +\item 02.15: 3.19\dots4.0 +\item 01.19: 4.20\dots5.0 +\end{itemize} +\end{frame} + +\begin{frame} +\includegraphics[height=6cm]{images/kernelversions.png} + +Source: http://article.sapub.org +\end{frame} + + +\subsubsection{Development Speed} +\begin{frame} +\frametitle{Linux 5.x} +\begin{itemize} +\item 8 \dots 10 weeks release cycle +\item \dots about 14,000 patches each cycle +\item \dots from about 1500 developers +\item \dots about 200 companies +\end{itemize} +\end{frame} + +\begin{frame} +\includegraphics[height=6cm]{images/patches_per_hour.png} + +Source: https://github.com/gregkh/kernel-development +\end{frame} + +\begin{frame} +\includegraphics[height=6cm]{images/linux-kernel-development-companies.png} + +Source: https://fossbytes.com +\end{frame} + + +\subsubsection{staging and next} +\begin{frame} +\frametitle{staging} +\begin{itemize} +\item Directory inside the Kernel source tree +\pause +\item Allows development in 'Mainline' +\pause +\item Mainly used for driver development +\pause +\item Requirement: active development +\end{itemize} +\end{frame} + +\begin{frame}[fragile] +\frametitle{next} +\begin{itemize} +\item Changes considered to be merged into the next Kernel version +\item Tracks several git trees and 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{Configuration} +\begin{frame}[fragile] +\frametitle{Kernel configuration} +\begin{itemize} +\item Huge number of configuration options +\pause +\item Stored in a .config file +\pause +\item Changing configuration: make menuconfig +\pause +\item Information about options are stored in Kconfig files +\end{itemize} +\end{frame} + +\input{tailpres} |
