Benutzer-Werkzeuge

Webseiten-Werkzeuge


betriebssysteme

Dies ist eine alte Version des Dokuments!


Betriebssysteme

Betriebssystemauswahl

  • BSD (aus dem Ur - UNIX von AT&T aus den Bell Labs gewachsen)
  • Linux (freier UNIX-Klon)
  • Redox is a Unix-like Operating System written in Rust, aiming to bring the innovations of Rust to a modern microkernel and full set of applications.
  • HURD - "Das" GNU-Betriebssystem
  • MenuetOS - Projektbeginn: Mai 2000 (Version 0.01) / MenuetOS ist komplett in Assembler geschrieben und passt mitsamt seinen Anwendungen auf ein Medium mit zwei Megabyte Größe. Explizites Entwicklungsziel des Systems ist, die Extraschichten zwischen verschiedenen Teilen des Betriebssystems zu entfernen, die nach Ansicht der Entwickler die Programmierung komplizierter machen und Fehler erzeugen. MenuetOS steht unter einer geschlossenen Lizenz und unterstützt 64-Bit-Technologie und Mehrkernbetrieb.
  • KolibriOS - (2004 von MenuetOS abgespalten) KolibriOS ist komplett in Assembler geschrieben, steht unter der GPLv2 und ist auf 32-bit-Technologie und Einzelkernbetrieb beschränkt.
  • OS/2 - ich habe nur auf Linux und später auf BSD umgestellt, weil die Verbreitung, Unterstützung und später auch die Enwicklung von OS/2 eingestellt wurde
  • Solaris / OpenSolaris (aus einem frühen BSD gewachsen)
  • Inferno (Verlauf der AT&T - Entwicklungen: UNIX Plan9 Inferno)
  • ReactOS (freier Windows-Klon)

Systemwerkzeuge verschiedener Betriebssysteme

Bücher

für Einsteiger:

  • ISBN-10: 3-639-09900-1 (UNIX für Einsteiger - Grundlagen von UNIX und Linux von Leibner Peter)
  • ISBN-13: 978-3828710269 (Das Einsteigerseminar Unix von Frank Gehrke, Günter Klappheck und Matthias Wrigge)

für Fortgeschrittene:

  • ISBN-10: 3827313627 (Linux- Unix Kurzreferenz. Unix und seine Werkzeuge von Helmut Herold)

UEFI Secure Boot Modus

Die Idee hinter "UEFI Secure Boot" ist, dass nur vertrauenswürdige Software, die signiert sein muss, auf die Hardware zugreifen darf. Damit will man Viren zu Leibe rücken, die es schaffen, am Betriebssystem vorbei, sich in den Bootsektor einzupflanzen. Bootet der Rechner nur noch vertrauenswürdige Betriebssysteme, dann können Angreifer das System nicht mehr manipulieren.

dynamisch vergrößerndes Image

ein sich dynamisch vergrößerndes Image (Startgröße ⇒ 1MB), welches sich auf eine maximale Größe von bis zu 10GB vergrößern kann, kann man so erstellen:

# dd if=/dev/zero of=platte.img bs=1M count=1 seek=10240

UMASK

Vor Ubuntu 11.10 stand die Standard-UMASK auf "0022", seit Ubuntu 11.10 steht sie auf "0002"https://blueprints.launchpad.net/ubuntu/+spec/umask-to-0002

umask 0022 = 644 für Dateien und 755 für Verzeichnisse
umask 0000 = 644 für Dateien und 777 für Verzeichnisse
umask 0027 = 644 für Dateien und 750 für Verzeichnisse
umask 0077 = 644 für Dateien und 700 für Verzeichnisse
umask 0007 = 644 für Dateien und 770 für Verzeichnisse

Mögliche Werte für:
chmod (octal) umask (octal) Symbolisch Binäre Entsprechung
Lesen, schreiben und ausführen 7 0 rwx 111
Lesen und Schreiben 6 1 rw- 110
Lesen und Ausführen 5 2 r-x 101
Nur lesen 4 3 r-- 100
Schreiben und Ausführen 3 4 -wx 011
Nur Schreiben 2 5 -w- 010
Nur Ausführen 1 6 --x 001
Keine Rechte 0 7 --- 000

