Freitag, 24. Juni 2016

102.5 RPM und YUM-Paketverwaltung verwenden

Wichtung: 3


  • RPM Red Hat Package Manager
  • Fast alle Distributionen, die nicht auf Debian basieren arbeiten mit dem RPM
  • Installation von kompilierten Programmen im Binärformat, allerdings ohne Auflösung von Abhängigkeiten
  • Auflösung der Abhängigkeiten, Beschaffung notwendiger Pakete und Installation derselbigen übernehmen Frontends, wie z.B. YUM
  • Dateiname Pakete Aufbau: bash-3.0-15.i586.rpm
    • bash      Name des Pakets
    • 3.0         Versionsnummer des Pakets
    • 15           Revisionsnummer 
    • i586        unterstütze Architektur


Konfigurationsdateien

  • Hauptkonfigurationsdatei von RPM ist rpmrc, die sich in verschiedenen Verzeichnissen befinden kann
  • /etc/rpmrc      enthält systemweite Konfiguration, die auch erhalten bleibt, wenn RPM aktualisiert wird. Diese Datei ist normalerweise nicht vorhanden und muss bei Bedarf erzeugt werden
  • /usr/lib/rpm/rpmrc     systemweite Konfiguration, die mit der Aktualisierung von RPM überschrieben wird
  • /usr/lib/rpmrc             veralteter Speicherort, der /usr/lib/rpm/rpmrc entspricht
  • .rpmrc im Benutzerverzeichnis definiert Einstellungen, die nur für einen bestimmten Benutzer gelten sollen
  • Prüfungsrelevant ist nur das Wissen, dass diese Dateien existieren. Veränderungen an diesen Dateien werden nur vorgenommen, wenn man selbst Pakete erzeugt
  • /usr/lib/rpm                Verzeichnis enthält Skripte, die RPM für das Paketmanagement verwendet
  • /var/lib/rpm                 Datenbanken mit installierten Komponenten, Abhängigkeiten, Konflikten und anderen Informationen, nicht Prüfungsrelevant


Verwendung von RPM selbst

  • Prüfungsrelevant ist nur das Kommando rpm selbst, darüber hinaus gibt es jedoch weitere RPM-Programme, wie z.B. rpmbuild, rpmverify, rpmquery, rpmheader, rpmarchive
  • rpm -i bzw. --install     Installiert das angegebene Paket
  • rpm -U bzw. --upgrade     aktualisiert das Paket, bzw. installiert es einfach, wenn keine Vorgängerversion gefunden wurde
  • für diese beiden Modi gibt es weitere Parameter:
    • -h bzw. --hash        Fortschrittsanzeige mit 50 Hash (#)-Zeichen
    • Zwangsinstallation von Paketen möglich, wenn z.B. Abhängigkeiten nicht erfüllt sind, oder Konflikte mit bestehenden Paketen bestehen. Nur anwenden, wenn man weiß, was man tut ;-) daher gibt es keine Buchstabenausführung
      • --force                       Installation bei bestehenden Konflikten
      • --nodeps                     lässt die Prüfung von Abhängigkeiten bei der Installation aus
    • -v bzw. --verbose     Verbose-Mode
    • --test                                   testet und nimmt keine Änderungen am System vor
  • rpm -e bzw. --erase       (früher --uninstall) entfernt das Paket
    • --nodeps                               lässt die Prüfung von Abhängigkeiten bei der Deinstallation aus
  • rpm -V <Paket>                          Überprüfung (-verify) eines installierten Pakets, ob die dazu gehörenden Dateien gelöscht oder modifiziert wurden
    • --nofiles                              keine Warnung bei fehlenden Dateien ausgeben
    • --nomd5                                 keine Warnung bei md5-Pfrüfsummenfehler ausgeben
    • --nopgp                                 keine Warnung bei PGP-Signaturfehler ausgeben
    • ausgegeben Informationen sind folgendermaßen definiert:
      • S (Size)      Größe weicht vom Original ab
      • M (Mode)      Berechtigung auf die Datei wurde geändert
      • 5 (MD5)        die Checksumme ist abweichend
      • D (Device)  Fehler in Gerätenummer
      • L (Link)      Fehler im Pfad des Softlinks
      • U (User)      Besitzer der Datei wurde geändert
      • G (Group)    Besitzergruppe der Datei wurde geändert
      • T (Time)      Änderungszeit der Datei wurde geändert
      • Fehlercodes sind nicht prüfungsrelevant, nur die Kenntnis darüber, dass eine Überprüfung ausgeführt werden kann      
  • rpm -F bzw. --freshen     aktualisiert Pakete nur, wenn sie tatsächlich schon vorhanden sind
  • rpm -q <Paket>                          Abfrage auf RPM-Datenbank dient ohne weitere Optionen dazu, heraus zu finden, ob das Paket installiert ist
  • zusätzliche Parameter können sein:
    • - a bzw. --all                   listet alle auf dem System installierte Pakete auf (Filterung mit Hilfe grep möglich). Bietet sich auch an, wenn man sich nicht sicher ist, wie ein bestimmtes Paket genau heißt
    • -f <datei> bzw. --file <datei>     listet das Paket auf, was zu einer bestimmten Datei gehört
    • -p <paketname>                       durchsucht ein definiertes Paket, welches nicht installierte ist. Um zu spezifizieren, welche Informationen man ausgegeben haben möchte, stehen folgende Optionen zur Verfügung:
      • -c bzw. --configfiles  nur Config-Daten
      • -d bzw. --docfiles          nur Dateien der Dokumentation
    • -l bzw. --list          Liste der im Paket enthaltenen Dateien
    • -R bzw. --requires              Abhängigkeiten zu anderen Paketen
    • -i bzw. --info                       umfangreiche Informationen zu einem Paket
  • -i (ohne q davor) = Installation                  -qi = Abfrage
  • Beispiel: rpm -Uhv /i586/fortune-1.0-860.i586.rpm (Installation des Pakets fortune mit Fortschrittsanzeige)  
  • Pakete umwandeln um einzelne Dateien zu extrahieren: rpm2cpio; cpio (copy in and out) ist ein Programm zur Bearbeitung von Archiven
    • Umwandlung des rpm-Pakets in ein cpio-Paket und dann die gewünschte Datei extrahieren
    • rpm2cpio kommt ohne Optionen ausrpm2cpio samba-3.3.2-0.33.rpm > samba.cpio
    • Umwandlung und Extraktion ist in einem Schritt möglich
      rpm2cpio samba-3.3.2 -0.33.rpm |cpio -ivd usr/share/man/man7/samba.7 (Installation der reinen Manpage auf dem System) 


