U n i x    ( T o o l s )

  1. Im Vorfeld

    Die Absicht an dieser Stelle ist (Unix) Tools zu dokumentieren. Über die Vorgehensweise sind folgende Eckpunkte stets in Erinnerung zu behalten:

  2. Systeminstallation

    1. Vorgehensweise

      Systeminstallation heißt in diesem Zusammenhang eine Betriebssystemsversion auf eine interne Festplatte eines Rechners zu installieren: alle sich früher dort befindlichen Daten gehen unwiederbringlich verloren, es sei denn man vielleicht hochentwickelte Tools der "Computerforensik" einsetzt.

      Heutzutage sind für die (Neu-)Installation aller Betriebssysteme gleiche Schritte erforderlich:

      1. ISO-Image herunterladen:
        Man lade ein ISO-Image {BS_Version.iso} des nackten Betriebssystems (BS) von der Website des BS-Anbieters herunter. Sie erkennt in der Regel die relevanten HW-Merkmale des herunterladenden Rechners (Prozessor, etc.) automatisch, und schlägt die geeignete ISO-Datei vor. Wenn der herunterladende Rechner nicht vom gleichen Rechnertyp ist, als der zu installierende Rechner, muss darauf geachtet, dass die (manuell gewählte) {BS_Version.iso} die richtigen HW-Merkmale voraussetzen.

      2. Bootfähigen Datenstick erstellen:
        Die ISO-Datei {BS_Version.iso} wird auf einen (USB-)Datenstick kopiert - wobei der Kopiervorgang keinem normalen Dateikopieren entspricht, da das Booten auf einer Ebene operiert, wo noch Dateisysteme gar nicht existieren: Es geht um das nackte Übertragen von Binärinformationen aus physikalischen Sektoren, das sogenannte "dumpen". Aus diesem Grund sind besondere Tools (commands) bzw. Programme nötig, um einen sogenannten bootfähigen Datenstick zu erstellen.

      3. Rechner mit dem bootfähigen Datenstick hochfahren:
        Der zu installierende Rechner wird abgeschaltet. Der USB-Datenstrick wird an den Rechner angeschlossen. Der Rechner wird hochgefahren.
        Erwartet wird, dass der Bootvorgang über den Datenstick stattfindet. Ist es der Fall, wird der Installationsvorgang angestoßen. Der User kann gegebenenfalls die Konfiguration mitbestimmen, indem er zur Wahl stehende Optionen annimmt oder abwählt.
        Wird der Datenstick beim Hochfahren nicht berücksichtigt, müssen Optionen des Hochfahrenvorgangs angepasst werden: Es müsse sichergestellt werden, dass der Rechner via den Datenstick hochfährt, wenn er bootfähig ist - und nicht von der Festplatte.

    2. Beispiel (k)unbuntu

      Im Folgenden werden Installationsbeispiele im Bezug auf das Betriebssystem (k)ubuntu dokumentiert. Wichtige Infos zu einzelnen Installationssitzungen werden jeweils zusammengefasst.

      1. kubuntu Upgrade Version 18.04.5 LTS auf Version 20.04.2 LTS
        Merkmal Beschreibung
        Datum 31.01.2021
        URL https://kubuntu.org/getkubuntu/
        Bisher installierte Version kubuntu 18.04.5 LTS
        Zu installierende Version kubuntu 20.04.2 LTS
        Bootfähiger
        Datenstick
        Die Schritte zur Erstellung eines bootfähigen Datensticks gleichen einer Reihe von einzelnen Befehlen, die auf einem Terminal (Konsole) eingetippt werden.
        1. Herunterladen der ISO-Datei ubuntu-20.04-desktop-amd64.iso aus der Website kubuntu: getkubuntu
          Anm.: Zur Dokumentation bewahre ich die ISO-Dateien der letzten Distributionen zusammen mit anderen zugehörigen Dateien (Prüfsummen, Signaturen, eigene Notizen, etc.) auf einem gesicherten Medium auf.

        2. "dumpen" der ISO-Datei auf den Datenstick:

          In dem Fall habe ich das Tool ddrescue verwendet - siehe Anmerkungen unten. Folgender Befehl wird eingetippt:

          sudo addrescue ubuntu-20.04-desktop-amd64.iso /dev/sdX --force -D

          /dev/sdX ist das Blockgerät (BlockDevice), dem der USB-Datenstick zugeordnet ist.

          Tools wie dd und ddrescue werden mit Adminrechten verwendet und überschreiben gnadenlos das im Befehl eingetragene Blockgerät /dev/sdX - siehe Anmerkungen unten.

      2. Betrachtungen zu kubuntu Installationen
        1. Mein Rechner ist 64-bit. Daher ist er für neueste kubuntu Versionen unmittelbar geeignet. (Nach und nach wird der Support für die 32-bit Architektur aufgegeben.)

        2. In der Regel installiere ich Long Time Support (LTS) Releases.
          Derzeit (April 2021) ist die neueste kubuntu Version 20.10. Sie wird bis Juli 2021 unterstützt- keine LTS Distribution: ich werde sie nicht installieren.

        3. Sollten bestimmte Standardprogramme in veralteten Versionen geliefert werden, wird eine Lösung über das Paketmanagement angestrebt. Solcher Fall tritt beispielsweise regelmäßig für LibreOffice in Linux-Distributionen ein.

        4. Das Tool ddrescue ist eine Erweiterung des legendären dd (disk dump) Tools. Es ist bisher (April 2021) nicht Teil der Distributionen. Es muss manuell installiert werden - mit Hilfe des Kommandos apt install gddrescue.

        5. Um die Zuordnung der Blockgeräte eindeutig zu prüfen steht u.a. der Befehl lsblk zur Verfügung.

          • Über die output-Option (lsblk --output {LISTENTYP}) kann der Benutzer eine Liste von Merkmalen anzeigen lassen. Sinnvoll ist in diesem Zusammenhang folgende Liste {LISTENTYP}: NAME,FSTYPE,LABEL,SIZE,TYPE,MOUNTPOINT,VENDOR
          • Am Einfachsten kann man auch alle Merkmale ausgeben: lsblk --all

        6. Vor einer Neuinstallation muss der Benutzer seine Daten (Dokumente etc.) sichern. Dies betrifft nur Daten, die im Blockgerät gespeichert sind, wie das Betriebssystem. Daten, die auf vom Rechner trennbaren Geräten oder auf dem Cloud irgendeines Anbieters - gespeichert sind, bleiben naturgemäß unberührt.

    3. Beispiel Microsoft Windows 10

      Ich nutze derzeit Microsoft Windows 10 in der "Virtuellen Maschine": Eine Notwendigkeit und Absicherung, wenn Projekte Unterlagen erforderlich machen, die ausschließlich oder am besten unter Windows verarbeitet werden. Um Freunde und Bekannte zu unterstützen, die hauptsächlich oder ausschließlich mit Microsoft Windows 10 arbeiten, will ich hier die Schritte zur Erstellung eines bootfähigen USB-Stick für Windows 10 dokumentieren. Ironischerweise ist es wahrscheinlich einfacher, einen bootfähigen USB-Stick für Microsoft Windows 10 mit Unix-Tools zu erstellen, als über Tools, die von Microsoft veröffentlicht wurden. Die Dokumentation übernimmt das gleiche Schema, wie für (k)ubuntu vgl. Beispiel (k)unbuntu.

      Merkmal Beschreibung
      Datum 09.04.2021
      URL https://www.microsoft.com/en-us/software-download/windows10ISO
      Zu installierende Version Windows 10 (Optionen)
      • Dasselbe ISO-Image enthält sowohl die "Edition" Windows-home, als auch Windows-Pro: Die Datei ist 5,8 GiB groß. Zum Vergleich war die ISO-Image German_Win_Pro_10_1607_64BIT.ISO vom 28.08.2018 3,9 GiB.

      • Die Website lässt nicht die Wahl der Option Windows 10 October 2020 update zu. Ich gehe davon aus, dass dieses Update und ggf. weitere nach der Neuinstallation fällig sind.

      • German, 64-bit Download

      Bootfähiger
      Datenstick
      1. Herunterladen der ISO-Datei Win10_20H2_v2_German_x64.iso aus der Website https://www.microsoft.com/en-us/software-download/windows10ISO

      2. "dumpen" der ISO-Datei auf den Datenstick via Befehl:
        sudo ddrescue Win10_20H2_v2_German_x64.iso /dev/sdX --force -D
        (In meinem Fall hatte /dev/sdX den Wert /dev/sdc)

  3. Befehlsinterpreter (Shell)

    Wer Aufgaben erledigen will, die nicht auf Menüs der grafischen Benutzeroberfläche aufgelistet sind, oder auch wer repetitive Aufgaben automatisch erledigen will, muss auf die Kommando-Zeile zurückgreifen und Befehle eintippen. Es gibt zwei Arbeitsweisen:

    1. Im interaktiven Modus werden Befehle vom Benutzer einzeln eingetragen: Direkte Eingabe auf der Eingabeaufforderung, der Prompt-Zeile
    2. Im Stapelmodus wird eine Reihe von Befehlen automatisch abgearbeitet: Sie sind in durchführbare Textdateien (z.B. sh, bat) - namens Skripts - zusammengefasst.

    Der Stapelmodus ist eine mächtige Funktionalität, ohne die Systemadministratoren nicht arbeiten könnten. Alle modernen Betriebssysteme auf PC unterstützen ihn. Die Instanz, die solche Befehle aufnimmt und verarbeitet, heißt Befehlsinterpreter.

    • Auf modernen Microsoft Windows Systemen heißt er cmd.exe (CoMmanD line interpreter)
    • Auf Unix spricht man von Shell. Es gibt eine Vielzahl von Shells - entwickelt von Ikonen der Unix-Entwicklung. Die auf neueren Versionen von OSX (Stand 2016) standardmäßig installierte Shell ist bash (Bourne Again SHell). Der User kann diese Einstellung aber ändern - siehe auch Change the Shell in OSX.

    Der Befehlsinterpreter kann zwei Arten von Befehlen ausführen:

    • Funktionen, die im Befehlsinterpreter (von der Shell) selbst implementiert sind interne oder Builtin-Befehle.
    • Viele Funktionen (das ist ein prägendes Merkmal von Unix Systemen) werden nicht von Shell-Entwicklern geschrieben, sondern von unabhängigen Programmierern und nachträglich installiert - wobei der Speicherort dieser Programme nicht gleich für alle Unix-Systeme festgelegt wird (Für neue Benutzer eine verwirrende Tatsache).
      Ganz einfach: Jeder auf einer Unix-Distribution standardmäßig installierte Code, der auf der Kommandozeile ausführbar ist, wird externer Befehl bezeichnet. Im allgemeineren Sinne (wenn nicht standardmäßig installiert) wird von Tool gesprochen.

    Wie aus der Typologie ersichtlich, spielt für externe Befehl die Wahl der Shell keine Rolle. Dagegen können manche Shells Buitin Befehle anbieten, die andere nicht bereithalten. Der größte Unterschied zwischen den Shells (aus Benutzersicht) ist ihre Syntax bei komplexen Ausdrücken.

    Weitere Informationen entnehmen Sie dem Link Khelil/Kommandozeile

  4. Editieren

    Name Erläuterung Projekt-link
    ed

    ed ist ein Zeileneditor aus der Unix Gründerzeit. Interessant ist er vor allem deswegen, weil die Kommandozeile vom vi-Editor seine Befehlssyntax übernommen hat.

    Dok. ed
    vi

    vi ist ein Texteditor aus der unix-Welt. Er ist weit verbreitet - in Gestalt der vielen vim-Dialekte. Da ich selber G-Vim verwende - beispielsweise um diese Seiten zu schreiben - war es naheliegend, den Lernprozess zu dokumentieren.

    Dok. vi
    Tab. Allzweck-Editiertools

  5. Datensicherheit

    Thema Erläuterung
    GPG

    GNU Privacy Guard:
    Der Fokus der Seiten liegt bei der Handhabung des Tools GNU Privacy Guard, mit dem Dokumente - darunter Emails - authentifiziert und verschlüsselt werden können. Dabei werden grundlegende Begriffe erläutert.

    Anbei ein interner Link: GPG mit Beispielen aus der eigenen Praxis.

    LUKS

    LUKS steht für Linux Unified Key Setup, das Standardverfahren zur Festplattenverschlüpsselung unter Linux.

    Externe Links:

    Interne Links

    • Eigene Anwendungsbeispiele zur Verschlüsselung einer USB-Platte mit
      LUKS

    Tab. Schutz der eigenen Daten

  6. Software-Verwaltung

    Für die Software-Verwaltung - auch Paket-Management genannt - gibt es in der Welt der unixoiden Betriebssysteme eine Vielzahl von Optionen gegeben. In Seite Projekte_Tools_Unix_PackageManagement_EN.html (Englisch) beschränke ich mich auf Tools, mit denen ich gearbeitet habe - die von MacOSX und Linux -Benutzer je nach Bedarf und Präferenzen verwendet werden.

    OS Link
    MacOSX

    Mir sind mindestens 2 Tools bekannt: MacPorts, Homebrew.
    Für Details siehe Package Management for MacOSX

    Linux

    Für Linux droht die Vielfalt der Tools Neulinge zu überwältigen.
    Für Details siehe Package Management for Linux

    Installation und Verwaltung von Software

  7. Entwicklungstools

    Entwicklungstools sind alle Tools, die im Rahmen der Softwareentwicklung eingesetzt werden können.

    Viele Tools erledigen Aufgaben im Bezug auf Quelltexten. Beispiele solcher Aufgaben sind

    • die Dokumentenverwaltung (wobei der Begriff 'Dokument' weit aufgefasst wird),
    • die Begleitung der Software über ihren Lebenszyklus,
    • die Verwaltung der Anforderungen,
    • die Verwaltung der Softwareänderungen,
    • das Konfigurationsmanagement.

    Ihr Einsatz hängt von Bedingungen des Projektes ab, wie beispielsweise:

    • Komplexität der beabsichtigten Software,
    • Voraussichtliche Lebensdauer der Software,
    • Gesetzliche Vorgaben zur Datensicherheit, Anfälligkeit gegen falsche Handhabung,
    • Verwendete Technologien,
    • Rahmenbedingungen der Zusammenarbeit zwischen den Projektbeteiligten.

    Zur Erstellung der Quelltexte selbst, sind Editors und IDE verfügbar. Manche darunter sind allgemein einsetzbar. Andere sind nur auf eine Programmiersprache (z.B. C/C++, Java) abgestimmt.

    Es werden nur Tools besprochen, die in meinen (internen) Projekten eingesetzt werden. Eine übersichtliche Menge. Daher sehe ich davon ab, eine Typologie der Tools aufzustellen: Die alphabetische Aneinanderreihung in der folgenden Tabelle zunächst reicht aus.

    Name Erläuterung Link
    vi Ich verwende den Texteditor Mac-vim dazu, um folgende Dokumente zu schreiben:

    Im Rahmen eines internen Projekts habe ich mir vorgenommen, den Lernprozess zu dokumentieren.

    Dok. vi
    IDE: Qt

    Qt wird dazu verwendet, um Projekte in C++ zu realisieren.

    Dok. Qt
    Git

    Git wird dazu verwendet, Dokumente - hauptsächlich Quelltexte - zu verwalten.

    Dok. Git
    Tab. Tools der Softwareentwicklung