summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel Traut <manut@linutronix.de>2019-01-09 18:39:35 +0100
committerJohn Ogness <john.ogness@linutronix.de>2019-01-28 19:54:07 +0106
commit1ef131987ce5ce27c5bfb7fbcbeead0eefd1fd82 (patch)
tree812fd8953aa3a81bb8e60da66f48f5dc72c796a9
parent5b9736bf793623ed5e95cde3a3e6017399ecd095 (diff)
pres_kernel-basics_en: add translated version
Signed-off-by: Manuel Traut <manut@linutronix.de>
-rw-r--r--kernel-devel/kernel-basics/Makefile3
-rw-r--r--kernel-devel/kernel-basics/pres_kernel-basics_en.tex318
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}