Inhaltsverzeichnis
Hier beschreibe ich einige grundlegende Tipps zur Konfiguration und Verwaltung des Systems, überwiegend für die Konsole.
screen(1) ist ein sehr nützliches Werkzeug für Leute, die per Fernzugriff über unzuverlässige oder instabile Verbindungen auf ferne Rechner zugreifen möchten, da es für sporadische Unterbrechungen der Netzwerkverbindung gerüstet ist.
Tabelle 9.1. Liste von Programmen, die Netzwerkverbindungen mit Unterbrechungen unterstützen:
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
screen
|
V:192, I:292 | 988 | Terminal-Multiplexer mit VT100-/ANSI-Terminal-Emulation |
tmux
|
V:29, I:113 | 673 | Terminal-Multiplexer-Alternative (verwenden Sie stattdessen "Strg-B") |
screen(1) bietet nicht nur die Möglichkeit, in einem Terminal-Fenster mehrere Prozesse laufen zu lassen, sondern erlaubt auch einem Remote-Shell-Prozess, Verbindungsunterbrechungen zu überstehen. Hier ein typisches Anwendungsszenario für screen(1):
Sie melden sich auf einer fernen Maschine an.
Sie starten screen
auf einer einfachen Konsole.
Sie führen mehrere Programme in screen
-Fenstern aus, die
Sie über ^A c
("Strg-A" gefolgt von "c") erzeugen.
Sie können mittels ^A n
("Strg-A" gefolgt von "n")
zwischen den verschiedenen screen
-Fenstern hin- und
herschalten.
Plötzlich müssen Sie Ihr Terminal verlassen, aber Sie möchten Ihre aktuelle Arbeit nicht verlieren und deshalb die Verbindung erhalten.
Sie können die Verbindung zur screen
-Sitzung durch eine
der folgenden Methoden lösen:
Ganz brutal: die Netzwerkverbindung trennen;
Tippen Sie ^A d
("Strg-A" gefolgt von "d") und melden Sie
sich händisch von der Fernverbindung ab;
Tippen Sie ^A DD
("Strg-A" gefolgt von "DD"), damit
screen
die Verbindung löst und Sie abmeldet.
Sie melden Sich am gleichen fernen Rechner erneut an (funktioniert sogar bei Anmeldung über ein anderes Terminal).
Sie starten screen
über "screen -r
".
screen
verbindet ganz
von selbst alle vorherigen screen
-Fenster mit allen
aktuell laufenden Programmen.
![]() |
Tipp |
---|---|
Bei Verbindungen, die über Zeit oder Volumen abgerechnet werden, können Sie
mit |
In einer screen
-Sitzung werden alle Tastatureingaben zu
Ihrem aktuell laufenden screen-Fenster gesendet, außer Befehlseingaben. Alle
screen
-Befehlseingaben werden mittels
^A
("Strg-A") plus einer einzelnen Taste [plus
eventuellen Parametern] eingegeben. Hier einige wichtige zur Erinnerung:
Tabelle 9.2. Liste von Tastaturkürzeln für screen
Tastaturbefehl | Bedeutung |
---|---|
^A ?
|
eine Hilfe anzeigen (Tastaturkürzel anzeigen) |
^A c
|
ein neues Fenster erstellen und dorthin wechseln |
^A n
|
zu nächstem Fenster wechseln |
^A p
|
zu vorherigem Fenster wechseln |
^A 0
|
zu Fenster Nr. 0 wechseln |
^A 1
|
zu Fenster Nr. 1 wechseln |
^A w
|
eine Liste vorhandener Fenster anzeigen |
^A a
|
ein Strg-A als Tastatureingabe an das aktuelle Fenster senden |
^A h
|
Hardcopy des aktuellen Fensters in eine Datei schreiben |
^A H
|
Starten/stoppen des Aufzeichnens vom aktuellen Fenster in eine Datei |
^A ^X
|
Terminal sperren (Passwort-geschützt) |
^A d
|
Verbindung der screen-Sitzung zum Terminal lösen |
^A DD
|
Verbindung der screen-Sitzung lösen und abmelden |
Lesen Sie screen(1) bezüglich weiterer Details.
Viele Programme zeichnen ihre Aktivitäten im
"/var/log/
"-Verzeichnis auf:
der System-Log-Daemon: rsyslogd(8).
Lesen Sie dazu Abschnitt 3.2.5, „Die Systemmeldungen“ und Abschnitt 3.2.4, „Die Kernel-Meldungen“.
Hier eine Liste erwähnenswerter Analyseprogramme für Logdateien
("~Gsecurity::log-analyzer
" in
aptitude(8)):
Tabelle 9.3. Liste von System-Log-Analysatoren
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
logwatch
|
V:18, I:20 | 2214 | Log-Analysator mit netter Ausgabe, geschrieben in Perl |
fail2ban
|
V:102, I:113 | 1735 | IP-Adressen sperren, die vielfache Authentifizierungsfehler verursachen |
analog
|
V:4, I:123 | 3529 | Webserver-Log-Analysator |
awstats
|
V:11, I:19 | 6799 | leistungsfähiger und mit vielen Funktionen ausgestatteter Webserver-Log-Analysator |
sarg
|
V:5, I:5 | 429 | Analysereportgenerator für Squid |
pflogsumm
|
V:1, I:4 | 111 | Programm zur Zusammenfassung von Postfix-Logeinträgen |
syslog-summary
|
V:1, I:4 | 30 | Programm zum Zusammenfassen des Inhalts einer Syslog-Datei |
fwlogwatch
|
V:0, I:0 | 474 | Firewall-Log-Analysator |
squidview
|
V:0, I:1 | 189 | Programm zum Beobachten und Analysieren von Squid-access.log-Dateien |
swatch
|
V:0, I:0 | 100 | Logdatei-Betrachter mit Unterstützung für reguläre Ausdrücke, Hervorhebung und Einsprungstellen |
crm114
|
V:0, I:0 | 1099 | Programm zur flexiblen Einordnung von E-Mails und anderen Daten (CRM114) |
icmpinfo
|
V:0, I:0 | 39 | Programm zur Interpretation von ICMP-Nachrichten |
![]() |
Anmerkung |
---|---|
CRM114 bietet eine Sprachinfrastruktur, um Unschärfe-Filter (fuzzy filters) mittels der TRE-regex-Bibliothek zu erstellen. Ein populärer Anwendungsfall ist der Spam-Mail-Filter, aber es kann auch als Log-Analysator verwendet werden. |
Die schlichte Verwendung von script(1) wie in Abschnitt 1.4.9, „Aufzeichnen der Shell-Aktivitäten“ erzeugt eine Datei mit Steuerzeichen. Sie können dies durch Nutzung von col(1) wie folgt beheben:
$ script Script started, file is typescript (zu deutsch: Script gestartet, die Datei heißt typescript)
Machen Sie irgendetwas … und drücken Sie Strg-D
, um
script
zu beenden.
$ col -bx <typescript >bereinigte-datei $ vim bereinigte-datei
Falls Sie kein script
haben (zum Beispiel während des
Boot-Vorgangs in der initramfs), können Sie stattdessen auch Folgendes
verwenden:
$ sh -i 2>&1 | tee typescript
![]() |
Tipp |
---|---|
Einige |
![]() |
Tipp |
---|---|
Sie können ebenso
screen(1)
über " |
![]() |
Tipp |
---|---|
Auch
emacs(1)
kann über " |
Obwohl Pager wie more(1) und less(1) (lesen Sie dazu Abschnitt 1.4.5, „Der Pager“) sowie spezielle Werkzeuge für Hervorhebung und Formatierung (Näheres dazu in Abschnitt 11.1.8, „Hervorheben und Formatieren von reinen Textdaten“) Text gut anzeigen können, sind normale Texteditoren (Details in Abschnitt 1.4.6, „Der Texteditor“) vielseitiger und besser anzupassen.
![]() |
Tipp |
---|---|
Bei
vim(1)
und seinem Pager-Modus alias
view(1)
wird über " |
Das Standard-Anzeigeformat von Datum und Zeit bei dem Befehl "ls
-l
" hängt vom Gebietsschema
(locale) ab (lesen Sie dazu Abschnitt 1.2.6, „Zeitstempel“). Die Variable
"$LANG
" wird als erstes abgefragt, der Wert kann jedoch
noch mittels der "$LC_TIME
"-Variablen überschrieben
werden.
Das letztlich verwendete Anzeigeformat für das jeweilige Gebietsschema hängt
von der verwendeten Standard-C-Bibliothek (aus dem
libc6
-Paket) ab. Aufgrunddessen hatten verschiedene
Debian-Veröffentlichungen unterschiedliche Standardwerte.
Wenn Sie das Anzeigeformat von Datum und Zeit wirklich über die locale-Einstellung hinaus anpassen möchten, sollten
Sie die Option time style value entweder
über das "--time-style
"-Argument oder über den Wert der
Variable "$TIME_STYLE
" setzen (Näheres unter
ls(1),
date(1)
und "info coreutils 'ls invocation'
").
Tabelle 9.4. Anzeigebeispiele von Datum und Zeit für den Befehl "ls
-l
" unter Wheezy
time style value | Locale | Anzeige von Datum und Zeit |
---|---|---|
iso
|
alle |
01-19 00:15
|
long-iso
|
alle |
2009-01-19 00:15
|
full-iso
|
alle |
2009-01-19 00:15:16.000000000 +0900
|
locale
|
C
|
Jan 19 00:15
|
locale
|
en_US.UTF-8
|
Jan 19 00:15
|
locale
|
es_ES.UTF-8
|
ene 19 00:15
|
+%d.%m.%y %H:%M
|
alle |
19.01.09 00:15
|
+%d.%b.%y %H:%M
|
C oder en_US.UTF-8
|
19.Jan.09 00:15
|
+%d.%b.%y %H:%M
|
es_ES.UTF-8
|
19.ene.09 00:15
|
![]() |
Tipp |
---|---|
Sie können die Eingabe langer Optionsparameter auf der Befehlszeile
vermeiden, indem sie einen Befehls-Alias verwenden, z.B. " |
![]() |
Tipp |
---|---|
Obige iso-Formate sind konform mit ISO 8601. |
Die Shell-Ausgabe der meisten modernen Terminals kann über ANSI-Escape-Codes farbig gestaltet werden
(lesen Sie dazu auch
"/usr/share/doc/xterm/ctlseqs.txt.gz
").
Probieren Sie zum Beispiel folgendes:
$ RED=$(printf "\x1b[31m") $ NORMAL=$(printf "\x1b[0m") $ REVERSE=$(printf "\x1b[7m") $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Farbige Befehle sind praktisch, um deren Ausgabe in einer interaktiven
Umgebung zu kontrollieren. Ich habe Folgendes in meiner
"~/.bashrc
":
if [ "$TERM" != "dumb" ]; then eval "`dircolors -b`" alias ls='ls --color=always' alias ll='ls --color=always -l' alias la='ls --color=always -A' alias less='less -R' alias ls='ls --color=always' alias grep='grep --color=always' alias egrep='egrep --color=always' alias fgrep='fgrep --color=always' alias zgrep='zgrep --color=always' else alias ll='ls -l' alias la='ls -A' fi
Die Verwendung von Befehls-Alias beschränkt die Farbeffekte auf interaktive
Befehlseingaben. Dies ist ein Vorteil gegenüber dem Exportieren der
Umgebungsvariablen ("export
GREP_OPTIONS='--color=auto'
"), da die Farben auch in
Pager-Programmen wie
less(1)
sichtbar sind. Falls Sie die Farbeffekte bei Weiterleitung zu anderen
Programmen deaktivieren möchten, nutzen Sie stattdessen
"--color=auto
" in dem obigen Beispiel für
"~/.bashrc
".
![]() |
Tipp |
---|---|
Sie können die Farb-Alias in der interaktiven Umgebung ausschalten, indem
Sie die Shell mit " |
Sie können Editor-Aktivitäten aufzeichnen, um sie später für komplexe Wiederholungen wiederzuverwenden.
Bei Vim wie folgt:
"qa
": Aufnahme der eingegebenen Zeichen in das Register
"a
" starten;
… Editor-Aktivitäten;
"q
": Aufnahme der eingegebenen Zeichen beenden;
"@a
": Ausführen des Inhalts von Register
"a
".
Bei Emacs wie folgt:
"C-x (
": Definition eines Tastaturmakros starten;
… Editor-Aktivitäten;
"C-x )
": Definition des Tastaturmakros beenden;
"C-x e
": Ausführen des Tastaturmakros.
Es gibt mehrere Wege, die Anzeige einer X-Anwendung aufzuzeichnen, inklusive
eines xterm
-Displays:
Tabelle 9.5. Liste von Werkzeugen zur Bildbearbeitung
Paket | Popcon | Größe | Befehl |
---|---|---|---|
xbase-clients
|
I:46 | 46 | xwd(1) |
gimp
|
V:86, I:491 | 17769 | GUI-Menü |
imagemagick
|
V:49, I:552 | 207 | import(1) |
scrot
|
V:8, I:93 | 50 | scrot(1) |
Es gibt spezielle Werkzeuge, um Änderungen in Konfigurationsdateien mit Hilfe von DVCS-Systemen aufzuzeichnen.
Tabelle 9.6. Liste von Paketen zur Aufzeichnung der Konfigurations-Historie via VCS
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
etckeeper
|
V:26, I:31 | 153 | Konfigurationsdateien und deren Metadaten mit Git (Standard), Mercurial oder Bazaar (neu) abspeichern |
changetrack
|
V:0, I:0 | 62 | Konfigurationsdateien mit RCS abspeichern (alt) |
Ich empfehle, das etckeeper
-Paket mit
git(1)
zu verwenden, wodurch das komplette "/etc
"-Verzeichnis
unter VCS-Kontrolle gestellt wird. Das Anwenderhandbuch und eine Anleitung
finden Sie in "/usr/share/doc/etckeeper/README.gz
".
Grundsätzlich wird durch das Ausführen von "sudo etckeeper
init
" ein git-Depot für "/etc
" initialisiert
(genau wie in Abschnitt 10.6.5, „Git zur Aufzeichnung der Historie von Konfigurationsdateien“,
jedoch mit speziellen hook-Skripten für genauere Setups).
Wenn Sie etwas an Ihrer Konfiguration ändern, können Sie git(1) nutzen, um dies aufzuzeichnen. Änderungen werden auch automatisch aufgezeichnet, sobald Sie Paketverwaltungsprogramme laufen lassen.
![]() |
Tipp |
---|---|
Sie können die Änderungs-Historie von " |
Programmaktivitäten können mittels spezieller Werkzeuge überwacht und kontrolliert werden:
Tabelle 9.7. Liste von Werkzeugen zur Überwachung und Steuerung von Programmaktivitäten
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
coreutils
|
V:892, I:999 | 15016 | nice(1): ein Programm mit veränderter Ablaufpriorität ausführen |
bsdutils
|
V:866, I:999 | 256 | renice(1): die Ablaufpriorität eines laufenden Prozess verändern |
procps
|
V:816, I:998 | 729 |
Werkzeuge für das "/proc "-Dateisystem:
ps(1),
top(1),
kill(1),
watch(1),
…
|
psmisc
|
V:391, I:919 | 527 |
Werkzeuge für das "/proc "-Dateisystem:
killall(1),
fuser(1),
peekfd(1),
pstree(1)
|
time
|
V:26, I:526 | 82 | time(1): ein Programm ausführen und die Zeit ausgeben, während der Ressourcen verbraucht wurden |
sysstat
|
V:135, I:156 | 1463 | sar(1), iostat(1), mpstat(1), …: Werkzeuge zur Messung der System-Performance unter Linux |
isag
|
V:0, I:4 | 110 | Interaktive grafische Darstellung der Systemaktivität, basierend auf sysstat |
lsof
|
V:200, I:945 | 440 | lsof(8):
mit der Option "-p " diejenigen Dateien auflisten, die von
einem gerade laufenden Prozess geöffnet wurden
|
strace
|
V:20, I:163 | 1399 | strace(1): Systemaufrufe und -signale verfolgen |
ltrace
|
V:1, I:21 | 360 | ltrace(1): Bibliotheksaufrufe verfolgen |
xtrace
|
V:0, I:1 | 333 | xtrace(1): Kommunikation zwischen X11-Client und -Server verfolgen |
powertop
|
V:6, I:229 | 604 | powertop(1): Informationen über verbrauchte Systemleistung |
cron
|
V:887, I:997 | 252 | Prozesse laut dem Ablaufplan des cron(8)-Daemons im Hintergrund ausführen |
anacron
|
V:452, I:524 | 106 | cron-ähnlicher Programmablauf-Planer für Systeme, die nicht 24 Stunden am Tag laufen |
at
|
V:301, I:546 | 149 | at(1) oder batch(1): einen Prozess zu einer bestimmten Zeit oder unterhalb einer bestimmten Systembelastung ausführen |
![]() |
Tipp |
---|---|
Das |
Zeit anzeigen, die der von dem Befehl angestossene Prozess benötigt hat:
# time irgendein_befehl >/dev/null real 0m0.035s # Zeit auf der Wanduhr (echte vergangene Zeit) user 0m0.000s # Zeit im User-Modus sys 0m0.020s # Zeit im Kernel-Modus
Der nice-Wert wird verwendet, um die Ablaufpriorität von Prozessen zu steuern.
Tabelle 9.8. Liste der nice-Werte für die Ablaufpriorität
nice-Wert | Ablaufpriorität |
---|---|
19 | niedrigste Prozesspriorität (sparsam) |
0 | sehr hohe Prozesspriorität für Benutzer |
-20 | sehr hohe Prozesspriorität für root (nicht sparsam) |
# nice -19 top # sehr sparsam # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # sehr schnell
Manchmal schadet ein extremer nice-Wert dem System mehr als er ihm nützt. Nutzen Sie diesen Befehl mit Vorsicht.
Der ps(1)-Befehl im Debian-System unterstützt sowohl BSD- wie auch SystemV-Funktionalitäten und hilft dabei, die Prozessaktivitäten (in statischem Zustand) zu beurteilen.
Tabelle 9.9. Liste von ps-Befehlen
Art | typischer Befehl | Funktionalität |
---|---|---|
BSD |
ps aux
|
anzeigen von %CPU und %MEM |
System V |
ps -efH
|
anzeigen der PPID |
Nicht mehr vorhandene Zombie-Kindprozesse können Sie über die Prozess-ID des
Eltern-Prozesses in dem "PPID
"-Feld beenden.
Der Befehl pstree(1) zeigt alle Prozesses in Form eines Hierarchie-Baums an.
top(1) auf einem Debian-System hat reichhaltige Funktionalitäten und hilft dabei, Prozesse zu identifizieren, die sich sehr auffällig dynamisch verhalten.
Es ist ein interaktives Programm mit Vollbildschirmmodus. Sie erhalten eine Hilfe zur Nutzung, indem Sie die Taste "h" drücken; mit "q" beenden Sie das Programm.
Sie können wie folgt alle Dateien auflisten, die von einem Prozess mit einer bestimmten Prozess-ID (PID), z.B. 1, geöffnet wurden:
$ sudo lsof -p 1
PID 1 ist normalerweise das init
-Programm.
Sie können Programmaktivitäten mit strace(1) (für Systemaufrufe und -signale), ltrace(1) (für Bibliotheksaufrufe) oder xtrace(1) (für die Kommunikation zwischen X11-Client und -Server) verfolgen.
Systemaufrufe des ls
-Befehls verfolgen Sie z.B. wie
folgt:
$ sudo strace ls
Auch können Sie Prozesse, die bestimmte Dateien nutzen, mit
fuser(1)
identifizieren, hier z.B. "/var/log/mail.log
":
$ sudo fuser -v /var/log/mail.log USER PID ACCESS COMMAND /var/log/mail.log: root 2946 F.... rsyslogd
Sie sehen, dass die Datei "/var/log/mail.log
" von dem
Befehl
rsyslogd(8)
zum Schreiben geöffnet wurde.
Prozessse, die bestimmte Sockets verwenden, können Sie ebenfalls mittels
fuser(1)
identifizieren, für "smtp/tcp
" z.B. wie hier:
$ sudo fuser -v smtp/tcp USER PID ACCESS COMMAND smtp/tcp: Debian-exim 3379 F.... exim4
Jetzt wissen Sie, dass auf Ihrem System exim4(8) läuft, um TCP-Verbindungen zum SMTP-Port (25) zu bedienen.
watch(1) führt ein Programm wiederholt mit einem festen Intervall aus und zeigt dessen Ausgabe im Vollbildschirmmodus an.
$ watch w
Hiermit wird alle 2 Sekunden neu angezeigt, wer auf dem System angemeldet ist.
Es gibt verschiedene Wege, um einen Befehl zu wiederholen und jedes Mal eine
andere Datei aus einer bestimmten Menge von Dateien (hier z.B. ausgewählt
über ein glob-Suchmuster auf "*.ext
") als Argument zu
verwenden.
Methode mit einer for-Schleife in der Shell (Näheres in Abschnitt 12.1.4, „Shellschleifen“):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
Kombination aus find(1) und xargs(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find(1)
mit "-exec
"-Option und einem Befehl:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find(1)
mit "-exec
"-Option und einem kurzen Shell-Skript:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
Die obigen Beispiele wurden geschrieben, um auch eine korrekte Behandlung von komischen Dateinamen, wie z.B. solche mit Leerzeichen, sicherzustellen. Lesen Sie dazu auch Abschnitt 10.1.5, „Aufrufe für die Auswahl von Dateien“; dort finden Sie außerdem weitergehende Verwendungen des Befehls find(1).
Auf der Befehlszeile (command-line
interface, CLI) wird das erste Programm mit dem passenden Namen
ausgeführt, das in den durch die Umgebungsvariable $PATH
definierten Verzeichnissen gefunden wird. Lesen Sie dazu auch Abschnitt 1.5.3, „Die "$PATH
"-Variable“.
Bei einer zum freedesktop.org-Standard
konformen grafischen Oberfläche
(graphical user interface, GUI) enthalten die
*.desktop
-Dateien in dem Verzeichnis
/usr/share/applications/
alle nötigen Attribute für die
Anzeige der Programmeinträge im grafischen Menü. Näheres finden Sie in Abschnitt 7.2.2, „Freedesktop.org-Menü“.
Im folgenden Beispiel definiert die Datei
chromium.desktop
die Attribute für den
"Chromium-Webbrowser", z.B. "Name" für den Programmnamen, "Exec" für den
Pfad zum auszuführenden Programm mit zugehörigen Argumenten, "Icon" für das
verwendete Icon-Symbol usw. (Details finden Sie unter Desktop Entry Specification):
[Desktop Entry] Version=1.0 Name=Chromium Web Browser Name[de]=Chromium-Webbrowser GenericName=Web Browser Comment=Access the Internet Comment[de]=Internetzugriff Exec=/usr/bin/chromium %U Terminal=false X-MultipleArgs=false Type=Application Icon=chromium Categories=Network;WebBrowser; MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https; StartupWMClass=Chromium StartupNotify=true
Dies ist eine vereinfachte Beschreibung. Die
*.desktop
-Dateien werden wie folgt eingelesen:
Die Desktop-Umgebung setzt die Umgebungsvariablen
$XDG_DATA_HOME
und
$XDG_DATA_DIR
. Unter GNOME3 z.B.:
$XDG_DATA_HOME
wird nicht genutzt (der Standardwert aus
$HOME/.local/share
wird verwendet).
$XDG_DATA_DIRS
wird auf
/usr/share/gnome:/usr/local/share/:/usr/share/
gesetzt.
Daher werden die Basisverzeichnisse (lesen Sie XDG Base Directory
Specification) und applications
-Verzeichnisse wie
folgt gesetzt:
$HOME/.local/share/
→
$HOME/.local/share/applications/
/usr/share/gnome/
→
/usr/share/gnome/applications/
/usr/local/share/
→
/usr/local/share/applications/
/usr/share/
→ /usr/share/applications/
Die *.desktop
-Dateien aus diesen
applications
-Verzeichnissen werden in obiger Reihenfolge
eingelesen.
![]() |
Tipp |
---|---|
Ein benutzerdefinierter Menüeintrag für die grafische Oberfläche kann
erstellt werden, indem eine |
![]() |
Tipp |
---|---|
Ähnlich dazu verhält es sich, wenn eine |
![]() |
Tipp |
---|---|
Ähnlich ist es auch, wenn eine |
Einige Programme starten automatisch weitere Programme. Hier einige Punkte bezüglich der Anpassung dieses Prozesses.
Menü zur Konfiguration von bevorzugten Anwendungen:
GNOME3-Umgebung: "Einstellungen" → "Systemeinstellungen" → "Details" → "Vorgabe-Anwendungen";
KDE-Umgebung: "K" → "Control-Center" → "KDE-Komponenten" → "Komponentenauswahl";
Iceweasel-Browser: "Bearbeiten" → "Einstellungen" → "Anwendungen";
mc(1):
"/etc/mc/mc.ext
";
Umgebungsvariablen wie "$BROWSER
",
"$EDITOR
", "$VISUAL
" und
"$PAGER
" (Näheres in
eviron(7));
das
update-alternatives(1)-System
für Programme wie "editor
", "view
",
"x-www-browser
", "gnome-www-browser
"
und "www-browser
" (Näheres in Abschnitt 1.4.7, „Einen Standard-Texteditor einstellen“);
die Inhalte der Dateien "~/.mailcap
" und
"/etc/mailcap
", über die die MIME-Types bestimmten Programmen zugeordnet werden
(Näheres in
mailcap(5));
die Inhalte der Dateien "~/.mime.types
" und
"/etc/mime.types
", über die Dateinamenerweiterungen
entsprechenden MIME-Types zugeordnet werden
(Näheres in
run-mailcap(1)).
![]() |
Tipp |
---|---|
update-mime(8)
aktualisiert die " |
![]() |
Tipp |
---|---|
Das |
![]() |
Tipp |
---|---|
Um eine Konsolen-Applikation (hier |
# cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF chmod 755 /usr/local/bin/mutt-term
Verwenden Sie kill(1), um über die Prozess-ID einen Prozess zu beenden (oder diesem ein Signal zu senden).
Nutzen Sie killall(1) oder pkill(1), um das gleiche über den Befehlsnamen und andere Attribute des Prozesses zu erledigen.
Tabelle 9.10. Liste von häufig verwendeten Signalen für den kill-Befehl
Signalwert | Signalname | Funktion |
---|---|---|
1 | HUP | Daemon neustarten |
15 | TERM | normal beenden |
9 | KILL | Beenden erzwingen |
Führen Sie den at(1)-Befehl wie folgt aus, um eine einmalige Aufgabe zu planen:
$ echo 'command -args'| at 3:40 monday
Verwenden Sie cron(8), um regelmäßig wiederkehrende Aufgaben zu planen. Lesen Sie dazu crontab(1) and crontab(5).
Sie können Prozesse zur Ausführung durch einen normalen Benutzer, z.B. den
Benutzer foo
, einplanen, indem Sie mit dem Befehl
"crontab -e
" eine
crontab(5)-Datei
namens "/var/spool/cron/crontabs/foo
" erstellen.
Hier ein Beispiel einer crontab(5)-Datei:
# /bin/sh verwenden, um Befehle auszuführen, egal was in /etc/passwd steht: SHELL=/bin/sh # Jegliche Ausgabe an Paul senden, egal wessen crontab dies ist: MAILTO=paul # Minute Stunde Tag-des-Monats Monat Tag-der-Woche befehl (Tag-...-Optionen sind oder-verknüpft). # Jeden Tag um 00:05 ausführen: 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # Am Ersten jedes Monats um 14:15 ausführen -- Ausgabe per Mail an Paul: 15 14 1 * * $HOME/bin/monthly # An allen Werktagen (1-5) um 22:00 Joe nerven. % für eine neue Zeile, das letzte % für CC: 0 22 * * 1-5 mail -s "Es ist 22 Uhr." joe%Joe,%%Wo sind deine Kinder?%.%% 23 */2 1 2 * echo "Am 01. Febr. um 23 Minuten nach 0 Uhr, 2 Uhr, 4 Uhr ... ausführen" 5 4 * * sun echo "Jeden Sonntag um 04:05 ausführen" # An jedem ersten Montag des Monats um 03:40 ausführen: 40 3 1-7 * * [ "$(date +%a)" == "Mon" ] && command -args
![]() |
Tipp |
---|---|
Auf Systemen, die nicht ständig laufen, installieren Sie das
|
![]() |
Tipp |
---|---|
Geplante Skripte zur Systemwartung können Sie vom root-Konto aus wiederholt
ausführen, indem Sie solche Skripte in
" |
Die Kernel-Option "Magic SysRq key" (SAK key) bietet Ihnen eine Absicherung gegen Systemfehlfunktionen und ist im Debian-Kernel jetzt standardmäßig aktiviert. Durch Drücken von Alt-SysRq gefolgt von einer der folgenden Tasten können Sie in kritischen Situationen wie durch Zauberei die Kontrolle über das System zurückerlangen:
Tabelle 9.11. Liste der SAK-Befehlstasten
Taste nach Alt-SysRq | Beschreibung der Aktion |
---|---|
r
|
Tastatur aus dem Roh-Modus (raw) wiederherstellen nach X-Abstürzen |
0
|
das Konsolen-Loglevel auf 0 ändern, um Fehlermeldungen zu reduzieren |
k
|
alle Prozesse auf der aktuellen virtuellen Konsole durch ein kill zum Beenden zwingen |
e
|
alle Prozesse außer init(8) durch ein SIGTERM versuchen zu beenden |
i
|
alle Prozesse außer init(8) durch ein SIGKILL zum Beenden zwingen |
s
|
alle eingebundenen Dateisysteme synchronisieren (Dateisystempuffer auf Platte schreiben), um Datenverluste zu vermeiden |
u
|
alle eingebundenen Dateisysteme neu einbinden mit Nur-Lese-Berechtigung (umount) |
b
|
das System ohne sync oder umount neu starten (reboot) |
![]() |
Tipp |
---|---|
Zum Verständnis obiger Aktionen lesen Sie die Handbuchseiten von signal(7), kill(1) und sync(1). |
Die Kombination von "Alt-SysRq s", "Alt-SysRq u" und "Alt-SysRq r" funktioniert gut, um aus wirklich bösen Situationen herauszukommen und wieder Zugriff auf eine nutzbare Tastatur zu erlangen, ohne das System herunterfahren zu müssen.
Details finden Sie in
"/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz
".
![]() |
Achtung |
---|---|
Die Alt-SysRq-Funktionalität könnte als Sicherheitsrisiko angesehen werden,
da sie normalen Benutzern Zugriff auf Funktionen erlaubt, die eigentlich
root-Privilegien verlangen. Durch das Einfügen von " |
![]() |
Tipp |
---|---|
Von einem SSH-Terminal u.ä. können Sie die Alt-SysRq-Funktionalität nutzen,
indem Sie nach " |
Sie können wie folgt überprüfen, wer derzeit im System aktiv ist:
who(1) zeigt, wer angemeldet ist.
w(1) zeigt, wer angemeldet ist und was derjenige jeweils tut.
last(1) zeigt eine Auflistung der zuletzt angemeldeten Benutzer.
lastb(1) zeigt eine Auflistung der letzten Benutzer mit fehlgeschlagenen Anmeldeversuchen.
![]() |
Tipp |
---|---|
Diese Informationen werden in " |
Mit wall(1) können Sie wie folgt eine Nachricht an alle am System angemeldeten Benutzer schicken:
$ echo "Wir fahren in 1 Stunde das System herunter." | wall
Bei PCI-basierten Geräten (AGP, PCI-Express,
CardBus, ExpressCard usw.) ist
lspci(8)
(eventuell mit der Option "-nn
") ein guter Anfang zur
Hardware-Identifikation.
Alternativ können Sie die Hardware auch über das Auslesen der Inhalte von
"/proc/bus/pci/devices
" identifizieren oder indem Sie die
Verzeichnisse unterhalb von "/sys/bus/pci
" durchsuchen
(Näheres in Abschnitt 1.2.12, „procfs und sysfs“).
Tabelle 9.12. Liste von Werkzeugen zur Hardware-Identifikation
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
pciutils
|
V:176, I:993 | 1220 | Hilfsprogramme für PCI unter Linux: lspci(8) |
usbutils
|
V:99, I:863 | 721 | Hilfsprogramme für USB unter Linux: lsusb(8) |
pcmciautils
|
V:20, I:36 | 90 | Hilfsprogramme für PCMCIA unter Linux: pccardctl(8) |
scsitools
|
V:0, I:4 | 365 | Sammlung von Werkzeugen für das SCSI-Hardware-Management: lsscsi(8) |
procinfo
|
V:1, I:15 | 123 |
Systeminformationen, gewonnen aus "/proc ":
lsdev(8)
|
lshw
|
V:9, I:89 | 671 | Informationen über die Hardware-Konfiguration: lshw(1) |
discover
|
V:38, I:938 | 90 | System zur Hardware-Identifikation: discover(8) |
Obwohl der größte Teil der Hardware-Konfiguration auf modernen GUI-Arbeitsplatz-Systemen wie GNOME und KDE über entsprechende GUI-Werkzeuge verwaltet werden kann, ist es eine gute Idee, zumindest einige grundlegende Methoden für deren Konfiguration zu kennen.
Tabelle 9.13. Liste von Werkzeugen zur Hardware-Konfiguration
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
console-setup
|
V:304, I:946 | 385 | Werkzeuge für Schriftarten und Tastaturbelegungen auf der Linux-Konsole |
x11-xserver-utils
|
V:356, I:576 | 511 | X-Server-Hilfsprogamme: xset(1), xmodmap(1) |
acpid
|
V:313, I:590 | 143 | Daemon zur Verwaltung von Ereignissen der Advanced-Configuration-and-Power-Interface-(ACPI-)Schnittstelle |
acpi
|
V:26, I:566 | 45 | Werkzeug zur Anzeige von Informationen über ACPI-Geräte |
apmd
|
V:0, I:6 | 132 | Daemon zur Verwaltung von Ereignissen der Advanced-Power-Management-(APM-)Schnittstelle |
sleepd
|
V:0, I:0 | 79 | Daemon, mit dem man einen Laptop bei Inaktivität in Ruhemodus schicken kann |
hdparm
|
V:362, I:588 | 248 | Optimierung des Festplattenzugriffs (lesen Sie dazu Abschnitt 9.5.9, „Optimierung der Festplatte“) |
smartmontools
|
V:121, I:196 | 1716 | Speichersysteme mittels S.M.A.R.T. kontrollieren und überwachen |
setserial
|
V:6, I:11 | 113 | Werkzeugsammlung zur Verwaltung von seriellen Ports |
memtest86+
|
V:1, I:35 | 2391 | Werkzeugsammlung zur Speicher-Hardware-Verwaltung |
scsitools
|
V:0, I:4 | 365 | Werkzeugsammlung zur SCSI-Hardware-Verwaltung |
setcd
|
V:0, I:1 | 35 | Optimierung des Zugriffs auf CD-Laufwerke |
big-cursor
|
I:0 | 27 | größere Maus-Cursor für X |
ACPI ist ein neueres Rahmenwerk für das Power Management und der Nachfolger für das ältere APM.
![]() |
Tipp |
---|---|
Die Skalierung der CPU-Frequenz wird auf modernen Systemen durch
Kernel-Module wie |
Über folgende Befehle wird die System- und Hardware-Zeit auf MM/DD hh:mm, CCYY (MM - Monat, DD - Tag, hh - Stunde, mm - Minute, CCYY - Jahr) gesetzt:
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
Zeiten werden auf einem Debian-System normalerweise in der Lokalzeit angezeigt, aber die Hardware- und Systemzeit verwenden üblicherweise UTC (GMT).
Wenn die Hardware-Zeit (auch als BIOS- oder CMOS-Uhr bezeichnet) auf UTC
eingestellt ist, ändern Sie die Einstellung in
"/etc/default/rcS
" auf "UTC=yes
".
Mit folgendem Befehl konfigurieren Sie die vom Debian-System verwendete Zeitzone neu:
# dpkg-reconfigure tzdata
Falls Sie die Systemzeit über das Netzwerk aktualisieren möchten, sollten
Sie die Verwendung des NTP-Dienstes in Erwägung
ziehen; dazugehörige Pakete sind ntp
,
ntpdate
und chrony
.
![]() |
Tipp |
---|---|
Unter systemd sollten Sie stattdessen
|
Hier finden Sie weitere Informationen:
im ntp-doc
-Paket.
![]() |
Tipp |
---|---|
ntptrace(8)
aus dem |
Es existieren mehrere Komponenten zur Konfiguration von Systemfunktionalitäten für textbasierte Konsolen und ncurses(3):
die Datei "/etc/terminfo/*/*
"
(terminfo(5));
die Umgebungsvariable "$TERM
"
(term(7));
setterm(1), stty(1), tic(1) und toe(1).
Falls bei Anmeldung von fern auf einem Debian-System mit einem
Debian-fremden xterm
der
terminfo
-Eintrag für xterm
nicht
funktioniert, ändern Sie den Terminaltyp ("$TERM
") von
"xterm
" auf eine der funktionseingeschränkten Versionen
wie "xterm-r6
". Näheres dazu finden Sie in
"/usr/share/doc/libncurses5/FAQ
".
"dumb
" ist der kleinste gemeinsame Nenner für
"$TERM
".
Gerätetreiber für Soundkarten werden in aktuellen Linux-Systemen von Advanced Linux Sound Architecture (ALSA) bereitgestellt. ALSA enthält zwecks Kompatibilität auch einen Emulationsmodus für das ältere Open Sound System (OSS).
![]() |
Tipp |
---|---|
Verwenden Sie " |
![]() |
Tipp |
---|---|
Falls Sie keinen Ton hören, sind Ihre Lautsprecher möglicherweise an einem
stummgeschalteten Ausgang angeschlossen. Moderne Sound-Systeme haben oft
mehrere
Ausgänge.
alsamixer(1)
aus dem |
Anwendungssoftware kann konfiguriert sein, nicht die Soundkarte direkt anzusprechen, sondern über standardisierte Sound-Server-Systeme darauf zuzugreifen.
Tabelle 9.14. Liste von Audio-Paketen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
alsa-utils
|
V:381, I:520 | 2119 | Werkzeuge zur Konfiguration und Nutzung von ALSA |
oss-compat
|
V:3, I:39 | 20 |
Paket für OSS-Kompatibilität, verhindert unter ALSA das Auftreten von
"/dev/dsp not found "-Fehlern
|
jackd
|
V:3, I:28 | 32 | JACK Audio Connection Kit (JACK)-Server (niedrige Latenzzeiten) |
libjack0
|
V:0, I:16 | 337 | JACK Audio Connection Kit (JACK)-Bibliothek (niedrige Latenzzeiten) |
nas
|
V:0, I:0 | 239 | Network Audio System (NAS)-Server |
libaudio2
|
I:545 | 161 | Network Audio System (NAS)-Bibliothek |
pulseaudio
|
V:369, I:500 | 6137 | PulseAudio-Server, ersetzt ESD |
libpulse0
|
V:263, I:647 | 952 | PulseAudio-Client-Bibliothek, ersetzt ESD |
libgstreamer1.0-0
|
V:253, I:527 | 5006 | GStreamer: GNOME-Sound-Engine |
libphonon4
|
I:207 | 672 | Phonon: KDE-Sound-Engine |
Es gibt normalerweise für jede populäre Arbeitsplatz-Umgebung eine Sound-Engine. Für jede Sound-Engine, die von einer Anwendung verwendet wird, kann ausgewählt werden, mit welchem der verschiedenen Sound-Server sie sich verbindet.
Verwenden Sie folgende Befehle, um den Bildschirmschoner zu deaktivieren:
Tabelle 9.15. Liste von Befehlen zur Deaktivierung des Bildschirmschoners
Umgebung | Befehl |
---|---|
Linux-Konsole |
setterm -powersave off
|
X-Window (Bildschirmschoner ausschalten) |
xset s off
|
X-Window (dpms deaktivieren) |
xset -dpms
|
X-Window (grafische Oberfläche zur Konfiguration des Bildschirmschoners) |
xscreensaver-command -prefs
|
Man kann immer den Stecker des internen PC-Lautsprechers abziehen, um
jegliche Pieptöne loszuwerden, aber auch über das Entfernen des
pcspkr
-Kernel-Moduls kann dies erreicht werden.
Folgender Befehl verhindert, dass das readline(3)-Programm, das von bash(1) genutzt wird, einen Piepton ausgibt, wenn es ein Alarm-Zeichen (ASCII=7) empfängt:
$ echo "set bell-style none">> ~/.inputrc
Es gibt zwei Ressourcen, über die Sie die aktuelle Situation zur Arbeitsspeichernutzung abfragen können:
Die Boot-Meldungen des Kernels in "/var/log/dmesg
"
enthalten die exakte Größe des verfügbaren Arbeitsspeichers.
free(1) und top(1) zeigen Informationen über Arbeitsspeicher-Ressourcen auf dem laufenden System an.
Hier ein Beispiel:
# grep '\] Memory' /var/log/dmesg [ 0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init) $ free -k total used free shared buffers cached Mem: 997184 976928 20256 0 129592 171932 -/+ buffers/cache: 675404 321780 Swap: 4545576 4 4545572
Sie fragen sich vielleicht: "Warum sagt dmesg mir, dass 990 MB frei sind, während free -k sagt, 320 MB seien frei. Da fehlen mehr als 600 MB …"
Sorgen Sie sich nicht über den hohen Wert von "used
" und
die kleine Größe von "free
" in der
"Mem:
"-Zeile; schauen Sie sich stattdessen die Werte
darunter an (inklusive Puffer/Cache, 675404 und 321780 in obigem Beispiel)
und entspannen Sie sich.
Auf meinem MacBook mit 1GB=1048576k DRAM (das Grafik-System stiehlt einiges davon) sehe ich Folgendes:
Tabelle 9.16. Liste der gemeldeten Arbeitsspeichergrößen
gemeldet | Größe |
---|---|
absolute Größe in dmesg | 1016784k = 1GB - 31792k |
frei in dmesg | 990528k |
absolut auf der Shell | 997184k |
frei auf der Shell | 20256k (aber effektiv 321780k) |
Schlechte Systemwartung könnte Ihr System für Angriffe von extern anfällig machen.
Um eine Systemsicherheits- und Integritätsüberprüfung durchzuführen, sollten Sie mit folgendem beginnen:
dem debsums
-Paket, lesen Sie dazu
debsums(1)
und Abschnitt 2.5.2, „"Release"-Datei im Wurzelverzeichnis und Authentizität“;
dem chkrootkit
-Paket, lesen Sie dazu
chkrootkit(1);
der clamav
-Paketfamilie, lesen Sie dazu
clamscan(1)
und
freshclam(1);
Tabelle 9.17. Liste von Werkzeugen für eine Systemsicherheits- und Integritätsüberprüfung
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
logcheck
|
V:11, I:13 | 100 | Daemon, um Anomalien in den System-Logdateien per Mail an den Administrator zu melden |
debsums
|
V:5, I:40 | 120 | Hilfsprogramm, um installierte Paketdateien anhand von MD5-Prüfsummen zu verifizieren |
chkrootkit
|
V:7, I:27 | 888 | rootkit-Erkennungsprogramm |
clamav
|
V:15, I:68 | 698 | Antiviren-Programm für Unix - Befehlszeilenschnittstelle |
tiger
|
V:3, I:3 | 2485 | Sicherheitslücken im System melden |
tripwire
|
V:3, I:3 | 12166 | Integritätsüberprüfung für Dateien und Verzeichnisse |
john
|
V:2, I:13 | 449 | Programm zum aktiven Knacken von Passwörtern |
aide
|
V:2, I:2 | 2038 | Fortschrittliche Intrusion-Detection-Umgebung - statische Binärdatei |
integrit
|
V:0, I:0 | 313 | Dateiintegritäts-Verifizierungsprogramm |
crack
|
V:0, I:0 | 128 | Programm zum Erraten von Passwörtern |
Hier ein einfaches Skript, um nach Dateien mit typischerweise falschen Dateiberechtigungen (schreibbar für alle) zu suchen:
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
![]() |
Achtung |
---|---|
Da das |
Indem Sie Ihr System mit einer Linux Live-CD oder einer Debian-Installer-CD im Rettungsmodus starten, können Sie auf einfache Weise den Speicher auf Ihrem Boot-Laufwerk neu konfigurieren.
Der verwendete Plattenplatz kann mit Programmen aus den Paketen
mount
, coreutils
und
xdu
beurteilt werden:
mount(8) gibt Informationen über alle eingebundenen Dateisysteme (= "Laufwerke") aus.
df(1) gibt Informationen über den verwendeten Plattenplatz für das Dateisystem aus.
du(1) gibt Informationen über den verwendeten Plattenplatz für den Verzeichnisbaum aus.
![]() |
Tipp |
---|---|
Mit " |
Bei der Konfiguration von Laufwerkspartitionen können Sie erwägen, parted(8) zu verwenden (obwohl fdisk(8) lange als Standard angesehen wurde). Die Begriffe "Disk partitioning data", "Partitionstabelle", "Partition map" und "Disk label" werden alle gleichbedeutend verwendet.
Die meisten PCs verwenden das klassische Schema des Master Boot Record (MBR) und legen die Partitionstabelle im ersten Sektor, also im LBA-Sektor 0 (512 Byte) ab.
![]() |
Anmerkung |
---|---|
Neuere PCs mit Extensible Firmware Interface (EFI), inklusive Intel-basierten Macs, verwenden teilweise das GUID Partition Table (GPT)-Schema, bei dem die Partitionstabelle nicht im ersten Sektor liegt. |
Obwohl fdisk(8) lange Zeit das Standardwerkzeug zur Laufwerkspartitionierung war, ist parted(8) dabei, ihm den Rang abzulaufen.
Tabelle 9.18. Liste von Paketen zum Partitions-Management
Paket | Popcon | Größe | GPT | Beschreibung |
---|---|---|---|---|
util-linux
|
V:891, I:999 | 3366 | Nicht unterstützt | verschiedene System-Werkzeuge inklusive fdisk(8) und cfdisk(8) |
parted
|
V:370, I:568 | 279 | Unterstützt | GNU Parted - Programm zum Anlegen / Ändern von Partitionen |
gparted
|
V:23, I:148 | 7231 | Unterstützt |
GNOME Partitionseditor, basierend auf libparted
|
gdisk
|
V:66, I:502 | 780 | Unterstützt | Partitionseditor für GPT-Laufwerke |
kpartx
|
V:14, I:27 | 84 | Unterstützt | Programm zur Erzeugung von Gerätezuordnungen (device mappings) für Partitionen |
![]() |
Achtung |
---|---|
Obwohl parted(8) vorgibt, Dateisysteme erzeugen und auch nachträglich in der Größe verändern zu können, ist es sicherer, für solche Dinge gut betreute und spezialisierte Werkzeuge wie mkfs(8) (mkfs.msdos(8), mkfs.ext2(8), mkfs.ext3(8), mkfs.ext4(8), …) und resize2fs(8) zu verwenden. |
![]() |
Anmerkung |
---|---|
Um zwischen GPT und MBR zu wechseln, müssen Sie die ersten paar Blöcke der
Platte löschen (lesen Sie dazu Abschnitt 9.7.6, „Leeren von Dateiinhalten“)
und " |
Obwohl aufgrund der Neukonfiguration einer Partition oder der Aktivierungsreihenfolge von Wechseldatenträgern Laufwerke von einem zum anderen Mal unterschiedliche Laufwerksnamen haben können, gibt es auch eine Möglichkeit, konsistente Bezeichnungen für den Laufwerkszugriff zu verwenden. Dies ist ebenfalls hilfreich, wenn Sie mehrere Festplatten haben und Ihr BIOS die Gerätenamen nicht jedes Mal identisch zuweist.
mount(8)
kann über die Option "-U
" ein blockorientiertes Gerät
mittels seiner UUID-Kennung einbinden, statt
dessen Gerätedateinamen (wie z.B. "/dev/sda3
") zu nutzen.
"/etc/fstab
" (lesen Sie hierzu auch
fstab(5))
kann UUID verwenden.
Auch Bootloader (Abschnitt 3.1.2, „Stufe 2: der Bootloader“) können unter Umständen die UUID benutzen.
![]() |
Tipp |
---|---|
Sie können die UUID eines blockorientierten Gerätes mit blkid(8) abfragen. |
![]() |
Tipp |
---|---|
Geräteknoten von bestimmten Geräten wie Wechseldatenträgern können, falls nötig, auch über udev-Regeln statisch festgelegt werden, so dass sie sich nicht mehr ändern. Lesen Sie dazu Abschnitt 3.3, „Das udev-System“. |
LVM2 ist ein Logical Volume Manager für den Linux-Kernel. Mit LVM2 können Partitionen auf logischen Volumes erzeugt werden statt auf physikalischen Festplatten.
LVM erfordert folgendes:
device-mapper-Unterstützung im Linux-Kernel (Standardeinstellung für Debian-Kernel);
die Userspace-Bibliothek zur Unterstützung von device-mapper
(libdevmapper*
-Paket);
die Userspace-LVM2-Werkzeuge (lvm2
-Paket).
Lehrreiche Informationen über LVM2 finden Sie mittels folgender Handbuchseiten:
lvm(8): Grundlagen des LVM2-Mechanismus' (Liste aller LVM2-Befehle);
lvm.conf(5): Konfigurationsdatei für LVM2;
lvs(8): Informationen über logische Volumes ausgeben;
vgs(8): Informationen über Volume-Gruppen ausgeben;
pvs(8): Informationen über physikalische Volumes ausgeben.
Für das ext4-Dateisystem enthält das
e2fsprogs
-Paket folgendes:
mkfs.ext4(8) zur Erzeugung neuer ext4-Dateisysteme;
fsck.ext4(8) zur Überprüfung und Reparatur vorhandener ext4-Dateisysteme;
tune2fs(8) zur Konfiguration des Superblocks von ext4-Dateisystemen;
debugfs(8)
für interaktive Fehlersuche in ext4-Dateisystemen (es enthält den
undel
-Befehl, um gelöschte Dateien wiederherzustellen).
Die Befehle
mkfs(8)
und
fsck(8)
werden durch das e2fsprogs
-Paket bereitgestellt und sind
Frontends für Dateisystem-abhängige Programme
(mkfs.<dateisystemtyp>
und
fsck.<dateisystemtyp>
). Für ext4 sind das
mkfs.ext4(8)
und
fsck.ext4(8)
(dies sind symbolischer Link auf
mke2fs(8)
und
e2fsck(8)).
Ähnliche Befehle sind für jedes von Linux unterstützte Dateisystem verfügbar.
Tabelle 9.19. Liste von Paketen für das Dateisystem-Management
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
e2fsprogs
|
V:507, I:999 | 1223 | Hilfsprogramme für ext2/ext3/ext4-Dateisysteme |
reiserfsprogs
|
V:8, I:26 | 891 | Hilfsprogramme für das Reiserfs-Dateisystem |
dosfstools
|
V:104, I:556 | 235 | Hilfsprogramme für das FAT-Dateisystem (Microsoft: MS-DOS, Windows) |
xfsprogs
|
V:18, I:93 | 4664 | Hilfsprogramme für das XFS-Dateisystem (SGI: IRIX) |
ntfs-3g
|
V:165, I:550 | 1355 | Hilfsprogramme für das NTFS-Dateisystem (Microsoft: Windows NT, Windows 7 …) |
jfsutils
|
V:1, I:13 | 1533 | Hilfsprogramme für das JFS-Dateisystem (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:5 | 1325 | Hilfsprogramme für das Reiser4-Dateisystem |
hfsprogs
|
V:0, I:9 | 303 | Hilfsprogramme für HFS- und HFS Plus-Dateisysteme (Apple: Mac OS) |
btrfs-progs
|
V:28, I:44 | 3146 | Hilfsprogramme für das Btrfs-Dateisystem |
zerofree
|
V:2, I:70 | 25 | Programm, um freie Blöcke auf ext2/3/4-Dateisystemen mit Nullen zu überschreiben |
![]() |
Tipp |
---|---|
Ext4 ist das Standard-Dateisystem für Linux-Systeme und Sie sollten dies verwenden, außer Sie haben einen bestimmten Grund, ein anderes zu nutzen. |
![]() |
Tipp |
---|---|
Das Btrfs-Dateisystem ist ab dem Linux-Kernel
3.2 (Debian |
![]() |
Warnung |
---|---|
Sie sollten das Btrfs-Dateisystem nicht für kritische Daten verwenden, solange es noch keine Live-Kernelspace-fsck(8)-Funktionalität und Bootloader-Unterstützung enthält. |
![]() |
Tipp |
---|---|
Einige Werkzeuge erlauben den Zugriff auf Dateisysteme ohne entsprechende Unterstützung im Linux-Kernel (lesen Sie dazu Abschnitt 9.7.2, „Manipulieren von Dateien ohne Einbinden der Festplatte“). |
Der mkfs(8)-Befehl erzeugt unter Linux ein Dateisystem. Mit fsck(8) führen Sie eine Integritätsüberprüfung oder Reparatur des Dateisystems durch.
Standardmäßig gibt es jetzt auf Debian-Systemen nach der Erzeugung des
Dateisystems keinen periodischen Dateisystem-Check (fsck
)
mehr.
![]() |
Achtung |
---|---|
Es ist grundsätzlich nicht sicher, |
![]() |
Tipp |
---|---|
Sie können den
fsck(8)-Befehl
auf allen Dateisystemen inklusive dem root-Dateisystem (/) gefahrlos beim
Reboot ausführen, indem Sie " |
![]() |
Tipp |
---|---|
In " |
Die grundlegende statische Dateisystem-Konfiguration wird in
"/etc/fstab
" festgelegt. Zum Beispiel:
# <Dateisystem> <Einbindungspunkt> <Typ> <Optionen> <dump> <pass> proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1 UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
![]() |
Tipp |
---|---|
Die UUID (Näheres in Abschnitt 9.5.3, „Zugriff auf Partitionen über die UUID-Kennung“) kann statt der normalen Namen
für blockorientierte Geräte wie " |
Die Performance und Charakteristik eines Dateisystems kann über mount-Optionen optimiert werden (lesen Sie dazu fstab(5) und mount(8)). Erwähnenswert sind dabei die folgenden:
"defaults
": impliziert die Standardoptionen
"rw,suid,dev,exec,auto,nouser,async
". (allgemein)
"noatime
" oder "relatime
": sehr
effektiv, um den Lesezugriff zu beschleunigen. (allgemein)
"user
": erlaubt einem unprivilegierten Benutzer, das
Dateisystem einzubinden. Diese Option impliziert die Kombination
"noexec,nosuid,nodev
". (allgemein, verwendet für CDs oder
USB-Speichermedien)
"noexec,nodev,nosuid
": eine Kombination zur Erhöhung der
Sicherheit. (allgemein)
"noauto
": beschränkt das Einbinden auf händisch
ausgeführte Operationen (kein automatisches Einbinden). (allgemein)
"data=journal
": Option für ext3fs; kann die
Datenintegrität bei Stromausfällen erhöhen, allerdings zum Preis einer
leichten Verringerung der Schreibgeschwindigkeit.
![]() |
Tipp |
---|---|
Sie müssen entsprechende Kernel-Bootparameter angeben (lesen Sie dazu Abschnitt 3.1.2, „Stufe 2: der Bootloader“), wie
z.B. " |
Die Charakteristik eines Dateisystems kann über seinen Superblock optimiert werden; verwenden Sie dazu den Befehl tune2fs(8):
"sudo tune2fs -l /dev/hda1
" zeigt den Inhalt des
Dateisystem-Superblocks auf "/dev/hda1
" an.
"sudo tune2fs -c 50 /dev/hda1
" ändert den Intervall zur
Überprüfung des Dateisystems (Ausführung von fsck
während
des Systemstarts) für "/dev/hda1
" auf jeden 50. Start.
"sudo tune2fs -j /dev/hda1
" fügt Journalfunktionalität
zum Dateisystem hinzu; das bedeutet, dass ein ext2-Dateisystem auf "/dev/hda1
"
nach ext3 konvertiert wird. (Führen Sie dies nur
bei einem nicht eingebundenen Dateisystem durch.)
"sudo tune2fs -O extents,uninit_bg,dir_index /dev/hda1 &&
fsck -pf /dev/hda1
" konvertiert ein ext3-Dateisystem auf "/dev/hda1
"
nach ext4. (Führen Sie dies nur bei einem nicht
eingebundenen Dateisystem durch.)
![]() |
Warnung |
---|---|
Bitte überprüfen Sie Ihre Hardware und lesen Sie die Handbuchseite von hdparam(8), bevor Sie mit der Festplattenkonfiguration herumspielen, da dies ziemlich gefährlich für die Datenintegrität sein kann. |
Sie können die Zugriffsgeschwindigkeit einer Festplatte testen, für
"/dev/hda
" z.B. mit "hdparm -tT
/dev/hda
". Bei einigen Festplatten, die über (E)IDE angeschlossen
sind, kann diese über "hdparm -q -c3 -d1 -u1 -m16
/dev/hda
" erhöht werden; dabei wird "(E)IDE 32-Bit
I/O-Unterstützung" aktiviert, außerdem das "using_dma-Flag" und das
"interrupt-unmask-Flag" gesetzt sowie die (gefährliche!) "Multiple 16 Sector
I/O"-Einstellung aktiviert.
Sie können die Cache-Funktionalität für das Schreiben auf eine Festplatte
testen, für "/dev/sda
" z.B. mit "hdparm -W
/dev/sda
". Mit "hdparm -W 0 /dev/sda
"
deaktivieren Sie diese Funktion.
Im Falle von Problemen beim Lesen von schlecht gepressten CD-ROMs in
modernen Hochgeschwindigkeits-CD-ROM-Laufwerken können Sie diese
möglicherweise trotzdem lesen, indem Sie mit "setcd -x 2
"
die Geschwindigkeit herabsetzen.
Die Performance und Lebensdauer einer Solid State Disk (SSD) kann wie folgt optimiert werden:
Verwenden Sie den aktuellsten Linux-Kernel (>= 3.2).
Reduzieren Sie Schreibvorgänge für Lesezugriffe.
Setzen Sie in /etc/fstab
die mount-Optionen
"noatime
" oder "relatime
".
Aktivieren Sie den TRIM-Befehl.
Setzen Sie in /etc/fstab
die mount-Option
"discard
" für ext4-Dateisysteme, Swap-Partitionen, Btrfs
usw. Lesen Sie dazu
fstab(5).
Setzen Sie in /etc/lvm/lvm.conf
die Option
"discard
" für LVM. Lesen Sie
dazu
lvm.conf(5).
Setzen Sie in /etc/crypttab
die Option
"discard
" für dm-crypt. Lesen Sie dazu
crypttab(5).
Aktivieren Sie das für SSD optimierte Festplatten-Zuordnungsschema.
Setzen Sie bei Btrfs-Dateisystemen die mount-Option "ssd
"
in /etc/fstab
.
Konfigurieren Sie Ihren Laptop so, dass die Daten nur alle 10 Minuten aus dem Cache auf die Platte geschrieben werden.
Setzen Sie die mount-Option "commit=600
" in
/etc/fstab
. Lesen Sie dazu
fstab(5).
Konfigurieren Sie pm-utils so, dass auch bei Betrieb mit Netzteil (an der Steckdose) der Laptop-Modus aktiviert wird. Näheres im Debian-Fehlerbericht #659260.
![]() |
Warnung |
---|---|
Das Ändern des Intervalls zur Übertragung der Daten auf die Disk vom normalen Standardwert 5 Sekunden auf 10 Minuten macht Ihre Daten anfälliger für Datenverluste im Falle eines Stromausfalls. |
Sie können Ihre Festplatte mit dem smartd(8)-Daemon überwachen und protokollieren, sofern diese mit dem SMART-Standard kompatibel ist:
Installieren Sie das Paket smartmontools
.
Identifizieren Sie Ihre Festplatten, indem Sie sie mit df(1) auflisten.
Wir gehen hier davon aus, dass die zu überwachende Festplatte als
"/dev/hda
" auftaucht.
Überprüfen Sie die Ausgabe von "smartctl -a /dev/hda
", um
festzustellen, ob die SMART-Funktionalität
derzeit wirklich aktiv ist.
Falls nicht, aktivieren Sie sie mit "smartctl -s on -a
/dev/hda
".
Aktivieren Sie den smartd(8)-Daemon wie folgt:
Entfernen Sie das Kommentarzeichen vor "start_smartd=yes
"
in der Datei "/etc/default/smartmontools
".
Führen Sie einen Neustart des
smartd(8)-Daemons
über "sudo /etc/init.d/smartmontools restart
" durch.
![]() |
Tipp |
---|---|
Die Einstellungen des
smartd(8)-Daemons
können über die |
Anwendungen erzeugen temporäre Dateien normalerweise unterhalb des
temporären Verzeichnisses "/tmp
". Falls
"/tmp
" nicht genug freien Speicherplatz bietet, können
Sie für Anwendungen, die sich diesbezüglich korrekt verhalten, auch mittels
der $TMPDIR
-Variable festlegen, welches Verzeichnis für
solche temporären Daten genutzt werden soll.
Partitionen, die bei der Installation über den Logical Volume Manager (LVM) (Linux-Funktionalität) erzeugt wurden, können einfach und ohne größere System-Neukonfiguration in der Größe verändert werden, indem Speicherplatz hinzugefügt oder entfernt wird, und zwar über die Grenzen einzelner Laufwerke hinweg.
Wenn Sie eine leere Partition (z.B. "/dev/sdx
") haben,
können Sie sie mit
mkfs.ext4(1)
formatieren und dann mit
mount(8)
in ein Verzeichnis einbinden, in dem Sie mehr Platz benötigen (Sie müssen
die originalen Daten kopieren):
$ sudo mv arbeit alt $ sudo mkfs.ext4 /dev/sdx $ sudo mount -t ext4 /dev/sdx arbeit $ sudo cp -a alt/* arbeit $ sudo rm -rf alt
![]() |
Tipp |
---|---|
Alternativ können Sie eine leere Festplatten-Image-Datei (lesen Sie dazu Abschnitt 9.6.5, „Eine leere Abbild-Datei erstellen“) als loop-device einbinden (Näheres dazu in Abschnitt 9.6.3, „Einbinden der Festplatten-Abbild-Datei“). Die reelle Größe des Festplatten-Images wächst mit den wirklich darin abgelegten Daten. |
Wenn Sie ein leeres Verzeichnis (z.B. "/pfad/zu/leer
")
auf einer anderen Partition haben, auf der noch Platz frei ist, können Sie
dieses Verzeichnis mit der mount-Option "--bind
" in ein
anderes Verzeichnis (z.B. "arbeit
") einbinden, in dem Sie
mehr Speicherplatz benötigen:
$ sudo mount --bind /pfad/zu/leer arbeit
Wenn Sie freien Platz auf einer anderen Partition haben (mit 2
Verzeichnissen wie "/pfad/zu/leer
" und
"/pfad/zu/arbeit
"), können Sie dort ein Verzeichnis
erstellen und dieses einem anderen alten Verzeichnis
(z.B. "/pfad/zu/alt
") "überstülpen", in dem Sie mehr
Platz benötigen. Dies wird ermöglicht durch die OverlayFS-Funktionalität im Linux-Kernel 3.18 oder
neuer (ab Debian Stretch 9.0).
$ sudo mount -t overlay overlay \ -olowerdir=/pfad/zu/alt,upperdir=/pfad/zu/leer,workdir=/pfad/zu/arbeit
Hierbei sollten "/pfad/zu/leer
" und
"/pfad/zu/nutzverzeichnis
" auf einer schreibbaren (RW)
Partition liegen, um "/pfad/zu/alt
" zu überlagern.
![]() |
Achtung |
---|---|
Diese Methode ist überholt. Manche Software könnte nicht korrekt funktionieren mit "symbolischen Links auf ein Verzeichnis". Verwenden Sie stattdessen einen der oben beschriebenen "mounting"-basierten Ansätze. |
Wenn Sie ein leeres Verzeichnis (z.B. "/pfad/zu/leer
")
auf einer anderen Partition haben, auf der noch Platz frei ist, können Sie
mit
ln(8)
einen symbolischen Link zu einem anderen Verzeichnis erstellen:
$ sudo mv arbeit alt $ sudo mkdir -p /pfad/zu/leer $ sudo ln -sf /pfad/zu/leer arbeit $ sudo cp -a alt/* arbeit $ sudo rm -rf alt
![]() |
Warnung |
---|---|
Verwenden Sie solch einen symbolischen Link auf ein Verzeichnis nicht für
Verzeichnisse, die von dem System verwaltet werden, wie
z.B. " |
Hier wird die Veränderung eines Festplatten-Abbilds behandelt.
Die Festplatten-Abbild-Datei ("disk.img
") eines nicht
eingebundenen Gerätes, z.B. der zweiten SCSI- oder Serial-ATA-Festplatte
"/dev/sdb
", kann mit
cp(1)
oder
dd(1)
wie folgt erzeugt werden:
# cp /dev/sdb disk.img # dd if=/dev/sdb of=disk.img
Ein Abbild des Master Boot Record (MBR), wie er in traditionellen PCs verwendet wird (lesen Sie auch Abschnitt 9.5.2, „Konfiguration der Plattenpartitionen“) und der im ersten Sektor der primären IDE-Festplatte abgelegt ist, kann mit dd(1) erstellt werden, wie hier:
# dd if=/dev/hda of=mbr.img bs=512 count=1 # dd if=/dev/hda of=mbr-nopart.img bs=446 count=1 # dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66
"mbr.img
": der MBR mit der Partitionstabelle
"mbr-nopart.img
": der MBR ohne Partitionstabelle
"mbr-part.img
": die Partitionstabelle nur vom MBR
Falls Sie eine SCSI- oder Serial-ATA-Festplatte als Boot-Festplatte haben,
ersetzen Sie "/dev/hda
" durch
"/dev/sda
".
Falls Sie ein Abbild einer einzelnen Partition der Festplatte erstellen
möchten, ersetzen Sie "/dev/hda
" z.B. durch
"/dev/hda1
".
Die Festplatten-Abbild-Datei "disk.img
" kann wie folgt
auf ein nicht eingebundenes Laufwerk passender Größe (hier z.B. auf die
zweite SCSI- oder Serial-ATA-Festplatte "/dev/sdb
")
geschrieben werden:
# dd if=disk.img of=/dev/sdb
Ähnlich dazu kann mit folgendem Befehl die Abbild-Datei
"partition.img
" einer einzelnen Partition auf eine nicht
eingebundene Partition passender Größe (hier z.B. die erste Partition der
zweiten SCSI- oder Serial-ATA-Festplatte "/dev/sdb1
")
geschrieben werden:
# dd if=partition.img of=/dev/sdb1
Das Festplatten-Abbild "partition.img
", welches ein
einfaches Partitions-Abbild enthält, kann mittels einem loop device wie folgt eingebunden und
anschließend wieder gelöst werden:
# losetup -v -f partition.img Loop device is /dev/loop0 # mkdir -p /mnt/loop0 # mount -t auto /dev/loop0 /mnt/loop0 ...hack...hack...hack # umount /dev/loop0 # losetup -d /dev/loop0
Das kann noch weiter vereinfacht werden:
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.img
Jede Partition des Festplatten-Abbilds "disk.img
", das
mehrere Partitionen enthält, kann mittels loop
device eingebunden werden. Da das loop device standardmäßig keine
Partitionen verwaltet, muss es wie folgt zurückgesetzt werden:
# modinfo -p loop # Funktionalität des Kernels verifizieren max_part:Maximum number of partitions per loop device (auf deutsch: max. Anzahl von Partitionen pro loop device) max_loop:Maximum number of loop devices (auf deutsch: max. Anzahl von loop devices) # losetup -a # Verifizieren, dass das loop device nicht verwendet wird # rmmod loop # modprobe loop max_part=16
Jetzt kann das loop device bis zu 16 Partitionen verwalten.
# losetup -v -f disk.img Loop device is /dev/loop0 # fdisk -l /dev/loop0 Disk /dev/loop0: 5368 MB, 5368709120 bytes 255 heads, 63 sectors/track, 652 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Disk identifier: 0x452b6464 Device Boot Start End Blocks Id System /dev/loop0p1 1 600 4819468+ 83 Linux /dev/loop0p2 601 652 417690 83 Linux # mkdir -p /mnt/loop0p1 # mount -t ext4 /dev/loop0p1 /mnt/loop0p1 # mkdir -p /mnt/loop0p2 # mount -t ext4 /dev/loop0p2 /mnt/loop0p2 ...hack...hack...hack # umount /dev/loop0p1 # umount /dev/loop0p2 # losetup -d /dev/loop0
Alternativ können Sie ähnliche Funktionalitäten auch erreichen, indem Sie
wie hier die device-mapper-Geräte
nutzen, die von
kpartx(8)
aus dem kpartx
-Paket erzeugt werden:
# kpartx -a -v disk.img ... # mkdir -p /mnt/loop0p2 # mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2 ... ...hack...hack...hack # umount /dev/mapper/loop0p2 ... # kpartx -d /mnt/loop0
![]() |
Anmerkung |
---|---|
Sie können auch eine einzelne Partition eines solchen Festplatten-Abbilds mit einem loop device einbinden, indem Sie ein Offset verwenden, um den MBR usw. zu überspringen. Dies ist allerdings fehleranfälliger. |
Eine Festplatten-Abbild-Datei (hier "disk.img
") kann wie
folgt von allen gelöschten Dateien bereinigt und in eine gesäuberte kompakte
Abbild-Datei "new.img
" geschrieben werden:
# mkdir old; mkdir new # mount -t auto -o loop disk.img old # dd bs=1 count=0 if=/dev/zero of=new.img seek=5G # mount -t auto -o loop new.img new # cd old # cp -a --sparse=always ./ ../new/ # cd .. # umount new.img # umount disk.img
Wenn "disk.img
" auf einem ext2-, ext3- oder
ext4-Dateisystem liegt, können Sie auch
zerofree(8)
aus dem zerofree
-Paket verwenden, wie hier gezeigt:
# losetup -f -v disk.img Loop device is /dev/loop3 # zerofree /dev/loop3 # cp --sparse=always disk.img new.img
Ein leeres Festplatten-Abbild "disk.img
", das bis zu
einer Größe von 5 GiB anwachsen kann, erzeugen Sie mit
dd(1)
wie folgt:
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
Mittels eines loop device erstellen Sie
auf diesem Festplatten-Abbild "disk.img
" wie folgt ein
ext4-Dateisystem:
# losetup -f -v disk.img Loop device is /dev/loop1 # mkfs.ext4 /dev/loop1 ...hack...hack...hack # losetup -d /dev/loop1 $ du --apparent-size -h disk.img 5.0G disk.img $ du -h disk.img 83M disk.img
Die Dateigröße von "disk.img
" ist 5.0 GiB, aber der
aktuell von ihm verwendete Speicherplatz ist lediglich 83 MiB. Diese
Diskrepanz ist möglich, da ext4 die Verwendung
von Sparse-Dateien unterstützt.
![]() |
Tipp |
---|---|
Der wirklich genutzte Speicherplatz von Sparse-Dateien wächst mit den Daten, die in diese hineingeschrieben werden. |
Die Nutzung von Befehlen ähnlich denen aus Abschnitt 9.6.3, „Einbinden der Festplatten-Abbild-Datei“ auf Geräten, die von loop device oder device-mapper-Geräten erzeugt wurden, erlaubt
Ihnen ebenfalls, das Abbild "disk.img
" über
parted(8)
oder
fdisk(8)
zu erzeugen, sowie Dateisysteme mit
mkfs.ext4(8),
mkswap(8)
usw. zu erstellen.
Eine ISO9660-Abbild-Datei
"cd.iso
" aus einem Quellverzeichnisbaum (hier in
"quell_verzeichnis
") kann mit
genisoimage(1)
aus dem cdrkit-Paket erstellt werden:
# genisoimage -r -J -T -V volume_id -o cd.iso quell_verzeichnis
Ähnlich dazu kann ein boot-fähiges ISO9660-Abbild
"cdboot.iso
" aus einem Verzeichnisbaum
("quell_verzeichnis
") erstellt werden, der dem des
debian-installer
ähnelt:
# genisoimage -r -o cdboot.iso -V volume_id \ -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table quell_verzeichnis
Hier wird der Isolinux-Bootloader zum Booten verwendet (Näheres in Abschnitt 3.1.2, „Stufe 2: der Bootloader“).
Sie können die Berechnung der md5sum-Prüfsumme und die Erstellung eines ISO9660-Abbilds direkt von der CD-ROM durchführen, wie hier gezeigt:
$ isoinfo -d -i /dev/cdrom CD-ROM is in ISO 9660 format ... Logical block size is: 2048 Volume size is: 23150592 ... # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso
![]() |
Warnung |
---|---|
Sie müssen wie oben gezeigt dafür sorgen, dass Sie nicht von einem Fehler im Linux-Kernel ("ISO9660 filesystem read ahead bug") betroffen werden; nur so können Sie korrekte Ergebnisse erhalten. |
![]() |
Tipp |
---|---|
Eine DVD ist für wodim(1) aus dem cdrkit-Paket lediglich eine große CD. |
Sie finden nutzbare Laufwerke wie folgt:
# wodim --devices
Dann wird die leere CD-R in das Laufwerk eingelegt und die
ISO9660-Abbild-Datei "cd.iso
" wird wie folgt mit
wodim(1)
auf das Laufwerk (hier "/dev/hda
") geschrieben:
# wodim -v -eject dev=/dev/hda cd.iso
Falls statt der CD-R eine CD-RW genutzt wird, verwenden Sie dies:
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
![]() |
Tipp |
---|---|
Wenn Ihre Arbeitsplatz-Umgebung CDs automatisch einbindet, lösen Sie die
Einbindung mit " |
Wenn "cd.iso
" ein ISO9660-Abbild enthält, können Sie es
wie folgt in "/cdrom
" einbinden:
# mount -t iso9660 -o ro,loop cd.iso /cdrom
![]() |
Tipp |
---|---|
Moderne Arbeitsplatz-Systeme binden Wechseldatenträger (wie mit ISO9660 formatierte CDs) automatisch ein (lesen Sie dazu Abschnitt 10.1.7, „Wechseldatenträger“). |
Hier behandeln wir das Bearbeiten von Binärdaten auf einem Speichermedium.
Die grundlegendste Methode zum Betrachten von Binärdaten ist die Verwendung
des Befehls "od -t x1
".
Tabelle 9.20. Liste von Paketen zum Betrachten und Bearbeiten von Binärdaten
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
coreutils
|
V:892, I:999 | 15016 | grundlegendes Paket, das od(1) für die Ausgabe von Dateien (HEX, ASCII, OCTAL, …) enthält |
bsdmainutils
|
V:870, I:998 | 587 | Hilfspaket, das hd(1) für die Ausgabe von Dateien (HEX, ASCII, OCTAL, …) enthält |
hexedit
|
V:1, I:12 | 63 | Editor und Betrachter für Binärdateien (HEX, ASCII) |
bless
|
V:0, I:5 | 973 | voll ausgestatteter Hexadezimal-Editor (GNOME) |
okteta
|
V:1, I:20 | 1344 | voll ausgestatteter Hexadezimal-Editor (KDE4) |
ncurses-hexedit
|
V:0, I:2 | 132 | Editor und Betrachter für Binärdateien (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:1 | 133 | Editor und Betrachter für Binärdateien (HEX, ASCII, EBCDIC, OKTAL, …) |
![]() |
Tipp |
---|---|
HEX wird als Acronym für das Hexadezimal-Format mit einer Basis (Radix) von 16 verwendet. OKTAL steht für das Oktal-Format mit einer Basis von 8. ASCII ist der American Standard Code for Information Interchange, also für normalen englischsprachigen Text-Code. EBCDIC steht für den Extended Binary Coded Decimal Interchange Code, der auf IBM Mainframe-Betriebssystemen verwendet wird. |
Diese Werkzeuge können Dateien lesen und schreiben, ohne dass dazu die Festplatte eingebunden werden muss:
Software RAID-Systeme, bereitgestellt durch den Linux-Kernel, bieten Datenredundanz auf Ebene des Kernel-Dateisystems und erreichen so eine sehr hohe Zuverlässigkeit der Datenspeicherung.
Es gibt auch Werkzeuge, die Datenredundanz für Dateien auf Ebene der Anwendungen ermöglichen und so ebenfalls eine sehr zuverlässige Datenspeicherung erlauben:
Tabelle 9.22. Liste von Werkzeugen, um Redundanz für Dateien hinzuzufügen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
par2
|
V:2, I:10 | 246 | Parity Archive Volume Set, für die Dateiüberprüfung und -reparatur |
dvdisaster
|
V:0, I:2 | 1548 | Schutz vor Datenverlust/Kratzern/Alterung von CD-/DVD-Medien |
dvbackup
|
V:0, I:0 | 412 | Backup-Werkzeug, das MiniDV-Camcorder verwendet (enthält rsbep(1)) |
vdmfec
|
V:0, I:0 | 97 | Wiederherstellung verlorener Blöcke mittels Vorwärtsfehlerkorrektur (Forward Error Correction) |
Hier einige Programme für Datenwiederherstellung und forensische Analysen:
Tabelle 9.23. Liste von Paketen für Datenwiederherstellung und forensische Analysen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
testdisk
|
V:3, I:40 | 1319 | Hilfsprogramm zum Scannen von Partitionen und Wiederherstellen von Daten |
magicrescue
|
V:0, I:3 | 224 | Hilfsprogramm zur Dateiwiederherstellung mittels Suche nach "magischen Bytes" |
scalpel
|
V:0, I:4 | 82 | ein sparsamer, sehr leistungsfähiger Datei-Carver |
myrescue
|
V:0, I:3 | 63 | Daten von beschädigten Festplatten retten |
extundelete
|
V:1, I:11 | 148 | Hilfsprogramm, um gelöschte Dateien von ext3-/ext4-Dateisystemen wiederherzustellen |
ext4magic
|
V:0, I:3 | 232 | Hilfsprogramm, um gelöschte Dateien von ext3-/ext4-Dateisystemen wiederherzustellen |
ext3grep
|
V:0, I:3 | 278 | Werkzeug, das bei der Wiederherstellung von gelöschten Dateien auf ext3-Dateisystemen hilft |
scrounge-ntfs
|
V:0, I:3 | 45 | Datenwiederherstellungsprogramm für NTFS-Dateisysteme |
gzrt
|
V:0, I:0 | 57 | Werkzeugsatz für die Wiederherstellung von gzip-Daten |
sleuthkit
|
V:1, I:17 | 1113 | Werkzeuge für forensische Analysen (SleuthKit) |
autopsy
|
V:0, I:2 | 1021 | grafische Oberfläche für SleuthKit |
foremost
|
V:0, I:7 | 96 | forensiche Anwendung zur Datenwiederherstellung |
guymager
|
V:0, I:1 | 1051 | forensisches Imaging-Werkzeug, basierend auf Qt |
dcfldd
|
V:0, I:5 | 94 |
erweitertes dd für Forensik und Sicherheit
|
![]() |
Tipp |
---|---|
Sie können gelöschte Dateien auf einem ext2-Dateisystem wiederherstellen,
indem Sie |
Wenn eine Datei zu groß ist, um sie als einzelne Datei zu sichern, können Sie trotzdem ein Backup davon erstellen, nachdem Sie sie in kleinere, z.B. 2000 MiB große Stücke aufgeteilt haben; später können diese Stücke wieder zur Originaldatei zusammengesetzt werden.
$ split -b 2000m grosse_datei $ cat x* >grosse_datei
![]() |
Achtung |
---|---|
Stellen Sie sicher, dass Sie dort keine anderen Dateien haben, die mit einem
" |
Zum Leeren des Inhalt einer Datei, z.B. einer Logdatei, verwenden Sie nicht rm(1), um die Datei zu löschen und anschließend eine neue leere Datei zu erstellen, da in der Zeit zwischen den Befehlen möglicherweise Zugriffsversuche auf die Datei erfolgen könnten. Folgender Weg ist der sicherste, um Dateiinhalte zu leeren:
$ :>zu_leerende_datei
Folgende Befehle erzeugen Dummy- oder leere Dateien:
$ dd if=/dev/zero of=5kb.file bs=1k count=5 $ dd if=/dev/urandom of=7mb.file bs=1M count=7 $ touch zero.file $ : > alwayszero.file
Sie sollten folgende Dateien vorfinden:
"5kb.file
" ist eine 5KB große Datei, die Nullen enthält.
"7mb.file
" ist eine 7MB große Datei mit zufälligem
Inhalt.
"zero.file
" könnte eine 0 Byte große Datei sein. Falls
sie bereits existierte, wurde ihr mtime
-Attribut
aktualisiert, aber der Inhalt wurde beibehalten.
"alwayszero.file
" ist immer eine 0 Byte große
Datei. Falls sie bereits existierte, wurde ihr
mtime
-Attribut aktualisiert und der Inhalt entfernt.
Es gibt mehrere Wege, um alle Daten von einer Festplatte oder einem
ähnlichen Gerät zu entfernen, z.B. einem USB-Speicherstick unter
"/dev/sda
".
![]() |
Achtung |
---|---|
Überprüfen Sie zuerst den Speicherort des USB-Sticks mit
mount(8),
bevor Sie irgendwelche dieser Befehle ausführen. Das Gerät, auf das
" |
Löschen Sie den kompletten Inhalt der Platte, indem Sie wie folgt die Daten auf 0 setzen:
# dd if=/dev/zero of=/dev/sda
Löschen Sie alles, indem Sie es wie folgt mit zufälligen Daten überschreiben:
# dd if=/dev/urandom of=/dev/sda
Löschen Sie alles, indem Sie es wie hier auf sehr effiziente Art mit zufälligen Daten überschreiben:
# shred -v -n 1 /dev/sda
Da
dd(1)
auf der Shell vieler boot-fähiger Linux-CDs (wie einer Debian-Installer-CD)
verfügbar ist, können Sie Ihr installiertes Betriebssystem vollständig
entfernen, indem Sie von solch einer CD einen Löschbefehl auf die
System-Festplatte (z.B. "/dev/hda
",
"/dev/sda
" o.ä.) ausführen.
In einem nicht genutzten Bereich auf einer Festplatte (oder einem
USB-Speicherstick), z.B. "/dev/sdb1
", könnten gelöschte
Daten noch immer vorhanden sein, da beim Löschen lediglich die Verbindung
zum Dateisystem entfernt wurde. Diese Daten können durch Überschreiben
entfernt werden:
# mount -t auto /dev/sdb1 /mnt/foo # cd /mnt/foo # dd if=/dev/zero of=junk dd: writing to `junk': No space left on device ... # sync # umount /dev/sdb1
![]() |
Warnung |
---|---|
Dies ist für Ihren USB-Stick normalerweise ausreichend, aber es ist nicht perfekt. Die meisten Teile von gelöschten Dateinamen und deren Attribute könnten versteckt sein und im Dateisystem verbleiben. |
Wenn Sie versehentlich eine Datei gelöscht haben, die noch von einem Programm verwendet wird (lesend oder schreibend), ist es möglich, diese Datei wiederherzustellen.
Probieren Sie zum Beispiel folgendes:
$ echo foo > bar $ less bar $ ps aux | grep ' less[ ]' bozo 4775 0.0 0.0 92200 884 pts/8 S+ 00:18 0:00 less bar $ rm bar $ ls -l /proc/4775/fd | grep bar lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -l -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar $ cat bar foo
Führen Sie auf einem anderen Terminal (wenn Sie das
lsof
-Paket installiert haben) folgendes aus:
$ ls -li bar 2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar $ rm bar $ lsof |grep bar|grep less less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted) $ cat /proc/4775/fd/4 >bar $ ls -li bar 2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar $ cat bar foo
Dateien mit harten Links können mittels "ls -li
"
identifiziert werden:
$ ls -li total 0 2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 bar 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz 2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo
Sowohl bei "baz
" wie auch bei "foo
"
zeigt die Anzahl der Links von "2" (>1) an, dass für sie harte Links
existieren. Sie haben beide die gemeinsame Inode-Nummer "2738404". Das bedeutet, dass dies beides
die gleiche hart verlinkte Datei ist. Falls Sie nicht zufällig alle hart
verlinkten Dateien finden, können Sie über die Inode (z.B. "2738404") danach suchen:
# find /pfad/zum/einbindungspunkt -xdev -inum 2738404
Mit physikalischem Zugriff auf den Rechner kann jeder ganz einfach uneingeschränkte Rechte und Zugriffe auf alle Dateien auf Ihrem PC erlangen (lesen Sie dazu Abschnitt 4.7.4, „Sichern des root-Passworts“). Das passwortgeschützte Anmeldesystem ist nicht in der Lage, Ihre Privatsphäre und sensible Daten vor einem möglichen Diebstahl Ihres PCs zu schützen. Dies kann nur durch Verwendung einer Technologie zur Datenverschlüsselung erreicht werden. Obwohl GNU Privacy Guard (Näheres in Abschnitt 10.3, „Datensicherheits-Infrastruktur“) Dateien verschlüsseln kann, bedeutet es für den Benutzer einigen Aufwand.
dm-crypt und eCryptfs ermöglichen eine automatische Datenverschlüsselung direkt über Linux-Kernel-Module bei minimalem Aufwand für den Benutzer.
Tabelle 9.24. Liste von Werkzeugen zur Datenverschlüsselung
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
cryptsetup
|
V:20, I:82 | 60 | Werkzeug zur Verschlüsselung von blockorientierten Geräten (dm-crypt / LUKS) |
cryptmount
|
V:3, I:5 | 224 | Werkzeuge zur Verschlüsselung von blockorientierten Geräten (dm-crypt / LUKS) mit Fokus auf das Einbinden/Trennen durch normale Benutzer |
ecryptfs-utils
|
V:6, I:9 | 396 | Werkzeuge zur Verschlüsselung von unterlagerten Dateisystemen (eCryptfs) |
Dm-crypt ist ein kryptografisches Dateisystem, welches device-mapper verwendet. Device-mapper bildet ein Blockgerät auf einem anderen ab.
eCryptfs ist ein anderes kryptografisches System, das ein überlagertes Dateisystem ("stacked filesystem") nutzt. Ein "stacked filesystem" überlagert ein vorhandenes Verzeichnis eines anderen, eingebundenen Dateisystems.
![]() |
Achtung |
---|---|
Datenverschlüsselung kostet CPU-Zeit usw. Bitte wägen Sie Kosten und Nutzen gegeneinander ab. |
![]() |
Anmerkung |
---|---|
Mit dem debian-installer (Lenny und später) kann ein vollständiges Debian-System auf einer verschlüsselten Festplatte installiert werden; dabei werden dm-crypt/LUKS und initramfs verwendet. |
![]() |
Tipp |
---|---|
In Abschnitt 10.3, „Datensicherheits-Infrastruktur“ finden Sie Infos über eine Verschlüsselungslösung, die komplett auf Benutzerebene abläuft: GNU Privacy Guard. |
Sie können die Inhalte eines Wechseldatenträgers, wie z.B. eines USB-Sticks
auf "/dev/sdx
", mit dm-crypt/LUKS
verschlüsseln. Formatieren Sie ihn einfach wie folgt:
# badblocks -c 1024 -s -w -t random -v /dev/sdx # fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open --type luks /dev/sdx1 sdx1 ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2008-10-04 18:44 control brw-rw---- 1 root disk 254, 0 2008-10-04 23:55 sdx1 # mkfs.vfat /dev/mapper/sdx1 ... # cryptsetup luksClose sdx1
Dann kann er in einer modernen Arbeitsplatzumgebung wie ein normaler
USB-Stick unter "/media/<datenträger-name>
"
eingebunden werden (Näheres hierzu in Abschnitt 10.1.7, „Wechseldatenträger“), nur dass dabei nach dem Passwort
gefragt wird; in GNOME nutzen Sie dazu
gnome-mount(1).
Der Unterschied ist, dass jegliche Daten, die auf den Stick geschrieben
werden, verschlüsselt sind. Sie können den Stick alternativ auch mit einem
anderen Dateisystem formatieren, z.B. als ext4 mit "mkfs.ext4
/dev/mapper/sdx1
".
![]() |
Anmerkung |
---|---|
Wenn Sie wirklich paranoid sind, was die Sicherheit Ihrer Daten anbelangt, sollten Sie unter Umständen die Daten auf dem Stick mehrfach überschreiben (mit dem "badblocks"-Befehl aus dem obigen Beispiel). Diese Operation ist allerdings sehr zeitaufwendig. |
Wir gehen davon aus, dass Ihre originale "/etc/fstab
"
folgendes enthält:
/dev/sda7 swap sw 0 0
Eine verschlüsselte Swap-Partition aktivieren Sie mit dm-crypt wie folgt:
# aptitude install cryptsetup # swapoff -a # echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab # perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab # /etc/init.d/cryptdisks restart ... # swapon -a
Eine verschlüsselte Plattenpartition, die mit dm-crypt/LUKS auf
"/dev/sdc5
" erstellt wurde, kann wie folgt unter
"/mnt
" eingebunden werden:
$ sudo cryptsetup open /dev/sdc5 ninja --type luks Enter passphrase for /dev/sdc5: **** $ sudo lvm lvm> lvscan inactive '/dev/ninja-vg/root' [13.52 GiB] inherit inactive '/dev/ninja-vg/swap_1' [640.00 MiB] inherit ACTIVE '/dev/goofy/root' [180.00 GiB] inherit ACTIVE '/dev/goofy/swap' [9.70 GiB] inherit lvm> lvchange -a y /dev/ninja-vg/root lvm> exit Exiting. $ sudo mount /dev/ninja-vg/root /mnt
Dateien, die unterhalb von "~/Private/
" abgelegt werden,
können mit eCryptfs und dem
ecryptfs-utils
-Paket automatisch verschlüsselt werden:
Starten Sie
ecryptfs-setup-private(1)
und geben Sie in den folgenden Dialogen "~/Private/
" als
zu verschlüsselndes Verzeichnis an.
Aktivieren Sie "~/Private/
", indem Sie
ecryptfs-mount-private(1)
ausführen.
Verschieben Sie sensible Dateien nach "~/Private/
" und
erstellen Sie symbolische Links, falls erforderlich.
Mögliche Kandidaten: "~/.fetchmailrc
",
"~/.ssh/identity
", "~/.ssh/id_rsa
",
"~/.ssh/id_dsa
" sowie andere Dateien mit den
Berechtigungen "go-rwx
".
Verschieben Sie Verzeichnisse mit sensiblem Inhalt nach
"~/Private/
" und erstellen Sie symbolische Links, falls
erforderlich.
Mögliche Kandidaten: "~/.gnupg
" sowie andere
Verzeichnisse mit den Berechtigungen "go-rwx
".
Erzeugen Sie einen symbolischen Link von
"~/Desktop/Private/
" auf "~/Private/
",
um Operationen auf der Arbeitsfläche zu erleichtern.
Deaktivieren Sie "~/Private/
", indem Sie
ecryptfs-umount-private(1)
ausführen.
Immer wenn Sie Zugriff auf die verschlüsselten Daten benötigen, aktivieren
Sie "~/Private/
" mittels
"ecryptfs-mount-private
".
![]() |
Tipp |
---|---|
Da eCryptfs selektiv nur bestimmte, sensible
Dateien verschlüsselt, ist die Systembelastung hier viel kleiner als bei der
Verwendung von dm-crypt für das ganze root-
oder " |
Wenn Sie Ihr Login-Passwort verwenden, um darüber Schlüssel für die Verschlüsselung gesichert abzulegen, können Sie eCryptfs automatisch mittels PAM (Pluggable Authentication Modules) einbinden.
Fügen Sie folgende Zeile vor "pam_permit.so
" in
"/etc/pam.d/common-auth
" ein:
auth required pam_ecryptfs.so unwrap
Fügen Sie folgende Zeile als letzte Zeile in
"/etc/pam.d/common-session
" ein:
session optional pam_ecryptfs.so unwrap
Fügen Sie folgende Zeile als erste aktive Zeile in
"/etc/pam.d/common-password
" ein:
password required pam_ecryptfs.so
Dies ist ziemlich bequem.
![]() |
Warnung |
---|---|
Konfigurationsfehler in PAM könnten Sie aus Ihrem eigenen System aussperren. Weiteres hierzu in Kapitel 4, Authentifizierung. |
![]() |
Achtung |
---|---|
Wenn Sie Ihr Login-Passwort verwenden, um darüber Schlüssel für die Verschlüsselung gesichert abzulegen, sind Ihre verschlüsselten Daten nur so sicher wie Ihr Login-Passwort. Ihre Daten unterliegen so dem Risiko, dass jemand nach dem Diebstahl Ihres Laptops Software zum Knacken von Passwörtern darauf los läßt; dieses Risiko kann nur durch die sorgfältige Wahl eines starken Passworts minimiert werden (lesen Sie dazu Abschnitt 4.7.4, „Sichern des root-Passworts“). |
Debian stellt für unterstützte Architekturen modulare Linux-Kernel als Pakete bereit.
Es gibt einige erwähnenswerte Funktionalitäten im Linux-Kernel 2.6/3.x verglichen mit Version 2.4:
Gerätedateien werden durch das udev-System erzeugt (Näheres in Abschnitt 3.3, „Das udev-System“).
Für Lese-/Schreibzugriffe auf IDE-CD/DVD-Laufwerke wird nicht mehr das
ide-scsi
-Modul verwendet.
Netzwerk-Paketfilter-Funktionen nutzen die
iptables
-Kernel-Module.
Der Versionssprung von Linux 2.6.39 auf Linux 3.0 ist nicht durch gravierende technologische Änderungen begründet, sondern durch den 20. Geburtstag von Linux.
Viele Linux-Funktionalitäten sind wie folgt über Kernel-Parameter konfigurierbar:
Kernel-Parameter, die durch den Bootloader initialisiert werden (Näheres in Abschnitt 3.1.2, „Stufe 2: der Bootloader“);
Kernel-Parameter, die durch sysctl(8) zur Laufzeit geändert werden und die über sysfs erreichbar sind (Näheres in Abschnitt 1.2.12, „procfs und sysfs“);
Modul-Parameter, die über Argumente von modprobe(8) gesetzt werden, wenn ein Modul aktiviert wird (Näheres in Abschnitt 9.6.3, „Einbinden der Festplatten-Abbild-Datei“).
Lesen Sie "kernel-parameters.txt(.gz)
" und andere
zugehörige Dokumente in der Linux-Kernel-Dokumentation
("/usr/share/doc/linux-doc-3.*/Documentation/filesystems/*
"),
bereitgestellt durch das linux-doc-3.*
-Paket.
Die meisten normalen Programme benötigen
keine Kernel-Header (Kopfteil) und könnten im Gegenteil sogar gestört
werden, wenn Sie sie direkt zum Kompilieren verwenden würden. Sie sollten
stattdessen gegen die Header in "/usr/include/linux
" und
"/usr/include/asm
" aus dem Paket
libc6-dev
kompiliert werden (diese werden auf einem
Debian-System aus dem glibc
-Quellpaket erzeugt).
![]() |
Anmerkung |
---|---|
Um einige Kernel-spezifische Programme wie Kernel-Module aus externen
Linux-Quellen oder den automounter-Daemon ( |
Debian hat seine eigene Methode zur Kompilierung des Kernels und zugehöriger Module.
Tabelle 9.25. Liste von Schlüsselpaketen für die Neukompilierung des Kernels auf einem Debian-System
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
build-essential
|
I:456 | 20 |
Pakete, die zum Bauen von Debian-Paketen essentiell nötig sind:
make , gcc , …
|
bzip2
|
V:186, I:946 | 184 | Werkzeuge zum Komprimieren und Dekomprimieren von bz2-Dateien |
libncurses5-dev
|
V:13, I:148 | 6 | Entwickler-Bibliothek und Dokumentation für ncurses |
git
|
V:274, I:451 | 33183 | git: vom Linux-Kernel verwendetes verteiltes Versionsverwaltungssystem |
fakeroot
|
V:29, I:505 | 215 | bietet eine fakeroot-Umgebung, um Pakete als nicht-root-Benutzer zu bauen |
initramfs-tools
|
V:166, I:991 | 105 | Werkzeug zur Erzeugung eines initramfs (Debian-spezifisch) |
dkms
|
V:66, I:211 | 282 | Dynamic Kernel Module Support (DKMS) (generisch) |
devscripts
|
V:9, I:66 | 2185 | Helfer-Skripte für einen Debian-Paketbetreuer (Debian-spezifisch) |
Wenn Sie eine initrd
wie in Abschnitt 3.1.2, „Stufe 2: der Bootloader“ verwenden, lesen Sie unbedingt die
entsprechenden Informationen in
initramfs-tools(8),
update-initramfs(8),
mkinitramfs(8)
und
initramfs.conf(5).
![]() |
Warnung |
---|---|
Setzen Sie in den Verzeichnissen Ihres Quellcode-Baums
(z.B. " |
![]() |
Anmerkung |
---|---|
Um den aktuellsten Linux-Kernel auf einem
Debian- |
![]() |
Anmerkung |
---|---|
Dynamic Kernel Module Support (DKMS) ist ein neues distributions-unabhängiges Rahmenwerk, das entwickelt wurde, um die Aktualisierung einzelner Kernel-Module ohne Austausch des kompletten Kernels zu ermöglichen. Dies wird verwendet für die Betreuung von Modulen außerhalb des Linux-Quellcode-Baums. Auch ist es damit sehr einfach, im Zuge der Hochrüstung des Kernels Module neu zu bauen. |
Um eigene Kernel-Binärpakete aus den Upstream-Kernel-Quelltexten zu
erstellen, sollten Sie das angebotene "deb-pkg
"-Target
nutzen:
$ sudo apt-get build-dep linux $ cd /usr/src $ wget http://www.kernel.org/pub/linux/kernel/v3.11/linux-<version>.tar.bz2 $ tar -xjvf linux-<version>.tar.bz2 $ cd linux-<version> $ cp /boot/config-<version> .config $ make menuconfig ... $ make deb-pkg
![]() |
Tipp |
---|---|
Das Paket linux-source-<version> stellt den Linux-Kernel-Quelltext
inklusive Debian-Patches als
" |
Um spezifische Binärpakete aus dem Debian-Kernel-Quellpaket zu bauen,
sollten Sie die Targets
"binary-arch_<architecture>_<featureset>_<flavour>
"
in "debian/rules.gen
" verwenden:
$ sudo apt-get build-dep linux $ apt-get source linux $ cd linux-3.* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Hier finden Sie weitere Informationen:
Debian Wiki: KernelFAQ
Debian Wiki: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
Der Hardware-Treiber ist Code, der auf dem Zielsystem läuft. Die meisten
Hardware-Treiber sind heutzutage als freie Software verfügbar und in den
normalen Debian-Kernel-Paketen im main
-Bereich des
Debian-Archivs enthalten.
Die Firmware ist Code, der auf das Gerät geladen wird (z.B. CPU-Mikrocode, Rendering-Code, der auf der GPU läuft, oder FPGA-/CPLD-Daten …). Einige Firmware-Pakete gibt es als freie Software, aber viele davon werden nicht als freie Software bereitgestellt, da sie Binärdaten ohne den zugehörigen Quelltext enthalten.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
*-firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
Bitte beachten Sie, dass Pakete aus non-free
und
contrib
nicht Teil des Debian-Systems sind. Die
Konfiguration, um den Zugriff auf die Bereiche non-free
und contrib
zu aktivieren oder zu deaktivieren, ist in
Abschnitt 2.1.4, „Grundlagen über das Debian-Archiv“ beschrieben. Sie sollten sich
etwaiger negativer Auswirkungen bei der Verwendung von Paketen aus
non-free
und contrib
bewußt sein;
lesen Sie hierzu auch Abschnitt 2.1.5, „Debian ist zu 100% freie Software“.
Die Verwendung eines virtualisierten Systems ermöglicht es uns, mehrere Instanzen eines Systems gleichzeitig auf einer einzigen Hardware laufen zu lassen.
![]() |
Tipp |
---|---|
Lesen Sie dazu auch http://wiki.debian.org/SystemVirtualization. |
Neben dem einfachen chroot gibt es in Debian eine Vielzahl von Paketen betreffend System-Virtualisierung und Emulation.
Tabelle 9.26. Liste von Virtualisierungswerkzeugen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
schroot
|
V:7, I:10 | 2691 | spezialisiertes Werkzeug, um Debian-Binärpakete in chroot-Umgebungen auszuführen |
sbuild
|
V:1, I:4 | 285 | Werkzeug, um Debian-Binärpakete aus Debian-Quellen zu bauen |
pbuilder
|
V:2, I:17 | 959 | persönlicher Paketersteller für Debian-Pakete |
debootstrap
|
V:5, I:66 | 277 | Programm zum Bootstrap eines grundlegenden Debian-Systems (geschrieben in sh) |
cdebootstrap
|
V:0, I:3 | 112 | Programm zum Bootstrap eines Debian-Systems (geschrieben in C) |
virt-manager
|
V:8, I:34 | 7771 | Virtual Machine Manager: Arbeitsplatz-Anwendung zur Verwaltung von virtuellen Maschinen |
libvirt-clients
|
V:28, I:51 | 1946 | Programme für die libvirt-Bibliothek |
bochs
|
V:0, I:1 | 4619 | Bochs: IA-32 PC-Emulator |
qemu
|
I:37 | 93 | QEMU: schneller generischer Prozessor-Emulator |
qemu-system
|
I:35 | 94 | QEMU: Binärdateien zur Emulation eines vollständigen Systems |
qemu-user
|
V:2, I:34 | 73104 | QEMU: Binärdateien für User-Mode-Emulation |
qemu-utils
|
V:10, I:99 | 6179 | QEMU: Hilfsprogramme |
qemu-kvm
|
V:22, I:72 | 103 | KVM: vollständige Virtualisierungslösung auf x86-Hardware mit hardware-unterstützter Virtualisierung |
virtualbox
|
V:34, I:43 | 76179 | VirtualBox: x86-Virtualisierungslösung auf i386 und amd64 |
xen-tools
|
V:0, I:6 | 666 | Werkzeuge zur Verwaltung von virtuellen Debian-XEN-Servern |
wine
|
V:21, I:101 | 186 | Wine: Windows-API-Implementierung (Standard-Programm-Suite) |
dosbox
|
V:2, I:20 | 2706 | DOSBox: x86-Emulator mit Tandy-/Herc-/CGA-/EGA-/VGA-/SVGA-Grafik, Audioausgabe und DOS |
dosemu
|
V:0, I:4 | 4891 | DOSEMU: der Linux-DOS-Emulator |
vzctl
|
V:1, I:3 | 1060 | OpenVZ Server-Virtualisierungslösung - Steuerungs-Werkzeuge |
vzquota
|
V:1, I:3 | 221 | OpenVZ Server-Virtualisierungslösung - Quota-Werkzeuge |
lxc
|
V:8, I:13 | 1985 | Linux-Container verwenden Werkzeuge im User-Space-Bereich |
Der Wikipedia-Artikel Comparison of platform virtual machines enthält detaillierte Gegenüberstellungen der verschiedenen Plattform-Virtualisierungslösungen.
![]() |
Anmerkung |
---|---|
Einige der hier beschriebenen Funktionalitäten sind nur in
|
![]() |
Anmerkung |
---|---|
Standard-Debian-Kernel unterstützen KVM seit
|
Ein typischer Arbeitsablauf für eine Virtualisierung enthält folgende Schritte:
Erzeugen eines leeren Dateisystems (ein Verzeichnisbaum oder ein Festplatten-Image);
Ein Verzeichnisbaum kann über "mkdir -p /path/to/chroot
"
erzeugt werden.
Eine rohe (leere) Image-Datei kann mittels dd(1) erstellt werden (lesen Sie dazu Abschnitt 9.6.1, „Erzeugung der Festplatten-Abbild-Datei“ und Abschnitt 9.6.5, „Eine leere Abbild-Datei erstellen“).
qemu-img(1) kann verwendet werden, um zu QEMU kompatible Image-Dateien zu erzeugen.
Rohe Image-Dateien und solche im VMDK-Format sind weit verbreitet und können bei verschiedenen Virtualisierungslösungen eingesetzt werden.
Einbinden des Festplatten-Images in das Dateisystem mit mount(8) (optional);
Bei einer rohen Image-Datei verwenden Sie zum Einbinden ein loop device oder Device Mapper-Geräte (Näheres in Abschnitt 9.6.3, „Einbinden der Festplatten-Abbild-Datei“).
Festplatten-Images, die von QEMU unterstützt werden, binden Sie als Network Block Device ein (lesen Sie dazu Abschnitt 9.10.3, „Einbinden des virtuellen Festplatten-Images“).
Bestücken des Zieldateisystems mit den benötigten Systemdaten;
Die Nutzung von Programmen wie debootstrap
und
cdebootstrap
hilft Ihnen bei diesem Schritt (Details dazu
in Abschnitt 9.10.4, „Chroot-System“).
Verwenden Sie die Installationsroutinen anderer Betriebssysteme für das in der Emulation laufende System.
Ausführen eines Programms in der virtualisierten Umgebung;
chroot bietet eine grundlegende virtualisierte Umgebung, die zur Kompilierung von Programmen, Ausführung von Konsolenanwendungen sowie Daemons ausreichende Funktionalitäten hat.
QEMU stellt eine CPU-Emulation quer über verschiedene Plattformen zur Verfügung.
QEMU mit KVM bietet eine vollständige Systememulation mit hardware-unterstützter Virtualisierung.
VirtualBox bietet eine vollständige System-Emulation auf i386 und amd64 mit oder ohne hardware-unterstützter Virtualisierung.
Wenn Sie eine rohe Image-Datei verwenden, finden Sie die nötigen Informationen in Abschnitt 9.6, „Das Festplatten-Abbild“.
Bei anderen Dateiformaten für virtuelle Festplatten-Images können Sie
qemu-nbd(8)
verwenden, um diese über das Network Block
Device-Protokoll zu exportieren; dann können sie mittels dem
nbd
-Kernelmodul in das Dateisystem eingebunden werden
(mount).
qemu-nbd(8) unterstützt Festplattenformate, die auch von QEMU unterstützt werden. QEMU wiederum unterstützt folgende Formate: roh (raw), qcow2, qcow, vmdk, vdi, bochs, cow (User-Mode-Linux Copy-on-Write), parallels, dmg, cloop, vpc, vvfat (virtuelles VFAT) und host_device.
Das Network Block Device
unterstützt Partitionen auf die gleiche Art wie das loop device (Näheres hierzu in Abschnitt 9.6.3, „Einbinden der Festplatten-Abbild-Datei“). Sie können die erste Partition
von "disk.img
" wie folgt einbinden:
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
![]() |
Tipp |
---|---|
Eventuell möchten Sie lediglich die erste Partition von
" |
chroot(8) bietet die grundlegendsten Möglichkeiten, um verschiedene Instanzen einer GNU/Linux-Umgebung simultan und ohne Neustart auf dem gleichen System laufen zu lassen.
![]() |
Achtung |
---|---|
Die hier angegebenen Beispiele gehen davon aus, dass sowohl das Elternsystem wie auch das chroot-System die gleiche CPU-Architektur haben. |
Sie können lernen, wie man chroot(8) einrichtet und verwendet, indem Sie das pbuilder(8)-Programm wie folgt in einer script(1)-Sitzung laufen lassen:
$ sudo mkdir /sid-root $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root
Sie sehen jetzt, wie
debootstrap(8)
oder
cdebootstrap(1)
Systemdaten für eine sid
-Umgebung in
"/sid-root
" ablegt.
![]() |
Tipp |
---|---|
Diese debootstrap(8)- oder cdebootstrap(1)-Befehle werden verwendet, um Debian mit dem Debian-Installer zu installieren. Sie können ebenfalls genutzt werden, um Debian auf einem System zu installieren, ohne dabei eine Debian-Installations-CD zu verwenden, sondern stattdessen den Installationsvorgang von einer anderen, bereits auf dem System laufenden GNU/Linux-Distribution zu starten. |
$ sudo pbuilder --login --no-targz --debug --buildplace /sid-root
Hier sehen Sie nun, wie eine System-Shell in einer
sid
-Umgebung erstellt wird:
Lokale Konfiguration kopieren ("/etc/hosts
",
"/etc/hostname
", "/etc/resolv.conf
");
"/proc
"-Dateisystem einbinden;
"/dev/pts
"-Dateisystem einbinden;
"/usr/sbin/policy-rc.d
" erzeugen; wird immer mit einem
Rückgabewert von 101 beendet;
Ausführen von "chroot /sid-root bin/bash -c 'exec -a -bash
bin/bash'
".
![]() |
Anmerkung |
---|---|
Einige Programme könnten unter chroot Zugriff auf mehr Dateien des
Elternsystems erfordern, als |
![]() |
Anmerkung |
---|---|
Die Datei " |
![]() |
Tipp |
---|---|
Der ursprüngliche Ansatz des spezialisierten chroot-Pakets
|
![]() |
Tipp |
---|---|
Ähnlich dazu gibt Ihnen das |
Ich empfehle Ihnen, QEMU oder VirtualBox auf einem
Debian-Stable
-System zu verwenden, um mittels Virtualisierung mehrere
Arbeitsplatzumgebungen (Desktops) sicher auf einem System zu betreiben. So
ist es möglich, Desktop-Anwendungen aus Debian Unstable
und Testing
ohne die üblichen damit verbundenen Risiken
laufen zu lassen.
Da reines QEMU sehr langsam ist, wird empfohlen, es mit KVM zu beschleunigen, falls das Host-System dies unterstützt.
Ein Image einer virtuellen Festplatte "virtdisk.qcow2
",
das ein Debian-System für QEMU enthält, kann
mittels debian-installer: Kleine
CDs wie folgt erzeugt werden:
$ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso $ qemu-img create -f qcow2 virtdisk.qcow2 5G $ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256 ...
Weitere Tipps finden Sie unter Debian Wiki: QEMU.
VirtualBox enthält grafische, Qt-basierte Werkzeuge und ist ziemlich intuitiv. Seine Benutzeroberfläche und die Befehlszeilenwerkzeuge sind im VirtualBox User Manual (html) bzw. VirtualBox User Manual (PDF) beschrieben.
![]() |
Tipp |
---|---|
Andere GNU/Linux-Distributionen wie Ubuntu und Fedora mittels Virtualisierung laufen zu lassen ist eine tolle Möglichkeit, Tipps zur Konfiguration zu bekommen. Auch andere proprietäre Betriebssysteme können über diese GNU/Linux-Virtualisierung bequem zum Laufen gebracht werden. |