Die umask wird im Profil gesetzt, das kann man z.B. in diesen Dateien vornehmen:

  1. /etc/profile
  2. /etc/profile.d/xxxx
  3. ~/.profile

zum Beispiel so:

> echo "umask 0022" >> ~/.profile

bind-mount

Will man ein Verzeichnis woanders hin mounten, geht das bei Linux mit:

# mount -o bind /home/gross /home/klein/subdir

Bei FreeBSD geht das mit:

# mount -t nullfs /home/gross /home/klein/subdir

cat - tac

Das UNIX-Kommando "cat" listet eine Datei Zeile für Zeile auf, "tac" dagegen listet eine Datei Zeile für Zeile in umgekehrter Reihenfolge aller Zeilen auf.

Das ist oft sehr nützlich, leider gibt es dieses Kommando nur in Linux jedoch nicht in FreeBSD. In FreeBSD kann man exakt das gleiche Ergebnis erreichen, wenn man statt dessen "tail -r" verwendet. ;-)

ngrep (Netz-Grep)

die SMTP Verbindung beobachten:

# ngrep -d eth0 port 25

Dump und Restore

stat

FreeBSD

alle Statusangeben anzeigen:

# stat -x test.txt 
  File: "test.txt"
  Size: 10           FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ( 1002/ fritz)  Gid: ( 1000/ nutzer)
Device: 227,3155755234   Inode: 525336    Links: 1
Access: Sun Oct 23 16:08:13 2011
Modify: Sun Oct 23 16:08:13 2011
Change: Sun Oct 23 16:08:13 2011
# stat -s test.txt
st_dev=3155813346 st_ino=525336 st_mode=0100644 st_nlink=1 st_uid=1002 st_gid=1000 st_rdev=4294967295 st_size=10 st_atime=1319378893 st_mtime=1319378893 st_ctime=1319378893 st_birthtime=1319378893 st_blksize=4096 st_blocks=2 st_flags=0

Zugriffsrechte anzeigen:

# stat -f '%p' test.txt 
100644

Access (letzter Zugriff):

# stat -f '%Sa' test.txt
Oct 23 16:08:13 2011

Modify (letzte Veränderung des Inhaltes):

# stat -f '%Sm' test.txt
Oct 23 16:08:13 2011

Change (letzte Veränderung des Dateinamens):

# stat -f '%Sc' test.txt
Oct 23 16:08:13 2011

Linux

alle Statusangeben anzeigen:

# stat test.txt 
  File: „test.txt“
  Size: 10              Blocks: 24         IO Block: 4096   reguläre Datei
Device: 17h/23d Inode: 12338       Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/ fritz)   Gid: ( 1000/ nutzer)
Access: 2011-10-23 16:08:08.995003157 +0200
Modify: 2011-10-23 16:08:10.810996879 +0200
Change: 2011-10-23 16:08:10.818996848 +0200

Zugriffsrechte anzeigen:

# stat -c '%a' test.txt
644

Access (letzter Zugriff):

# stat -c '%x' test.txt
2011-10-23 16:08:08.995003157 +0200

Modify (letzte Veränderung des Inhaltes):

# stat -c '%y' test.txt
2011-10-23 16:08:08.995003157 +0200

Change (letzte Veränderung des Dateinamens):

# stat -c '%z' test.txt
2011-10-23 16:08:08.995003157 +0200

Bit-Breite

Es ist möglich, die Bit-Breite mit einem einzigen kleinen Aufruf zu ermitteln:

getconf LONG_BIT
64

Allerdings hat diese Angabe nichts mit der CPU zu tun, sondern mit dem Betriebssystem.

Mit uname wird gezielt die Hardwareunterstützung durch das Betriebssystem abgefragt.

uname -m
x86_64

Allerdings wird hier ein 32-Bit-Betriebssystem auch auf einer 64-Bit-Maschine nur "i386", "i486", "i586" oder "i686" ausgeben.

bei einer hohen Load die Übeltäter protokollieren

Diese Script läuft unendlich lange und protokolliert bei einer Load ab LOGLOAD die ersten 30 Zeilen der TOP-Ausgabe im /tmp-Verzeichnis unter dem Namen /tmp/bigload_[Datum]_[Uhrzeit].txt:

#!/bin/sh

LOGLOAD="8"

