Projekt: System- und Rechnerarchitektur
- Semester:
- Sommersemester
- Leistungspunkte
- 6
- Dozent:
- Daniel Lohmann
- Betreuer:
- Florian Rommel, Gerion Entrup
- E-Mail:
- psra@sra.uni-hannover.de
- Zeit/Raum:
-
- Übung: Montag, 15:00 - 16:30 (erster Termin am 20.04), SRA Seminarraum (Raum 135, Appelstr. 4, 1.OG)
- Stud.IP-Veranstaltung:
Wichtiger Hinweis zur Anmeldung: Für Studierende der Elektrotechnik und Informationstechnik gibt es für Labore ein verpflichtendes Anmeldesystem. Wir stellen in diesem Labor 6 Plätze für Elektrotechnik-Studierende über das Anmeldesystem zur Verfügung. Studierende der Informatik nutzen dieses Anmeldesystem bitte nicht, sondern nehmen einfach an der ersten Veranstaltung teil.
Am Montag den 20.04. um 15 Uhr findet die erste Veranstaltung statt. Weitere Veranstaltungen finden in unregelmäßigen Abständen statt. Es wird außerdem zusätzliche Laborzeit am Donnerstagnachmittag (ab 14 Uhr) angeboten.
Die Veranstaltung werden über BigBlueButton stattfinden. Sie finden dazu im Stud.IP unter „Meetings“ einen Raum „PSRA Übung“. Bitte nehmen Sie, wenn möglich, mit Mikrofon an der Veranstaltung teil.
Inhalt
In diesem Labor werden Fertigkeiten vermittelt, um sich direkt an der Entwicklung von Open-Source-Projekten – im Speziellen des Linux-Kernels – zu beteiligen. Zusätzlich wird eine Einführung in die interessante Welt der system- und hardwarenahen Softwareentwicklung geboten.
Der Einsatz der verschiedenen Werkzeuge wird während der Bearbeitung der praxisnahen Aufgaben erlernt: So muss neben GCC, Git und GDB auch mal an einem Custom-USB-Protokoll herumgefrickelt werden, um es mit einem eigenen Treiber in Linux einzubinden. Neben dem Erlernen von Arbeitsmethoden in Open-Source-Projekten (im Rahmen des Labors sollen z.B. auch Beiträge zu großen Open-Source-Projekten entstehen) wird außerdem in einem kleinen Wettkampf (CTF) das Verständnis von Assembler- und Low-Level-Programmierung trainiert.
Folgende Themen werden behandelt:
- Erweiterter Umgang mit Versionskontrollsystemen (Git)
- Einführung in Blockchains (im Konkreten Git)
- Funktionsweise der Konfigurations- und Übersetzungssysteme des Linux-Kerns
- Fehlersuche und -behebung in Systemsoftware (Vorgehensweise, QEMU, KGDB, GDB, etc.)
- Arbeitsmethoden der Open-Source-Community (Was ist ein Patch? Wie bekomme ich einen Patch akzeptiert?)
- Umgang mit Hardware (Entwicklung eines Linux-Treibers für ein USB-Gerät mit eigenem Protokoll)
- Reverse-Engineering, Analyse von Binärdateien
Teilnehmer das Labores werden für Linux Verbesserungen entwickeln, Hardware besser verstehen und Treiber dafür schreiben können. Sie werden überdies mit Assembler gearbeitet haben und ihn verstehen können. Es werden in regelmäßigen Abständen Aufgaben gestellt, die in Gruppen bearbeitet werden.
Aufgaben
- Aufgabe 1 (20.04.): Kernel Debugging
- Aufgabe 2 (27.04.): Fehler im Linux-Kernel finden und beheben
- Aufgabe 3 (11.05.): Auf zur ersten Open-Source-Contribution!
- Aufgabe 4 (25.05.): Temperatursensor: Von der Hardware bis zum Treiber
- Aufgabe 5 (15.06.): MeltUP: Flaggenfang!
Semesterplan
Woche | Mo 15:00 | Do 14:00 |
---|---|---|
20.04. | Ü1Arbeitsumgebung & Kernel-Debugging | RÜ |
27.04. | Ü2Git / Kernelentwicklung | A1Abgabe 1 |
04.05. | RÜ | |
11.05. | Ü3Open-Source-Entwicklung | T2Teilabgabe 2 |
18.05. | Himmelfahrt | |
25.05. | Ü4Treiberentwicklung | A2Abgabe 2 |
01.06. | Pfingsten | Pfingsten |
08.06. | Ü+Meltdown | RÜ |
15.06. | Ü5Reverse Engineering / Binärcodeanalyse | A4Abgabe 4 T3Teilabgabe 3 |
22.06. | RÜ | |
29.06. | RÜ | |
06.07. | RÜ | |
13.07. | RÜ | |
20.07. | Ü6Vorstellung der Upstream-Patches A3Abgabe 3 A5Abgabe 5 |
In der Tafelübung (ÜXÜbung X) wird die jeweils nächste Aufgabe vorgestellt und die nötigen Inhalte vermittelt. Jeden Donnerstag gibt es eine betreute Rechnerzeit (RÜ). In den Rechnerübungen werden keine neuen Inhalte vermittelt – sie müssen daher nicht unbedingt besucht werden. Bei Fragen könnt ihr euch auch außerhalb der Rechnerzeiten jederzeit an einen der Betreuer wenden. Die Abgabetermine (AXAbgabe X) sind entweder zu den Rechnerübungsterminen oder in der Tafelübung. Zu einigen Aufgaben gibt es Teilabgaben (TXTeilabgabe X). Zu diesen Terminen muss jeweils ein bestimmter Teil der Aufgabe erfüllt sein.
Vorkenntnisse
- Unix-Kenntnisse (Shell, coreutils)
- Grundlagen Git (add, commit, push, pull)
- Grundlagen Compiler (Programme kompilieren, Buildsysteme in Grundzügen kennen, im Speziellen GCC und make)
- Kenntnisse in C
- Grundlagen von Betriebssystemen
- Was ist ein Kernel?
- Was ist ein Treiber?
- Was ist ein Thread?
Evaluation
Literatur
- Git. Verteilte Versionsverwaltung für Code und Dokumente
-
Open Source Press2011978-3941841420.
[BibTex]
- Hacking: die Kunst des Exploits
-
dpunkt-Verlag20089783898645362.
[BibTex]
Artikel auf LWN.net
Anmeldung und weitere Infos
Für diese Veranstaltung ist eine Online-Anmeldung über Stud.IP erforderlich. Bitte registrieren Sie sich (falls noch nicht geschehen) für Stud.IP und tragen Sie sich dort in die entsprechende Veranstaltung ein.
Stud.IP Veranstaltungen
Projekt System- und Rechnerarchitektur