GNU / Linux für Fachinformatiker (Systemintegration), Teil 1

Unterrichtsmaterialien

Folien

Installation Hyper-V

... und bei der Gelegenheit auch WSL.

Windows-Server

Einrichtung Hyper-V VM

  1. Maschine Erstellen

    • Name "Live" oder so (eigentlich egal)
    • Generation 2 (nicht egal!)
    • 4096 MB Arbeitsspeicher (2048 reichen eigentlich auch)
    • Festplatte ist erstmal egal
    • Live-Medium live-dvd.iso (wie oben)
  2. Zusätzliche Konfiguration

    • Rechtsklick auf "Live" → Einstellungen
    • Prozessor: CPU-Kerne nach Bedarf (z.B. 4)
    • Arbeitsspeicher: kein dynamischer Arbeitsspeicher
    • Sicherheit: Sicheren Start deaktivieren (wichtig!)

Aufgabe Dateipfade

Benutzt ls um folgende Ausgabe anzuzeigen:

-r--r--r-- 1 root root 12M 17. Nov 11:30 /boot/vmlinuz

-r--r--r-- 1 root root 12M 17. Nov 11:30 vmlinuz

-r--r--r-- 1 root root 12101568 17. Nov 11:30 ../boot/vmlinuz

-r--r--r-- 1 root root 12M 17. Nov 11:30 ../vmlinuz

                       ^- Größe beachten ^- Pfad beachten

Antwort wieder als Screenshot im Privatchat

Hiniweis:

  • Absolute Pfade beginnen immer mit einem /.
  • Relative Pfade beginnen niemals mit /.
  • Relative Pfade gelten relativ zum Arbeitsverzeichnis.
  • Das Arbeitsverzeichnis wechselt man mit cd.

Hinweis: Es gibt mehrere Dateien namens vmlinuz im System. Diese sehen aber unterschiedlich aus und alle Beispiele hier zeigen die selbe Datei.

Zusatz: Sorge dafür, dass alle vier Zeilen direkt untereinander stehen.

Dateisysteme

Dateisysteme_1.svg

Aufgabe Dateien und Ordner

Mit dem Kommando tree kann man Dateien in einer Baumansicht anzeigen.

Erstelle folgenden Ordnerbaum. Ortsnamen sind Ordner, Bahnhöfe sind Dateien.

~$ tree -C DE/
DE/
├── Berlin
│   ├── Berlin Alexanderplatz
│   ├── Berlin Friedrichstraße
│   ├── Berlin Ostbahnhof
│   ├── Berlin Ostkreuz
│   └── Betriebsbahnhof Rummelsburg
└── Brandenburg
    ├── Brand Tropical Island
    ├── Cottbus
    │   ├── Cottbus Hbf
    │   ├── Cottbus-Merzdorf
    │   ├── Cottbus-Sandow
    │   └── Cottbus-Wilmersdorf Nord
    ├── Lübbenau (Spreewald)
    ├── Lübben (Spreewald)
    ├── Raddusch
    └── Vetschau

4 directories, 14 files

Schickt mir am Ende via Teams einen Screenshot per Privatnachricht.

Hinweis: Benötigte Kommandos sind touch und mkdir. Nutzt cd, um weniger Schreibarbeit zu haben. Wenn ihr euch vertippt, müsst ihr auch rm, rmdir, oder mv nutzen.

Hinweis: Nicht nur Leerzeichen müssen besonders behandelt werden ;-)

Zusatz

Man kann den ganzen Ordnerbaum mit zwei Befehlen erstellen. Postet mir die Befehlszeilen.

Manuelle Installation

Teil 1, Freitag 28. Nov.

~# fdisk /dev/sda
 : g
 : n
 > 1
 > 2048
 > +64M
 : n
 > 2
 > (enter)
 > +20G
 : n
 > 3
 > (enter)
 > -8G
 : n
 > 4
 > (enter)
 > (enter)
 : t
 > 1
 > 1
 : w