while true
do
      if [ "$(uptime | sed -e 's/\.[0-9,]* / /g' -e 's/\.[0-9]*$//' | awk '{print $(NF-2)}')" -ge "${LOGLOAD}" ] ; then
              top -b -n 1 | head -n30 > /tmp/bigload_$(date +%F_%H%M%S).txt
      fi
      sleep 1
done

too many open files

Die relevanten Werte können hiermit eingesehen und geändert werden.

betreffend der Shell bzw. den Benutzer (/etc/security/limits.conf):

# ulimit -n

diese Kerneloptionen gelten global (/etc/sysctl.conf):

# sysctl fs.file-max

geöffnete Dateien finden

was hat ein Programm geöffnet:

# lsof -c sendmail

welche Programme hängen am SMTP-Port:

# lsof -i :25

welche Programme haben Logfiles geöffnet:

# lsof +D /var/log

Anzeige aller Prozesse, die gerade auf die Datei "/usr/bin/vim" zugreifen (vi arbeiten):

# lsof /usr/bin/vim

Anzeige aller Prozesse, die gerade auf die CD-ROM-Gerätedatei "/dev/sdc" zugreifen:

# lsof /dev/sdc

Beenden aller Prozesse, die noch auf ein ins CD-ROM-Laufwerk eingelegtes Medium zugreifen:

# kill $(lsof -t /cdrom)

Anzeige aller offenen Dateien des Prozesses mit der PID 2326:

# lsof -p 2326

Anzeige aller offenen Dateien im Verzeichnis "/tmp" und seinen Unterverzeichnissen, ohne dabei auf symbolische Links zu achten:

# lsof +D /tmp

Anzeige aller vom Benutzer "max" geöffneten Dateien:

# lsof -u max

Anzeige aller offenen Dateien, die nicht der Benutzer "root" geöffnet hat:

# lsof -u ^root

Anzeige einer ähnlichen Prozessliste wie ps aux durch Auflisten der Einträge mit Dateideskriptoreintrag "txt" statt der sonst üblichen Nummer ("txt" steht für Programmcode und Daten, also eine ausgeführte Datei):

# lsof -d txt

Anzeige aller gelöschten Dateien, die noch geöffnet sind und daher Plattenplatz verbrauchen, aber in keinem Verzeichnis erscheinen (Dateien mit weniger als einem Link):

# lsof +L1

Anzeige aller netzwerkrelevanten Dateien:

# lsof -i

Anzeige aller netzwerkrelevanten Dateien, ohne die Portnummern als Dienstbezeichnung auszuschreiben und ohne die Hostnamen aufzulösen (daher deutlich schneller):

# lsof -i -P -n

Anzeige aller IPv6-bezogenen Dateien:

# lsof -i6

Anzeige aller aktiven Verbindungen:

# lsof -i | grep '\->'

Anzeige aller derzeit vom Benutzer "www-data" geöffneten Netzwerkdateien (UND-Verknüpfung durch "-a"):

# lsof -a -i -u www-data

Meine BS-Erfahrungen

Stand Ende 2000

In BSD wurden viele Details im Inneren besser umgesetzt als in Linux. Besonders FreeBSD kann durch die große Anzahl an portierten Programmen sehr gut als Arbeitsplatzbetriebssystem eingesetzt werden. Wenn unter *BSD ein "Port" existiert, ist die Installation von Software in *BSD einfacher als unter Linux, da der "Port" den Luxus bietet, das die Quelle, die Patches und andere Besonderheiten, dem USER nicht bekannt sein müssen da diese Informationen bereits im "Port" eingepflegt wurden.

Bei den bekanntesten Vertretern der BSD-Reihe handelt es sich um drei Betriebssysteme, die jeweils auf einem anderen Gebiet spezialisiert sind:

  1. NetBSD ⇒ saubere Programmierarbeit; Ordnung und Logik im System; POSIX-konform; möglichst viele Plattformen; Leitspruch: "Nur weil etwas funktioniert, heiß das noch lange nicht, dass es auch richtig programmiert wurde!"
  2. FreeBSD ⇒ Intel-Plattform so gut wie möglich unterstützen; viel Software-Portierungen (Ports); POSIX-konform; es ist der populärste aus diesem Bund
  3. OpenBSD ⇒ SICHERHEIT; viele Plattformen unterstützen;