yum und der yumdownloader

  • "Frontend" (ähnlich apt-get) für RPM-Pakete
  • /etc/yum.conf                     Hauptkonfigurationsdatei; Festlegung u.a. des Cache-Verzeichnisses
  • /var/cache/yum                  Standard Cache-Verzeichnis
  • /etc/yum.repos.d               Verzeichnis, welches Dateien enthält, die die URLs zu den RPM-Paketen enthalten
  • yum search Paket         Suche nach einem bestimmten Programm; Ausgabe ist recht umfangreich und detailiert. U.a. wird auch das zur Installation benötigte Paket genannt
  • yum install Paket       Download und Installation des Pakets
  • yum remove Paket         Entfernen des Programms (incl. Konfigurationsdateien?)
  • yum list updates        Auflistung der zu aktualisierenden Pakete (auch als nicht root ausführbar)
  • yum update                     Aktualisierung der installierten Pakete (im Unterschied zu apt-get update, wo die Repositories aktualisiert werden)
  • yum update kernel     Aktualisierung des Kernels
  • yumdownloader ist ein reines Hilfsmittel, um die RPM-Pakete aus dem Internet herunter zu laden
    • --destdir     Angabe eines Zielverzeichnisses. Ansonsten wird das aktuelle Verzeichnis verwendet
    • --urls          Anzeige der URL-Quelle, kein Download
    • --resolve     Auflösen von Abhängigkeiten und download der zusätzlich benötigten Pakete
    • --source       download der Programmquelle anstatt der Binärdatei

Paketmanagment ist unbedingt Prüfungsrelevant

102.4 Debian-Paketverwaltung verwenden

Wichtung: 3


  • Paketverwaltung bei Debian-basierten Distributionen (Ubuntu, Mint, Knoppix, etc.)
  • Selbstkompilierte Programme können nicht sauber deinstalliert werden
  • Dies kann durch paketbasierte Installation vermieden werden
  • Aufbau eines Debian-Paket-Dateiname:
    • fortune-mod_1.99.1-3_i386.deb
      fortune-mod:   Name des Pakets
      1.99.1:              Versionsnummer
      -3:                     Releasenummer
      i386:                 unterstützte Architektur

