O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Embedded Linux lernen mit dem Raspberry Pi

Book Description

Ein "Mitmach"-Buch, sehr praktisch aufgebaut. Der Leser kann die vorgestellten Inhalte mit seinem eigenen Raspberry Pi „nachbauen“.

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. Vorwort
  5. 1 Einleitung
    1. Zielgruppen
    2. Notwendige Voraussetzungen
    3. Scope
    4. Aufbau des Buches
    5. Weitere Informationen zu den Themenbereichen Embedded Systems und Embedded Linux
    6. Weitere Informationen zum Raspberry Pi
    7. Verzeichnisbaum
    8. Onlinematerial
  6. 2 Gut zu wissen
    1. 2.1 Die Architektur eingebetteter Systeme
      1. 2.1.1 Hardware
      2. 2.1.2 Software
        1. Firmware und Bootloader
        2. Kernel
        3. Prozessmanagement
        4. Memory Management
        5. IO-Management
        6. Device-Driver-Layer
        7. Userland
      3. 2.1.3 Auf dem Host für das Target entwickeln
        1. Host-/Target-Entwicklung
        2. Cross-Entwicklung
    2. 2.2 Arbeiten mit Linux
      1. 2.2.1 Die Shell
      2. 2.2.2 Die Verzeichnisstruktur
      3. 2.2.3 Editor
    3. 2.3 Erste Schritte mit dem Raspberry Pi
      1. 2.3.1 System aufspielen
      2. 2.3.2 Startvorgang
      3. 2.3.3 Einloggen und Grundkonfiguration
      4. 2.3.4 Hello World: Entwickeln auf dem Raspberry Pi
  7. 3 Embedded von Grund auf
    1. 3.1 Der Linux-Kernel
      1. Quellcode installieren
      2. Patchen
      3. Kernel konfigurieren
      4. Kernel generieren
    2. 3.2 Das Userland
      1. 3.2.1 Systemebene
        1. Userland im Selbstbau
        2. Erste Automatisierung
        3. Netzwerkeinbindung
        4. Init-System
      2. 3.2.2 Funktionsbestimmende Applikationen
    3. 3.3 Cross-Development für den Raspberry Pi
      1. 3.3.1 Cross-Generierung Kernel
      2. 3.3.2 Cross-Generierung Userland
      3. 3.3.3 Installation auf dem Raspberry Pi
        1. Bootpartition
        2. Systempartition
    4. 3.4 Bootloader »Das U-Boot«
      1. 3.4.1 Kernel von der SD-Karte booten
        1. Automatisierung des Bootloaders
      2. 3.4.2 Netzwerk-Boot
    5. 3.5 Initramfs: Filesystem im RAM
      1. Seperates Userland
  8. 4 Systembuilder Buildroot
    1. 4.1 Überblick
      1. Buildroot
    2. 4.2 Buildroot-Praxis
      1. 4.2.1 Installation auf der SD-Karte
      2. 4.2.2 Netzwerk-Boot per U-Boot
        1. Rootfs als Anhängsel des Kernels
        2. Kernel und Rootfilesystem separat
    3. 4.3 Systemanpassung
      1. 4.3.1 Postimage-Skript
      2. 4.3.2 Postbuild-Skript
        1. Allgemeine Vorbereitungen treffen
        2. Netzwerk starten
        3. Zeit setzen
        4. SSH-Server
        5. Zugriff auf die SD-Karte
        6. Webserver (httpd)
        7. Zusammengefasst
    4. 4.4 Eigene Buildroot-Pakete
      1. 4.4.1 Grundstruktur
        1. Download
        2. Auspacken
        3. Patchen
        4. Konfiguration
        5. Generierung
        6. Installation
        7. Clean und uninstall
      2. 4.4.2 Praxis
        1. Applikation
        2. Buildroot-Integration
    5. 4.5 Hinweise zum Backup
  9. 5 Anwendungsentwicklung
    1. 5.1 Cross-Development
      1. Transfer zum Target
    2. 5.2 Basisfunktionen der eingebetteten Anwendungsprogrammierung
      1. 5.2.1 Modularisierung
      2. 5.2.2 Realzeitaspekte
        1. Realzeitprioritäten vergeben
        2. Zeiten messen
        3. Schlafen legen
    3. 5.3 Hardwarezugriffe
      1. 5.3.1 Systemcalls für den Hardwarezugriff
      2. 5.3.2 GPIO-Zugriff über das Sys-Filesystem
  10. 6 Gerätetreiber selbst gemacht
    1. 6.1 Einführung in die Treiberprogrammierung
      1. 6.1.1 Grundprinzip
      2. 6.1.2 Aufbau eines Gerätetreibers
      3. 6.1.3 Generierung des Gerätetreibers
        1. Gerätetreiber für das eingebettete System
    2. 6.2 Schneller GPIO-Treiberzugriff
      1. 6.2.1 Digitale Ausgabe
        1. Hardwaremanagement
        2. Hardwarezugriff
        3. Generierung und Test
      2. 6.2.2 Digitale Eingabe
        1. Schaltungsaufbau
        2. Zugriff über das Sys-Filesystem
        3. Gerätetreiber
        4. Flags auswerten
      3. 6.2.3 Programmierhinweise zum Hardwarezugriff
        1. Wortbreite
        2. Byte-Ablagefolge
        3. Alignment
  11. 7 Embedded Security
    1. 7.1 Härtung des Systems
      1. 7.1.1 Firewalling
        1. Das müssen Sie wissen
        2. Paketfilter
        3. Application-Level-Firewall
        4. Firewall auf dem Raspberry Pi
        5. Test der Firewall
        6. Systemintegration der Firewall
      2. 7.1.2 Intrusion Detection and Prevention
      3. 7.1.3 Rechtevergabe
        1. Anwendung im Embedded Device
      4. 7.1.4 Ressourcenverwaltung
        1. Hauptspeicher
        2. Hintergrundspeicher
        3. Rechenleistung
        4. Netzwerk
        5. Sonstige Ressourcen
      5. 7.1.5 Entropie-Management
      6. 7.1.6 ASLR und Data Execution Prevention
        1. Address Space Layout Randomization (ASLR)
        2. Data Execution Prevention (DEP)
    2. 7.2 Entwicklungsprozess
      1. Definition der Anforderungen (Requirement Specification)
      2. Entwurf (Design)
      3. Implementierung
      4. Integration
      5. Test
      6. Wartung (Maintenance)
    3. 7.3 Secure-Application-Design
      1. 7.3.1 Sicherheitsmechanismen in der Applikation
      2. 7.3.2 Least Privilege
      3. 7.3.3 Easter Eggs
      4. 7.3.4 Passwortmanagement
      5. 7.3.5 Verschlüsselung
        1. Verschlüsselte Kommunikation
        2. Verschlüsselte Datenablage
      6. 7.3.6 Randomisiertes Laufzeitverhalten
  12. 8 Ein komplettes Embedded-Linux-Projekt
    1. 8.1 Hardware: Anschluss des Displays
    2. 8.2 Software
      1. Gerätetreiber
      2. Displayapplikation
      3. Webseite
    3. 8.3 Systemintegration
  13. Anhänge
    1. A Crashkurs Linux-Shell
      1. A.1 Elementare Kommandos zur Dateiverwaltung
      2. A.2 Systemkommandos
      3. A.3 Grundlegende Befehle zum Netzwerkmanagement
    2. B Crashkurs vi
    3. C Git im Einsatz
      1. C.1 Unterschiedliche Git-Bereiche
      2. C.2 Dateizustände
      3. C.3 Änderungen anzeigen
      4. C.4 Branching und Merging
      5. C.5 Remote-Repository
    4. D Die serielle Schnittstelle
    5. Literaturverzeichnis
    6. Stichwortverzeichnis
    7. Cover-Rückseite