\documentclass[addpoints,12pt]{exam} \usepackage{ngerman} \usepackage{listings,color} \usepackage{graphicx} \firstpageheadrule \runningheadrule \lhead{Manuel Traut\\SoSe 2013} \chead{Hochschule Ravensburg-Weingarten\\Linux-Kernelprogrammierung} \rhead{MatrNr:\\Datum:} \firstpagefootrule \runningfootrule \firstpagefooter{Page \thepage\ of \numpages} {} {Punkte: \makebox[.5in]{\hrulefill}\\ von \pointsonpage{\thepage} Punkten} \runningfooter{Page \thepage\ of \numpages} {} {} \pagestyle{headandfoot} \pointsinrightmargin \pointpoints{Punkt}{Punkte} \begin{document} \begin{coverpages} \begin{titlepage} \title{Pr\"ufung Linux-Kernelprogrammierung} \author{Dozent: Manuel Traut} \date{02. Juli 2013 16:30 Uhr\\Raum H143} \maketitle \begin{center} Hochschule Ravensburg-Weingarten \vspace{1cm} Dauer: 60 Minuten, erlaubte Hilfsmittel: keine \end{center} \vspace{2cm} Name:\enspace\hrulefill \vspace{2cm} MatrNr:\enspace\hrulefill \begin{center} \begin{lstlisting} a8888b. d888888b. 8P"YP"Y88 (((((((()))))))))) 8|o||o|88 ||VIEL ERFOLG !!|| 8' .88 ((((((((((((())))) 8`._.' Y8. d/ `8b. .dP . Y8b. d8:' " `::88b. d8" `Y88b :8P ' :888 8a. : _a88P ._/"Yaa_ : .| 88P| \ YP" `| 8P `. / \._____.d| .' `--..__)888888P`._.' \end{lstlisting} \end{center} \end{titlepage} \end{coverpages} \begin{questions} \section*{Entwicklungsmodell} \question[3] Was versteht man unter dem Begriff 'Kernelpatch'? Wie wird ein Patch erstellt und angewendet? \question[4] F\"ur die Linuxkernelentwicklung wurde das Versionskontrollsystem git entwickelt. Nennen Sie mind. 4 gravierende Unterschiede zu Versionskontrollsystemen wie cvs oder svn. \question[6] Beschreiben Sie den Releasezyklus/Versionierung des Linuxkernels (seit v3.0). Verwenden Sie in diesem Zusammenhang die Begriffe: 'Release', 'stable Kernel', 'Release Candidate', 'merge window' \question Im Linuxsourcetree gibt es einen Ordner 'staging'. \begin{parts} \part[1] Was findet man in diesem Ordner? \part[2] Wann wird der Code aus diesem Ordner gel\"oscht / verschoben? \end{parts} \section*{Tools} \question \begin{parts} \part[1] Welches Tool ist auf folgendem Bild zu sehen? \part[1] \"Uber welche Datei wird der Inhalt / Struktur des Tools gesteuert? \part[8] Welche Einstellungen k\"onnen mit Hilfe dieses Tools konfiguriert werden? (beschreiben Sie 4 Kategorien) \end{parts} \includegraphics[height=0.3\textwidth]{./images/kconfig.png} \question[6] Ein von Ihnen entwickelter Kerneltreiber funktioniert nicht wie erwartet. Welche Debugingm\"oglichkeiten haben Sie? Nennen Sie mindestens zwei und beschreiben Sie Vor- und Nachteile \question[5] Was mu\ss \space ein Bootloader tun um Linux zu booten? \section*{Programmierung} \question[6] Kernel- und Userspace arbeiten in unterschiedlichen Addressr\"aumen. Nennen Sie 3 M\"oglichkeiten, wie Daten zwischen den Bereichen ausgetauscht werden k\"onnen. Nennen Sie jeweils typische Verwendung, gegebenenfalls Einschr\"ankungen. \question Das Kernelsubsystem 'Userspace-IO' (UIO) kann zur Entwicklung eigener Treiber verwendet werden. \begin{parts} \part[3] Welche Einschr\"ankungen gelten? \part[2] Mu\ss \space der komplette Quellcode des Treibers ver\"offentlicht werden? \end{parts} \question Sie wollen Ihren eigenen Treiber in Mainline Linux integriert haben. \begin{parts} \part[4] Was \"ubermitteln Sie auf welchem Weg wohin? \part[2] Wie wird die Qualit\"at Ihres Treibers gepr\"uft, wie reagieren Sie gegebenenfalls auf Beanstandungen? \end{parts} \section*{Rootfilesystem} \question Sie haben ein ARM embedded System mit 256 MB NAND Flash und sollen ein GNU/Linux Userspace einrichten. Es soll Netzwerk, Bluetooth und Audio Unterst\"utzung vorhanden sein. \begin{parts} \part [3] Aus welchen Komponenten besteht das Rootfilesystem? \part [2] Wie erstellen Sie ein Rootfilesystem f\"ur dieses System? \part [1] Was mu\ss \space beim \"Ubertragen der Daten auf das Zielmedium beachtet werden? \end{parts} \end{questions} \vspace{1cm} Punkte: \_\_\_\_ von \numpoints \hspace{1cm} Note: \end{document}