\documentclass[addpoints,12pt]{exam} \usepackage{german} \usepackage{listings,color} \usepackage{graphicx} \firstpageheadrule \runningheadrule \lhead{Manuel Traut\\SoSe 2012} \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{19. Juli 2012} \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[1] Was versteht man unter dem Begriff 'Kernelpatch'? \question[3] F\"ur die Linuxkernelentwicklung wurde das Versionskontrollsystem git entwickelt. Nennen Sie mind. 4 gravierende Unterschiede zu Versionskontrollsystemen wie cvs oder svn. \question Im Linuxsourcetree gibt es einen Ordner 'staging'. \begin{parts} \part[1] Was findet man in diesem Ornder? \part[2] Was ist zu beachten? \end{parts} \question[4] Beschreiben Sie die Aufgaben und die Verantwortung eines Linux Kernelmaintainers. \section{Tools} \question \begin{parts} \part[1] Was ist auf folgendem Bild zu sehen? \part[3] Warum wird es ben\"otigt? \part[4] Was kann mit diesem Tool gemacht werden? (beschreiben Sie 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 \section{Plumbing Layer} \question [2] Sie starten ein Linuxsystem. Die letzten Ausgaben lauten: 'freeing memory, loading init' Nennen Sie 2 m\"ogliche Ursachen. \question [2] In 3.4-rc2 wurde die sogenannte x32 system call ABI Patche gemerged. Was f\"ur Funktionalit\"at haben Sie eingef\"uhrt? (grobe Beschreibung) \section{Programmierung} \question Zusammenspiel des Linuxtreibermodels: Denken Sie dabei an die Strukturen 'Bus', 'Device' und 'Driver'; Beschreiben Sie: \begin{parts} \part [1] Wie kann die Zust\"andigkeit eines Treibers f\"ur ein Ger\"at ausgedr\"uckt werden? \part [2] Was wird typischerweise in einer register\_* Funktion gemacht? \part [3] Wozu dient eine *probe Funktion? \end{parts} \question Sie wollen einen SPI LED Baustein (erm\"oglicht das Steuern von 16 LEDs - an, aus, helligkeit - mittels SPI Kommandos) an Ihr embedded Linux Board anschliessen. Alle Treiber f\"ur Ihr Board sind bereits im Mainline Linux enthalten. Allerdings gibt es noch keine Unterst\"utzung für Ihren LED Baustein. Sie haben ein Datenblatt vom Hersteller des LED Bausteins, der die unterst\"utzen SPI Befehle beschreibt. Was tun Sie nun? \begin{parts} \part [10] Beschreiben Sie 2 M\"oglichkeiten, wie Sie den LED Baustein per Software integrieren k\"onnten. Nennen Sie jeweils Vor- und Nachteile. Markieren Sie die M\"oglichkeit welche Sie f\"ur am sinnvollsten erachten und f\"ur die Beantwortung der nachfolgenden Fragen als Basis nutzen. \part [3] Welche Dateien im Linuxkernel werden Sie modifizieren / anlegen ? \part [2] Wie k\"onnen die LEDs vom Kernel aus geschalten werden? (Pseudocode) \part [5] Wie k\"onnen die LEDs vom Userspace aus geschalten werden? Skizzieren Sie auch den Weg durch beteiligte Subsysteme. \end{parts} \section{Rootfilesystem} \question Sie haben ein System mit 256 MB NAND Flash und sollen ein GNU/Linux Userspace (ohne Xorg, etc) einrichten. Es sollen g\"angige Tools f\"ur Netzwerk, Bluetooth und Audio vorhanden sein. \begin{parts} \part [2] Wie erstellen Sie das Rootfilesystem ? (Tools, Steps, Pseudocode) \part [6] Sie haben einen u-boot Bootloader und k\"onnen aus Flash und von SD Card booten. Das Rootfilesystem soll zuk\"unftig auf einem ubifs liegen. Wie gehen Sie vor? (Tools, Steps, Pseudocode) \end{parts} \end{questions} \vspace{1cm} Punkte: \_\_\_\_ von \numpoints \hspace{1cm} Note: \end{document}