Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Betriebssysteme
Betriebssystemauswahl
- 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/2eingestellt wurde - 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.
- http://www.pro-linux.de/artikel/2/1785/mit-uefi-statt-bios-booten.html - Aktuelle Linux-Distributionen können in ihrer 64-Bit-Variante sowohl unter dem neuen UEFI als auch mit herkömmlichen BIOS starten. Der Beitrag zeigt praktisch und theoretisch, wie dies im Detail funktioniert.
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:
/etc/profile/etc/profile.d/xxxx~/.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
- Dump und Restore (FreeBSD)
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:
- 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!"
- FreeBSD ⇒ Intel-Plattform so gut wie möglich unterstützen; viel Software-Portierungen (Ports); POSIX-konform; es ist der populärste aus diesem Bund
- 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-)ArbeitNexenta- 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 BSDSolaris- 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 (ifconfig → ip), 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:
