Seminarinformationen

Seminar - Ziel

In dieser 4-tägigen Schulung „LFD301 Einführung in Linux, Open-Source-Entwicklung und GIT" lernen Sie, Ihre Karriere in der Linux-Entwicklung erfolgreich zu starten – die Nachfrage nach Linux-Entwicklern ist so hoch wie nie zuvor. Dieser Kurs führt Sie in die Welt der Linux-Entwicklung ein und vermittelt Ihnen den notwendigen Hintergrund sowie die praktische Ausbildung, um sicher mit Linux arbeiten zu können. Wenn Sie darüber nachdenken, in die Linux-Entwicklung einzusteigen, ist dies der ideale Einstiegskurs.

In diesem Kurs lernen Sie die Geschichte von Linux kennen und verstehen, was es von anderen UNIX-ähnlichen Betriebssystemen unterscheidet. Sie erhalten einen Überblick über die zentralen Bestandteile eines Linux-Systems und deren Anwendung. Darüber hinaus werden die Grundlagen der Systemadministration behandelt, darunter Benutzer- und Gruppenverwaltung, essenzielle Linux-Befehle, Dateisysteme, Sicherheit sowie weiterführende Themen. Weitere Inhalte umfassen Netzwerk- und Threading-Modelle, Aspekte des Kompilierens und der Nutzung von Bibliotheken sowie die Arbeit mit Java unter Linux und weitere praxisrelevante Entwicklungsaspekte.

Der Arbeitsmarkt für Linux-Entwickler ist derzeit sehr stark nachgefragt. Dieser Kurs bereitet Sie gezielt darauf vor, sich den Reihen professioneller Linux-Entwickler anzuschließen.

Teilnehmer - Zielgruppe

  • Entwickler

Kurs - Voraussetzungen

Dieser Kurs richtet sich an Teilnehmer, die bereits erfahrene Computeranwender eines anderen Betriebssystems sind, jedoch nur geringe oder keine Erfahrung in einer Linux-Umgebung haben.

Seminardauer

  • 4 Tage
  • 09:00 Uhr bis 17:00 Uhr

Schulungsunterlagen

  • nach Absprache

Seminar-Inhalt / Agenda

Einführung

  • Ziele und Zielgruppe
  • Wer du bist?
  • The Linux Foundation
  • Urheberrecht und keine vertraulichen Informationen
  • Linux Foundation Training
  • Zertifizierungsprogramme und Digital Badging
  • Die Linux Foundation THRIVE-ONE-Abonnements
  • Linux Distributions
  • Platformen
  • Vorbereiten deines Systems
  • Benutzen und runterladen einer virtuellen Maschine
  • Dokumentation und Links
  • Änderungen in Linux und Open Source Projects

Open Source Software

  • Was ist Open Source Software?
  • Was ist proprietäre (Closed Source) Software?
  • Pragmatismus vs. Idealismus
  • Geschichte der Open Source Software
  • Open Source Governance-Modelle

Warum Open Source Software nutzen?

  • Kollaborative Entwicklung
  • Sicherheit und Qualität des Quellcodes
  • Nutzer: Flexibilität
  • Unternehmen: Kollaborative Entwicklung
  • Business: Marketing
  • Bildung: Schulen (K-12) / öffentliche Systeme
  • Bildung: Universität
  • Entwickler: Größere Sichtbarkeit
  • Labs

Beispiele erfolgreicher OSS-Projekte

  • Linux Kernel
  • git
  • Apache
  • Python, Perl und andere Programmiersprachen
  • TeX und LaTeX
  • GNU: gcc, gdb etc.
  • X und Desktop-Umgebungen
  • OpenStack, Kubernetes und andere Projekte

Arbeiten in OSS-Projekten

  • Überblick über korrekte Beitragsprozesse
  • Woher kommt der Code: DCO und CLA
  • Nah an der Mainline für Sicherheit und Qualität bleiben
  • Projekt-DNA studieren und verstehen
  • Herausfinden, welches Problem man lösen möchte
  • Maintainer und deren Workflows und Methoden identifizieren
  • Früh Feedback einholen und offen arbeiten
  • Kleine inkrementelle Beiträge statt großer Code-Dumps
  • Ego zurückstellen: nicht empfindlich reagieren
  • Geduldig sein, langfristige Beziehungen aufbauen, hilfreich sein