~# mkfs.vfat -F32 -n SYSTEM /dev/sda1
~# mkfs.ext3 -L Debian /dev/sda2
~# mkfs.btrfs -L home /dev/sda3
~# mkswap -L SWAP /dev/sda4

~# mount /dev/sda1 /mnt
~# debootstrap --variant=minbase trixie /mnt
~# mount -o rbind /dev /mnt/dev
~# mount -o rbind /proc /mnt/proc
~# mount -o rbind /sys /mnt/sys

~# chroot /mnt
  ~# apt-get install --no-install-recommends grub-efi network-manager init nano linux-image-amd64
  ~# mkdir /boot/efi
  ~# mount /dev/sda1 /boot/efi
  ~# grub-install
  ~# update-grub

Root-Passwort fixen via GRUB-"Hack"

  • Im grub-Menü e drücken
  • in der linux ...-Zeile quiet ersetzen durch init=/bin/bash

    • Amerikanische Tastatur (muhahaha)
  • F10 zum durchbooten
  • → Prozess 1 wird eine bash als root-User (win!)
  • → Filesystem ist aber readonly :-(
  • ~# mount -o remount,rw /
  • ~# passwd
    ...
  • ~# mount -o remount,ro /

/etc/fstab erzeugen mit nano

# Quelle     Mountpunkt   Typ    Optionen       Dump/Pass
/dev/sda2    /            ext4   rw             0 0
/dev/sda3    /home        btrfs  defaults       0 0
/dev/sda1    /boot/efi    vfat   ro,umask=0077  0 0
UUID=...     none         swap   sw             0 0

Teil 2, Dienstag, 2. Dez. (Legacy-Boot)

~# fdisk /dev/sda
 : o
 : n
 > p
 > 1
 > 2048
 > -8G
 : n
 > p
 > 2
 > (enter)
 > (enter)
 : w

~# mkfs.btrfs /dev/sda1
~# mkswap /dev/sda2

~# mount /dev/sda1 /mnt
~# btrfs subvolume create /mnt/trixie
~# btrfs sub cre /mnt/home
~# debootstrap --variant=minbase trixie /mnt/trixie

~# umount /mnt
~# mount -o subvol=trixie /dev/sda1  /mnt
~# mount -o rbind /dev /mnt/dev
~# mount -o rbind /proc /mnt/proc
~# mount -o rbind /sys /mnt/sys

~# chroot /mnt
  ~# apt-get install --no-install-recommends grub-pc net-tools ifupdown busybox-static nano vim isc-dhcp-client iputils-ping linux-image-amd64 init systemd-

~# grub-install /dev/sda
~# update-grub
~# passwd
   ...

-> REBOOT

Aufgabe Pipelines

überfliegt die man-pages zu den Mini-Pipeline-Programmen
wc, grep, sort, uniq, cut, tr

Frage 1:

Wie viele verschiedene Straßen- u. Platznamen gibt es in Berlin?

Hinweis: Es gibt 13171 Einträge im Straßenverzeichnis. Hier kommen einige Straßen jedoch mehrfach vor, wenn sie durch mehrere Bezirke gehen.

Antwort via Teams-Privatnachricht.

Zusatz: Wie kann man genau die Einträge auflisten, die mehrfach vorkommen?

Frage 2:

Wie viele verschiedene Stadtteile gibt es laut Liste in Berlin.

Task-Switching und Speicherschutz (Multitasking)

CPU-Architektur

"Virtualisierung"

Historisch wird bereits Einfacher Speicherschutz als Virtualisierung betrachtet. Heutzutage sind mit dem Begriff idR. Hypervisor-Techniken gemeint, die Abstufungen sind jedoch vielfältig.

Speicherschutz, Chroot, Usermode Linux, Container, Emulation, Hypervisor

Aufgabe Reguläre Ausdrücke

Geht die Lektionen auf https://regexone.com durch.

Hinweis: beachtet den Erklärtext. Es geht darum die Muster mit den jeweils angegeben Techniken zu finden, nicht nur irgendwie.

Zusatz: Versucht die selben Suchmuster im Programm grep nachzuvollziehen. Beachtet, dass dort das Suchmuster als Argument, und der Suchtext als "Eingabedatenstrom" übergeben werden.

Hinweis: Die Regex-Syntax von der Webseite entspricht grep -P. Nutzt außerdem grep --color=auto -P ....

Aufgabe Netzwerk

Stellt sicher, dass ihr auf einem Rechner im Schulungsraum arbeitet.

Verbindet euch mit nc/netcat/ncat zu 10.0.9.104 Port 1024.

Schickt mir einen Screenshot des Textes, der euch entgegen kommt.

Zusatz: Schaut in der man-Page zu ncat nach, wie ihr den augehenden Port bestimmen könnt. Verbindet euch von Port 2048 aus.

Hinweis: Das Programm auf dem Server ist

~$ ncat -vklp 1024 0.0.0.0 -c 'cat "Text.txt"'

Aufgabe TMUX

Benutzt tmux um Text vom Terminal zu kopieren.

Auf dem Dozentenrechner (ssh user@10.0.9.104) liegt eine Datei namens "ソニー株式会社" (der Name der Firma Sony). Benutzt die Kopieren-und-Einfügen-Funktion von tmux um den Dateinamen zu Kopieren und jeweils eine Datei namens "ソニー株式会社-NAME" (mit eurem Namen) anzulegen.

  1. Strg+b [ → zum Text scrollen
  2. Strg+SPACE → Text markieren
  3. Alt+w → kopiert den Text
  4. Strg+b ] → fügt den Text ein

Hinweis: Benutze dazu eine eigene tmux-Session → Strg+b d (um die gemeinsame Session zu verlassen), tmux (ohne Argument) starten.

WSL - Windows Subsystem for Linux

\> wsl --update
\> wsl --install -d debian
\> wsl --set-version debian 2
\> wsl --list -v
-> sollte Debian in WSLv2 listen
\> wsl
-> Startet die Linux-Shell
~$ sudo apt-get update
~$ sudo apt-get install pciutils usbutils psutils psmisc net-tools x11-apps kcalc
^^ für die Beispile, die wir hier fahren

Logical Volume Manager (LVM)

Physical Volumes - Volume Group - Logical Volumes

Aufgabe VIM

Startet im Terminal das Programm vimtutor und geht das Tutorial durch.

Zusatz (einfach):

  • Probiert den vi-Modus in kate aus.

Zusatz (Advanced!):

  • Wie kann man eigentlich automatisch Klammern schließen lassen?
  • Wie kann ich Zeilennummern einblenden

    • in roter Farbe ;-)
  • Wie kann man in einem Shellscript IF-Bedingungen einklappen

