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

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.