Continuous Integration

  • Warum Continuous Integration?
  • Kontinuierliche Bereitstellung und Auslieferung
  • Kosten und Nutzen
  • Tools
  • Beispiel: Linux Kernel Continuous Integration Project
  • The Continuous Delivery Foundation

OSS-Lizenzierung und rechtliche Aspekte

  • Restriktive vs. permissive Lizenzierung
  • FUD (Fear, Uncertainty and Doubt)
  • Softwarepatente
  • Patente und Lizenzen
  • Auswahl einer Lizenz
  • Kombination von Lizenzen
  • Labs

Führung vs. Kontrolle und warum Projekte scheitern

  • Führung vs. Kontrolle
  • Lockerung von Kontrolle
  • Mentoring
  • Vertrauen aufbauen
  • Warum OSS-Projekte scheitern
  • Labs

GitHub und andere Hosting-Anbieter

  • GitHub
  • Öffentlich vs. privat
  • GUI vs. Kommandozeile
  • Labs

Linux und das Betriebssystem

  • Kernel vs. Betriebssystem und Tools
  • Geschichte von Linux
  • UNIX und Linux
  • Linux-Distributionen
  • Linux Standard Base (LSB)
  • Labs

Grafische Umgebungen und Schnittstellen

  • Grafische Ebenen
  • X Window System
  • Window Manager
  • Desktop-Manager
  • Terminal-Fensteroptionen
  • Labs

Systemadministration

  • Installation
  • Softwareverwaltung und Packaging
  • Upgrades und Patching
  • Benutzerverzeichnisse, Umgebungen etc.
  • Log-Dateien

Hilfe finden

  • Dokumentationsquellen
  • man Pages
  • info
  • --help und help
  • Grafische Schnittstellen

Texteditoren

  • Verfügbare Editoren
  • vi
  • emacs

Shells, Bash und Kommandozeile

  • Shells
  • Shell-Initialisierung
  • Aliase
  • Umgebungsvariablen
  • Anpassung der Kommandozeilen-Prompt
  • Sonderzeichen
  • Umleitung (Redirection)
  • Pipes
  • Command Substitution und Ausdrücke

Dateisystemstruktur, Partitionen, Pfade und Links

  • Dateisystemstruktur
  • Partitionen
  • Überlegungen zur Partitionierung
  • Pfade
  • Hard- und Softlinks (symbolische Links)

Systeminitialisierung

  • Systemstart
  • Systeminitialisierung

Speicher- und Performance-Konzepte

  • Speicher
  • Swap
  • Threading-Modelle

Netzwerke

  • Netzwerk und Netzwerkschnittstellen

Wichtige Kommandos und Utilities

  • Basis-Kommandos und Utilities
  • Dateiübertragungs-Tools
  • Monitoring- und Performance-Tools
  • Grafische Monitoring-Tools
  • Kernel-Module laden/entladen
  • Geräteverwaltung
  • Systemdienste verwalten

Benutzer, Gruppen und Berechtigungen

  • Grundlagen von Benutzern und Gruppen
  • Benutzer und Gruppen hinzufügen/entfernen
  • Dateien, Benutzer und Berechtigungen
  • root Benutzer, su und sudo

Linux-Dateisysteme

  • Dateisysteme und VFS
  • ext2, ext3 und ext4
  • Journaling-Dateisysteme
  • btrfs
  • Einhängen (Mounting) von Dateisystemen
  • RAID
  • LVM

Wichtige Kommandozeilen-Tools

  • Dateien und Verzeichnisse auflisten, erstellen, löschen, umbenennen
  • Dateien finden: find und locate
  • Text suchen: grep
  • Text ersetzen: sed

Bash Scripting

  • Script-Grundlagen
  • Bedingungen (Conditionals)
  • Schleifen (Loops)
  • Funktionen

Dateien und Berechtigungen

  • Dateitypen
  • Berechtigungen und Zugriffsrechte
  • Berechtigungen und Ownership ändern

Kompilieren, Linken und Libraries

  • gcc
  • Weitere Compiler
  • Wichtige gcc Optionen
  • Statische Bibliotheken
  • Dynamische Bibliotheken (Shared Libraries)
  • Linking von Libraries
  • Debugging mit gdb