Hinweis: vergesst nicht, Pause zu machen.

Aufgabe xargs

LPIC-1 101 Handbuch, Seite 298 (nach gedruckter Seitenzahl), Aufgabe 4:

Der Befehl convert image.jpeg -resize 25% small/image.jpeg erzeugt eine kleinere Version von "image.jpeg" und legt das resultierende Bild in einer gleichnamigen Datei des Unterverzeichnis "small" ab. Wie ist es mit xargs möglich, für jedes in der Datei "filelist.txt" aufgeführte Bild den gleichen Befehl auszuführen?

Hinweis um die Voraussetzungen zu erfüllen:

~$ sudo apt-get install imagemagick
~$ wget "https://plutz.net/training/damago_2025_11/[attachment]/"HVServer-{1..5}.png
~$ mkdir small/
~$ printf %s\\n HVServer*png >filelist.txt
~$ convert HVServer-1.png -resize 25% small/HVServer-1.png

(die letzte Zeile ist nur ein Beispielhafter Aufruf. Dieser Befehl soll via xargs automatisiert werden)

Oktale Zugriffsberechtigungen (Einführung)

 U   G   O
rwx rwx rwx

111 111 111
  7   7   7

  6   4   4
110 100 100
rw- r-- r--

rwx r-x r-x
  7   5   5

Beispiele:

~$ chmod 644 filelist.txt, ~$ chmod 755 filelist.txt