Das selbst die GNU nicht ganz zufrieden mit dem Linux-Kernel ist sieht man schon daran, dass sie (trotz Kritik) das Projekt HURD nie eingestellt haben und sogar Portierungen der Debian GNU-Pakete auf die BSD-Kernel (z.B. Debian GNU/kFreeBSD) erfolgen. Linux ist eben mehr Marketing als Brillants. Linuz Torwalds (der Initiator des Kernels Linux) sagte einmal sinngemäß, das der Linux-Kernel nur gut genug zu sein braucht, er muss nicht perfekt sein; es sei viel wichtiger, das er über viele Funktionen verfügt. Das NetBSD-Team dagegen, vertritt dagegen nicht die Philosophie "Es funktioniert, also ist es richtig.", sondern "Es funktioniert nicht, bis es richtig ist.". Das NetBSD-Team legt auf die vollständige Befolgung von POSIX und Standard C am meisten Wert von allen freien Betriebssystemen.

Presse: Meine Erfahrungen decken sich mit diesen (doch teilweise recht aufwendig betriebenen) Test's:

Linux 2.4 vs. FreeBSD 4.1.1:

Fazit

Ich bin von NetBSD, FreeBSD und OpenBSD gleichermassen begeistert, jedes fasziniert auf seine eigene Art. Doch werde ich in meinem privaten Umfeld (ersteinmal) nur FreeBSD einsetzen, da am Arbeitsplatz (Workstation) die Anzahl der verfügbaren Software sehr wichtig ist und die speziellen Unterschiede der drei Produkte hier eine geringere Rolle spielen. Nach dieser Wertung heisst der Kandidat auf Platz 2 "NetBSD".

Stand 2008

Linux verwendet seit dem Kernel 2.6 endlich wieder ein brauchbares Speichermanagement und weil bei FreeBSD der Desktop immer noch recht stiefmütterlich behandelt wird, setze ich auf meinen Desktop-Rechnern (auch Laptop) seit 2005 Linux ein.

FreeBSD wird allerdings auf meinem Server bleiben!

Für diesen Zweck hatte ich verschiedene Betriebssysteme (NetBSD, Nexenta, Solaris und OpenSolaris) getestet. Aber leider hatte jedes dieser Betriebssysteme eigene lobenswerte Vorteile aber auch irgendeine Schwäche, mit der ich auf meinem Server nicht leben wollte. Und so wird FreeBSD auch in Zukunft auf meinem Server bleiben.

diese Schwächen haben mich besonders gestört:

  • NetBSD - hat keine Paketmanagement, bei einem Update hat man so sehr viel (Hand-)Arbeit
  • Nexenta - leider gibt es hier nur eine (für mich persönlich) unzureichende Anzahl an installierbaren Programmen, das beuen von Programmen ist deutlich unkomfortabler als bei BSD
  • Solaris - es gibt nur gegen Geld (Sicherheits-)Updates, das Paketmanagement ist eher rudimentär als komfortabel, weiterhin gibt es hier leider nur eine (für mich persönlich) unzureichende Anzahl an installierbaren Programmen, das beuen von Programmen ist deutlich unkomfortabler als bei BSD
  • OpenSolaris - leider gibt es hier nur eine (für mich persönlich) unzureichende Anzahl an installierbaren Programmen, das beuen von Programmen ist deutlich unkomfortabler als bei BSD

Stand Ende 2011

Linux hat mächtig aufgeholt, so das ich jetzt nicht mehr sagen kann, dass BSD besser ist als Linux oder das Linux besser ist als BSD… - Hinsichtlich der Sicherheit hat BSD aber immernoch deutlich die Nase vorne. Auch bei Änderungen im System ist BSD weiterhin deutlich Anwenderfreundlicher als Linux. Wenn beispielsweise in Linux Geschmacksrichtungen geändert werden (ifconfigip), hat das sehr oft zur Folge, dass man seine Skripte anpassen muss, solche nervigen Änderungen gibt es bei BSD nur dann, wenn es wirklich sein muss und sinnvoll ist (also sehr, sehr selten).

Aber anders ist es immer noch:

/home/http/wiki/data/attic/betriebssysteme.1651592811.txt · Zuletzt geändert: von manfred