\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 10:30 Uhr\\Raum H238} \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 Ordner? \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] Welches Tool ist auf folgendem Bild zu sehen? \part[3] Warum ist es nicht denkbar die Linux-sourcen ohne ein solches Tool zu compilieren? \part[4] Welche Einstellungen können mit Hilfe dieses Tools konfiguriert 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. Welche Funktionalit\"at haben diese 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\"ur 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? \part [5] Wie k\"onnen die LEDs vom Userspace aus geschalten werden? Skizzieren Sie auch den Weg durch beteiligten Kernelsubsysteme. \end{parts} \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? \part [2] Sie wollen Ihren Treiber in Mainline Linux integriert haben, wie gehen Sie vor? \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, Befehle) \end{parts} \end{questions} \vspace{1cm} Punkte: \_\_\_\_ von \numpoints \hspace{1cm} Note: \end{document}