Java Installation und Umgebung

  • Write Once and Use Anywhere?
  • Java Installation unter Linux
  • Umgang mit mehreren JREs und JDKs (alternatives System)
  • Umgebungsvariablen und Classpaths
  • Integrierte Entwicklungsumgebungen (IDE)

RPM- und Debian-Pakete bauen

  • Warum Package Management nutzen?
  • Vorteile von Packaging-Systemen
  • Linux-Distributionen und Package Management
  • RPM Erstellung
  • RPM spec Datei
  • Details zu spec Sections
  • RPM Abhängigkeiten
  • Debian Package Workflow

Einführung in Git

  • Versionsverwaltung
  • Die Herkunft der Quellcodes nachvollziehen: DCO CLA
  • Verfügbare Versionsverwaltungssysteme
  • Grafische Benutzeroberfläche
  • Dokumentation

Git und Versionskontrollsysteme

  • Konvertieren zwischen zwei verschiedenen Systemen
  • RCS and CVS
  • Subversion
  • git
  • Git und verteilende Entwicklung

Using Gilt. Beispiele

  • Basis Kommandos
  • Einfache Beispiele

Git Installation

  • Binäre Installation
  • Installieren aus dem Quellcode

Git Konzepte und Architektur

  • Konzepte
  • Design-Features
  • Repositories
  • Objekte und Index
  • Content vs. Pfadnamen
  • Commit vs. Publishing
  • Upstream und Downstream
  • Forking

Dateien und Index verwalten

  • Dateikategorien
  • Basis-Dateikommandos

Commits

  • Commit erstellen
  • Identifiers und Tags
  • Commit-Historie anzeigen
  • Revert und Reset
  • Repositories bereinigen
  • Wer ist verantwortlich? (Blame)
  • Bisecting

Branches und Diffs

  • Was ist ein Branch?
  • Branch-Namen vs Tags
  • Branch erstellen
  • Branch Checkout
  • Frühere Versionen von Dateien wiederherstellen

Diffs

  • Differenzieren von Dateien
  • Diffing in Git

Merging und Rebase

  • Was ist Merging?
  • Merge-Kommandos
  • Rebase

Remote Collaboration

  • Arbeiten mit anderen
  • Cloning
  • Projekt veröffentlichen
  • Fetching, Pulling

Patch-basierte Entwicklung

  • Warum Patches verwenden?
  • Patches erzeugen
  • E-Mail Versand
  • Patches anwenden

Erweiterte Git Interfaces: Gerrit

  • Modi verteilter Entwicklung
  • Gerrit
  • Review-Prozess

Abschluss und Evaluationsumfrage

  • Evaluierungsumfrage

Weitere Schulungen zu Thema Linux Foundation

LFD459 Kubernetes für App-Entwickler

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 3-tägigen Seminar „LFD459 Kubernetes für App-Entwickler“ lernen Sie, wie Sie Anwendungen in einem Multi-Node-Cluster containerisieren, hosten, bereitstellen und konfigurieren. Sie beginnen mit einem einfachen Python-Skript, definieren Anwendungsressourcen und ...

LFS458 Kubernetes Administration

- u.a. in Nürnberg, Berlin, Stuttgart, München, Köln

In diesem 4-tägigen Seminar „LFS458 Kubernetes Administration“ erhalten Sie fundiertes Wissen zu den grundlegenden Konzepten und herstellerunabhängigen Werkzeugen für den Aufbau und die Verwaltung von Kubernetes-Clustern in Produktionsumgebungen. Sie setzen sich mit ...

LFD420 Linux Kernel Internals und Development

- u.a. in Paderborn, Düsseldorf, Mannheim, Virtual Classroom, Marburg

In diesem 4-tägigen Seminar „LFD420 Linux Kernel Internals und Development“ erwerben Sie ein tiefgehendes Verständnis für die Entwicklung im Linux-Kernel. Sie lernen die Architektur von Linux kennen, machen sich mit grundlegenden Entwicklungsmethoden im Kernel vertraut ...

LFD473 PyTorch in Practice: An Applications-First Approach

- u.a. in Paderborn, Zürich, Dresden, Essen, Erfurt

In dieser 4‑tägigen Schulung „LFD473 PyTorch in Practice: An Applications-First Approach" liegt der Fokus darauf, Ihnen praxisorientierte Kenntnisse zu PyTorch zu vermitteln und Sie zu befähigen, KI‑Applikationen zu prototypen. Sie starten mit der Entwicklung von ...