Konfigurationsdateien und Verzeichnisse

  • dpkg -> debian package
  • /etc/dpkg/dpkg.cfg   Konfigurationsdatei, in der die Voreinstellungen bei Verwendung von dpkg definiert sind. Die Datei wird zeilenorientiert ausgelesen, jede Zeile nur eine Option. Standardausführung mit nur einem Eintrag, der die Logdatei definiert log /var/log/dpkg.log
  • /var/lib/dpkg/info          Zusammenstellung von Skripten und Dateien die für die korrekte Installation und Deinstallation benötigt werden. Sollte eine manuelle Deinstallation notwendig werden, findet man in der entsprechenden .list Datei alle zum Programm gehörende Dateien und Verzeichnisse

  • /var/lib/dpgk/status          Informationen über installierte Pakete und bereits deinstallierte Pakete. Dabei wird angegeben, ob das Paket vollständig installiert oder das Paket vollständig deinstalliert wurde. Des Weiteren werden hier die abhängigen Pakete, Versionen und viele andere Informationen ebenfalls angegeben
  • /var/lib/dpkg/available         Liste der verfügbaren (System?) Pakete mit Informationen über Größe, Autor, Abhängigkeiten, etc. Hier werden ALLE Pakete aufgeführt, auch die bereits installierten, was jedoch in der Liste selbst nicht zu erkennen ist. 
  • /etc/apt/apt.conf                Konfigurationsdatei der apt-Tools. Normalerweise ist nur der verwendete Proxy eingetragen, damit die Pakete aus dem Internet heruntergeladen werden können (Unter Ubuntu habe ich nicht eine Datei apt.conf, sondern ein Verzeichnis mit einigen Konfigurations(?)-Dateien
  • /etc/apt/sources.list             Quellen für apt-get. Liste mit FTP- oder HTTP-Servern, von denen aus die Software installiert werden kann. Zusätzlich werden auch lokale Quellen aufgeführt.

DPKG-Programme

  • Verwaltung von Programmen auf Debianbasierten Systemen mit dpkg
  • Alternativ wird heutzutage apt-get verwendet (Frontend von dpkg), dselect oder aptitude sind auch möglich, aber veraltet bzw. nicht so gebräuchlich 
  • dpkg ist Prüfungsrelevant, auch die nicht so bekannteren Optionen, auf Groß- und Kleinschreibung achten
  • Optionen können oft sowohl als einzelner Buchstabe (mit -), wie auch als Wort (mit --) verwendet werden
    dpkg -i Paket
    <=> dpkg --install Paket
  • häufig verwendete Optionen von dpkg:
    • -i <paketname> bzw. --install <paketname> installiert das Paket
    • -r <paketname> bzw. --remove <paketname> deinstalliert das Paket, Konfigurationsdateien bleiben erhalten
    • -P <paketname> bzw. --purge <paketname> deinstalliert das Paket inkl. Konfigurationsdateien
    • -s <paketname> bzw. --status <paketname> Ausgabe Informationen über Paket
    • -C bzw. --audit zeigt Pakete an, die nur teilweise installiert sind
    • -L bzw. --listfiles Anzeige, welche Dateien ein Paket installiert hat (dpkg-query Funktion)
    • -l <pattern> bzw. --list <pattern>  listet Statusinformationen für alle installierten Pakete, die auf <pattern> passen
    • es gibt auch noch optionale Parameter, mit denen man das Verhalten steuern kann:
      • -E      verhindert, dass das ein bereits installiertes Paket mit der gleichen Version überschrieben wird
      • -G     verhindert, dass eine ältere Version über ein bereits installiertes Paket installiert wird
      • -R     geht ein Verzeichnis rekursiv durch und installiert alle dort enthaltenen Pakete
  • Ubuntu Manpage http://manpages.ubuntu.com/manpages/lucid/en/man1/dpkg.1.html#contenttoc11
  • Ubuntuusers https://wiki.ubuntuusers.de/dpkg/
  • dpkg scheint nur Informationen über Systemprogramme zu enthalten

dselect

dpkg-reconfigure

  • dpkg-reconfigure Neukonfiguration des Paketes
  • dpkg-reconfigure -a Neukonfiguration aller Pakete (kann einige Zeit in Anspruch nehmen)

apt-get

  • aktuelles Frontend für dpkg
  • Programme können installiert, deinstalliert, konfiguriert und diagnostiziert werden. Pakete und Paketquellen können aktualisiert werden
  • /etc/apt/sources.list      Information über die Indexlisten; woher bezieht apt-get seine Informationen. Bearbeitung ist manchmal notwendig, wenn Programme installiert (und aktualisiert) werden sollen, die nicht in den Reposorities enthalten sind
  • update                         Aktualisierung der Paketquelle
  • upgrade                       Aktualisierung der Pakete
  • dist-upgrade           Aktualisierung der Pakete, wobei auch Pakete installiert und deinstalliert werden können
  • install                       Installiert Pakete
  • remove                         Deinstalliert Pakete, aber nicht die Konfigurationsdateien
  • purge                           Deinstalliert Pakete inkl. Konfigurationsdateien
  • markauto                    Paket als automatisch installiert markieren
  • unmarkauto                Pakete als manuell installiert markieren
  • Ubuntuusers https://wiki.ubuntuusers.de/apt/apt-get/?redirect=no
  • Debian manpage http://manpages.debian.org/cgi-bin/man.cgi?query=apt-get

apt-cache

  • Verwaltung des Caches des apt-Systems, Informationsdatenbank aller verfügbaren Pakete
  • Führt keine Manipulation an den Dateien/ Programmen aus
  • Bei Installation von Programmen werden die Quellen im Cache zwischengespeichert
  • /var/cache/apt               Verzeichnis, wo der Cache zu finden ist
  • apt-cache stats      Übersicht des Caches anzeigen
  • aptitude clean         Reinigung des Chaches
  • depends                        Abhängigkeiten eines Programmes darstellen (Informationen aus den Metadaten der Pakete)
  • show                               Ausgabe eines vollständigen Datensatz (u.a. Versionsnummer, Abhängigkeiten, etc.) zu einem bestimmten Paket, welches nicht zwingend installiert sein muss (aber in den Archiven verfügbar)
  • search                             suchen nach Paketen in den Archiven
  • Ubuntuusers https://wiki.ubuntuusers.de/apt/apt-cache/
  • Debian Manpage http://manpages.debian.org/cgi-bin/man.cgi?query=apt-cache

aptitude

  • Benutzerschnittstelle, auch mit grafischer Oberfläche im Terminal. Stellt eine Erweiterung zu APT da. Die Benutzung beider Pakete parallel ist nicht zu empfehlen. 
  • Suche nach Paketen möglich, deren Namen nicht genau bekannt sind
    aptitude search Suchbegriff
    Interessante Ausgabe, Pakete werden mit Markern v, i, p versehen
    i = installiert
    p = Paket
    v = version?
  • weitere Optionen: update, upgrade, clean und autoclean; Diese Optionen arbeiten mit apt-get zuverlässiger
  • ähnlicher Funktionsumfang wie apt-get, wobei apt-get wohl zuverlässiger arbeitet. Allerdings scheinen die Suchfunktionalitäten, auch in Abhängigkeiten komfortabler zu sein, als in apt-get
  • unter Ubuntu nicht standardmäßig installiert
  • Ubuntuusers https://wiki.ubuntuusers.de/aptitude/
  • Debian Manpage http://manpages.debian.org/cgi-bin/man.cgi?query=aptitude

alien

  • Konvertierung von nicht dpkg-Pakete zur Installation
  • Unterstützt verschieden Ein- wie auch Ausgabedateiformate
  • unterstützte Pakettypen:
    • rpm (Red Hat)
    • deb (Debian)
    • tgz (Slackware) veraltet
    • pkg (Solaris)
    • slp (Stampede) veraltet
  • Konvertierung und Installation mit einem Befehl möglich
  • alien fortune.rpm --to-deb Konvertierung eines rpm-Paketes in ein .deb Pakets
    • Minor-Versionsnummer wird dabei hochgezählt
    • -k bzw. --keep-version kann das verhindern
    • ursprüngliches Paket bleibt erhalten

Für die Prüfung sollte der Umgang mit Debian-Paketen vorhanden sein, Akzent liegt allerdings auf apt-get und aptitude

Donnerstag, 23. Juni 2016

102.3 Shared Libaries verwalten

Wichtung: 1

Heinlein:

  • linken bedeutet, dass immer wieder verwendete Routinen in sogenannten Bibliotheken gesammelt werden und diese dann in dem Programm verlinkt werden (Include-Bibliotheken)
  • Zwei Möglichkeiten der Verlinkung:
    • statische Verlinkung: Hier werden die Routinen direkt in den Programmcode übernommen. Heraus kommt ein allein lauffähiges Programm (monolithisches Programm) welches auf den unterschiedlichsten Systemen lauffähig ist
    • dynamische Verlinkung: Die notwendigen Programmroutinen werden nicht direkt eingebunden, sondern es werden nur entsprechende Verweise auf die entsprechenden Bibliotheken eingebunden. Vorteil: Programmcode ist kleiner! Was zusätzlich von Vorteil ist, dass das Betriebssystem diese Bibliotheken einmal in den RAM lädt, wo sie allen Programmen zur Verfügung stehen. Durch den Zugriff auf den RAM werden auch die Zugriffszeiten beschleunigt. Des Weiteren spart es RAM, da die Bibliothek nur einmal geladen wird und nicht für jedes Programm extra.
  • ldd <path/programm>     Ausgabe der benötigten shared libaries des Programms oder anderer shared libaries aus. -> Manpage
  • Im Programmcode ist nur der Name des gelinkten Programmes enthalten, nicht aber sein Pfad, der von System zu System unterschiedlich sein kann
  • Um die Suche bei effizient zu gestalten, beschränkt die Datei /etc/ld.so.conf die Suche auf wenige Verzeichnisse. Um auch diese Zugriffszeit schneller zu gestalten, sorgt der Lauf des Programmes ldconfig dafür, dass alle Bibliotheken in den unter /etc/ls.so.conf enthaltenen Pfaden in einer schnell auslesbaren Binärdatei gesammelt werden. Dort schaut Linux dann nach, wo es die benötigten Bibliotheken laden kann
  • Wurden neue Bibliotheken auf dem System installiert muss ldconfig gestartet werden, damit diese Bibliotheken dem System bekannt gemacht werden können. Im Allgemeinen übernimmt das das Setup-Programm der Distributionen (z.B. SUSEconfig) diese Aufgabe. Installiert man aber von Hand, muss man unbedingt ldconfig von Hand ausführen, damit die /etc/ld.so.conf aktualisiert wird. Sollten die benötigten Bibliotheken nicht in den Standardpfaden abgelegt sein, muss die /etc/ld.so.conf von Hand nachbearbeitet werden.
  • Die Pfade /lib und /usr/lib sind nicht in der /etc/ld.so.conf enthalten, da diese beiden per Default sowieso indexiert werden
  • /etc/ld.so.conf enthält nur einen Verweis auf das Verzeichnis /etc/ld.so.conf.d. In diesem Verzeichnis liegen dann verschiedene Konfigurationsdateien, die die eigentlichen Verweise enthalten. Die Dateien sind allerdings ziemlich leer.
  • ldconfig      erzeugt die benötigten Links und sammelt die notwendigen Bibliotheken, die immer wieder benötigt werden. Die Informationen dafür kommen aus der /etc/ld.so.conf und aus den /lib und /usr/lib Verzeichnissen. -> Manpage
    • ldconfig -p    Ausgabe aller im Cache gespeicherten Libaries
    • ldconfig -n    Verwendet nur die angegebenen Verzeichnisse in /etc/ld.so.conf und nicht die Standardverzeichnisse /lib und /urs/lib
  • /lib/ld.so     runtime linker/loader
  • /etc/ld.so.cache    in diesem File werden alle in den Verzeichnissen gefundenen Bibliotheken aufgelistet
  • Um eigene Bibliotheken testen zu können, übergibt man der Variable LD_LIBRARY_PATH die entsprechenden Pfade, wo die Bilbliotheken zu finden sind. Standardmäßig ist die Variable nicht gesetzt

Dienstag, 21. Juni 2016

102.2 Einen Bootmanager installieren -stil under construction-

Wichtung: 2

an dieser Stelle ist mein Buch glaube ich Mist :-(

Wichtigste Wissensgebiete:

  • alternative und Notfall-Startmöglichkeiten vorsehen
  • einen Bootloader wie GRUB Legacy installieren und konfigurieren
  • grundlegende Konfigurationsänderungen an GRUB 2 durchführen
  • mit dem Bootloader interagieren
Liste wichtiger Dateine, Verzeichnisse und Anwendungen:
  • /boot/grub/menu.lst, grub.cfg und grub.conf
  • grub-install
  • grub-mkconfig
  • MBR
Alternative Wissensquelle: Wikipedia Artikel
-----------------------------------------------------------------------------------------------------------------

  • Boot-Strap-Loader: Ein Programm, welches die notwendigen Schritte für den Bootvorgang ausführt
  • Nach Initialisierung des BIOS sucht es auf startfähigen Laufwerken nach Boot-Strap-Loadern
    • Auf Festplatte in Sektor 0 -> Entweder direkt der Boot-Strap-Loader oder Verweis innerhalb der Partitionstabelle auf aktive Partition, die den Boot-Strap-Loader enthält
  • Für Linux ist GRUB der Boot-Strap-Loader (LILO ist veraltet): GRUB Legacy oder GRUB 2
  • Aufgabe: Kernel finden und starten
  • Wenn Aufgabe erledigt ist, Kontrolle an Kernel übergeben

GRUB Legacy

  • zweistufiger Bootloader (eigentlich dreistufig, da Stage 1,5 eingefügt wurde)
  • Programm für Stage 1 befindet sich im MBR, Kopie unter /boot/grub/stage1 (nicht unter Ubuntu und Debian) 
  • Was macht Stage 1?boot.img welches im MBR gespeichert wurde oder optional in einem sog. volume boot record (VBR) und ist exakt 446 bytes groß. boot.img adressiert Stage 1.5 core.img über eine LBA48 Adresse . Während der Installation ist Stage 1 so konfiguriert, dass es den des core.img lädt.
    • Binärdatei (auslesen mit od -h stage1)
  • Stage 1,5  Wofür ist Stage 1,5 zuständig? Stage 1.5 repräsentiert das core.img und wird normalerweise in dir Sektoren zwischen MBR und der ersten Partition geschrieben. Dieser freie Platz ist historisch bedingt normalerweise nicht belegt, da die erste Partition einer Festplatte nicht bei Sektor 1, sondern bei Sektor 63 beginnt. So entsteht ein freier Platz von 62 Sektoren. Dieser Platz reicht nicht für eine Partition oder Dateisystem. Wird core.img ausgeführt, lädt es seine Konfigurationsdateien und andere benötigte Module, ebenso die Dateisystem-Treiber. Während der Installation wird core.img durch diskboot.img generiert und konfiguriert, so dass es Stage 2 anhand seines Dateipfads laden kann.
  • Stage 2 Datei befindet sich unter /boot/grub/stage2 (nicht unter Ubuntu), stellt das Boot-Menu für den Benutzer bereit und startet den Kernel. Laut der Wikipedia Seite befinden sich die Dateien unter /boot/grub
  • GRUB kann einige Dateisysteme lesen (im Gegensatz zu LILO) und ist daher in der Lage, Dateien anhand ihres Namens zu finden
    • Unterstützung einer beschränkten Anzahl von Dateisystemen: ext2/ ext3/ ext4/ ReiserFD und XFS
  • Nach Aktualisierung des Kernels oder Neuinstallation muss GRUB nicht neu installiert werden
  • GRUB liest beim Booten erst die Konfiguration aus und sucht die zu startenden Dateien zusammen -> daher lassen sich die Parameter während des Bootvorgangs noch ändern

  • GRUB-Legacy-Prompt kann verwendet werden um mit Bootloader zu interagieren (z.B. Fehlerfall)
    • Es kann der Kernel hieraus manuell gestartet werden
    • Position des Hauptverzeichnis, des Kernels und vorhanden die Position der Initial RAM-Disk werden benötigt
      grub> root (hd0,0)
      grub> kernel /boot/vmlinuz-2.6.23....fc7 root=/dev/sda2
      grub> initrd /boot/initrd-2.6.23....,fc7.img
      grub> boot
  • Für GRUB ist die erste Partition auf der ersten Festplatte immer hd0,0 egal, um welche Art von Platte es sich handelt
  • /boot/grub/device.map erzeugt für den Bootloader die notwendige Zuordnung von GRUB-Notation zu "Linux-Geräten" (hd0 = /dev/sda)
  • /boot/grub/menu.lst (Softlink auf grub.conf) Einträge für jedes zu startende Betriebssystem
  • /boot/grub/grub.conf wird in einigen Distributionen auch unter /etc/grub.conf abgelegt, da sie nicht von GRUB während des Bootvorgangs, sondern von grub-install verwendet wird

GRUB 2

  • völlig neuer Bootloader
  • /boot/grub/menu.lst darf nicht mehr per Hand konfiguriert werden, da bei GRUB2 diese Datei immer wieder neu generiert wird.
  • grub-mkconfig übernimmt diese Aufgabe, wobei es dabei auf viele kleine Shellskripte und Konfigurationsschnipsel aus /etc/grub.d zurück greift
  • GRUB 2 unterstützt weiterhin die gleichen Dateisysteme und Kernelversionen wie GRUB legacy
  • GRUB 2 hat eigene Konfigurationsdateien unter /etc
  • Hauptkonfigurationsdatei grub.cfg befindet sich weiterhin unter /boot/grub (oder /boot/grub2)
    • wird durch grub-mkconfig (grub2-mkconfig) generiert
    • Vorlage sind die Dateien /etc/default/grub und Dateien unterhalb von /etc/grub.d
  • Konfiguration des GRUB 2 erfolgt ausschließlich über die Dateien unter /etc/grub.d
  • anstatt der langen Eingabe grub-mkconfig -o /boot/grub/grub.cfg kann auch der kürzere Alias update-grub verwendet werden

LILO (nicht mehr relevant)


  • LILO kann keine Dateisysteme lesen, sondern speichert nur die Nummern der zu ladenden Sektoren
  • LILO speichert die Position des Kernels, nicht den Namen. D.h. wenn ein Update des Kernels gefahren wird, oder ein neuer Kernel installiert wird, muss LILO ebenfalls neu installiert werden
  • Fehlermeldungen beim Booten nicht direkt lesbar:
    • L <errorcode>     Erste Stufe wurde geladen und gestartet. Start der zweiten Stufe schlug fehl. Der zweistellige <errorcode> gibt Details zum Fehler bekannt, z.B. nicht funktionierende Plattengeometrie
    • LI             die zweite Stufe wurde geladen, konnte aber nicht gestartet werden. Mögliche Ursache: /boot/boot.b wurde im Dateisystem verschoben oder die Plattengeometrie stimmt nicht.
    • LIL                  Zweite Stufe wurde gestartet, kann aber nicht auf die Map-Datei zugreifen, oder findet sie nicht
    • LIL?                       Zweite Stufe wurde geladen, verweist aber auf eine ungültige Adresse (Fehler in der Plattengeometrie oder verschobene /boot/boot.b
    • LIL-                        Die Beschreibungstabelle (Descriptor Table) konnte nicht richtig gelesen werden (übliche Fehlerursache)
    • LILO                        alles hat ordnungsgemäß geklappt

GRUB und LILO

  • beide Boot-Manager können weitere Boot-Manager starten (seite 62 Heinlein)
  • beide können Windows starten (wie auch jedes anderes OS)


Fragen, die übrig bleiben:

  • Wie installiert man einen Bootloader?
  • Was gehört zur Konfiguration dazu?
  • Interaktion mit Bootloder (Prompt) auch ohne Fehlerfall möglich? Wenn ja, wie?
  • Was ist mit UEFI?






Montag, 13. Juni 2016

102.1 Festplattenaufteilung planen

Wichtung 2


Übersicht der Systemverzeichnisse: 
  • Layout der Partitionierung
  • Überfüllung eines Verzeichnisses kann die Stabilität des ganzen Systems beeinflussen
  • Separierung von Daten zur Sicherung möglich
  • Früher bei alten BIOS Versionen oder veralteten Versionen von LILO musste in der Partitionsreihenfolge die /boot Partition als erstes eingeplant werden
    • Bootpartition sollte ziemlich klein gehalten werden (ca. 50MB)
    • Probleme konnten wohl auftreten, wenn der Bootloader oder das Kernel-Image oberhalb von den 1.024 Zylinder der Festplatte lag
  • SWAP: Im Gegensatz zu anderen Betriebssystemen lagert Linux erst die Daten aus, wenn der (physikalische) RAM voll ist
  • Größe des SWAPs ist daher massiv abhängig von der Größe des RAMs. Ist der RAM groß genug, wird kein SWAP benötigt. Faustregel: Doppelt so viel Swap Space wie physikalischer Speicher vorhanden ist. Ich habe 10% der SSD-Platte als Swap-Space bei meinem Rechner eingerichtet
  • /-Verzeichnis (root-Verzeichnis): Größe hier ist abhängig von der Distri und wie viele weitere Partitionen eingerichtet werden sollen (wenigstens 20GB) Mein root-Verzeichnis hat 8,3GB belegt
  • /usr: Meins umfasst 5,1GB -> Empfehlung des Autors 10GB. Allerdings ist /usr Teil des root-Verzeichnisses -> ist mir nicht ganz klar, warum ich eine eigene Partition machen soll? Antwort: Das usr/ -Verzeichnis enthält Daten, die für alle Netzwerknutzer zur Verfügung stehen. Man könnte z.B. die Partition "Readonly" mounten
  • /var: 2GB; Es gibt Unterschiede zwischen den Distributionen, aber dieser Wert sollte ausreichend sein (1,2GB auf meinem Rechner verwendet); Anleage ebenfalls aus dem Sicherheitsaspekt heraus, damit der User mit privaten Daten nicht den root-Bereich vollaufen lassen kann
  • /tmp: 400MB (bei mir definitv weniger); eigene Partition, damit der Nutzer die root-Ebene nicht fluten kann
  • /home: Um hier die Größe zu bestimmen, sollte man wissen, welche Daten man hier ablegen möchte und dann entsprechend die Größe selbst bestimmen
  • Prüfungstipp: Dateisysteme müssen oft gesichert werden, welche nicht? 
  • Anmerkungen aus Heinlein: die Verzeichnisse /bin /sbin /lib dürfen auf keinen Fall auf eine eigenen Partition ausgelagert werden, da hier wichtige Programme wie mount oder fsck für den Systemstart hinterlegt sind. Das Gleiche gilt auch für /etc, wo ja unter anderem die /etc/fstab liegt. Bei allen möglichen Aufteilungen  ist das Verhältnis zwischen Nutzen und Aufwand zu bedenken, und mögliche Folgeprobleme sollten ebenfalls bedacht werden


LVM Logical Volumen Manager 

  • Abstraktion des physikalischen Datenträgers gegenüber des Dateisystems
  • Mehrere Datenträger werden als ein Volumen formatiert -> Dateisystem nimmt dieses als eines wahr
  • nachträgliche Erweiterung des Volumens dadurch möglich (sollte dem Server der Speicherplatz ausgehen, schraubt man einfach ein paar Festplatten mehr dran und erweitert das Volumen)
  • LVM-Komponenten und ihre Zusammenhänge
    • Physikalische Volumen (pv): vergleichbar mit echten Partitionen auf einer Festplatte, werden mit fdisk vorbereitet, Dateisystem ist 8E
    • Volumen-Gruppe (vg): Zusammenschluss aus mehreren physikalischen Volumen, Erweiterung der Gruppe nachträglich möglich
    • Logische Volumen (lv): werden innerhalb der Volumen-Gruppe erstellt, Partitionen aus Sicht des Dateisystems und werden hier gemounted und verwendet
  • Kommandos bezüglich der Verwendung der LVM-Komponenten kann man sich hier anschauen: ls -l /sbin/pv* /sbin/lv* /sbin/vg*   Sollte hier nichts angezeigt werden, ist lvm nicht installiert
  • Um eine neue Festplatte für LVM verfügbar machen zu können, müssen geeignete Partitionen mittels fdisk (auch cfdisk) vom Typ Linux LVM (8E) erstellt werden
Verwendung und Einrichtung von LVM ist erst Thema von LPIC2 


SWAP-Partition

  • swapon          mounten einer fertigen Swap-Partition
  • swapoff          deaktivieren der Swap-Partition
  • mkswap         formatieren der Swap-Partition
  • Erweitern der Swap-Speichers:
    • Unter Unix ist alle eine Datei :-)
    • zwischen der Angabe /dev/hda6 (Swap-Partition) und /var/swap ("echte" Datei) ist erst mal kein großer Unterschied
    • anlegen einer Datei (z.B. 128 MByte) mit dem Programm dd
    • formatieren der Datei mit mkswap
    • einbinden der Swap-Datei mit swapon
    • Nachteil dieser Vorgehensweise ist, dass der Zugriff auf eine Datei immer langsamer erfolgen kann, als auf eine Partition, da über das Dateisystem vorgegangen wird und es sein kann, dass die Datei fragmentiert auf dem Laufwerk abgelegt ist
    • Vorteil: Die Neupartitionierung des Systems wird umgangen
    • # dd if=/dev/zero of=/var/swap bs=1024k count=128
      # chmod 600 /var/swap
      # mkswap /var/swap
      # swapon /var/swap
    • prüfen, ob Ausführung erfolgreich war über die Datei /proc/swaps