Inhaltsverzeichnis
Hier beschreibe ich einige grundlegende Tipps zur Konfiguration und Verwaltung des Systems, überwiegend für die Konsole.
There are some utility programs to help your console activities.
Tabelle 9.1. List of programs to support console activities
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
mc
|
V:56, I:228 | 1508 | See Abschnitt 1.3, „Midnight Commander (MC)“ |
bsdutils
|
V:666, I:999 | 402 | script command to make typescript of terminal session |
screen
|
V:105, I:270 | 1014 | Terminal-Multiplexer mit VT100-/ANSI-Terminal-Emulation |
tmux
|
V:35, I:140 | 1045 | Terminal-Multiplexer-Alternative (verwenden Sie stattdessen "Strg-B") |
fzf
|
V:3, I:8 | 2637 | fuzzy text finder |
fzy
|
V:0, I:0 | 54 | fuzzy text finder |
rlwrap
|
V:1, I:19 | 297 | readline feature command line wrapper |
ledit
|
V:0, I:14 | 306 | readline feature command line wrapper |
rlfe
|
V:0, I:0 | 49 | readline feature command line wrapper |
ripgrep
|
V:3, I:11 | 4298 | fast recursive string search in the source code tree with automatic filtering |
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
Machen Sie irgendetwas … und drücken Sie Strg-D
, um
script
zu beenden.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
There are alternative methods to record the shell activities:
Use tee
(usable during the boot process in the
initramfs):
$ sh -i 2>&1 | tee typescript
Use gnome-terminal
with the extend line buffer for
scrollback.
Use screen
with "^A H
" (see Abschnitt 9.1.2, „Das Programm screen“) to perform recording of console.
Use vim
with ":terminal
" to enter the
terminal mode. Use "Ctrl-W N
" to exit from terminal mode
to normal mode. Use ":w typescript
" to write the buffer
to a file.
Use emacs
with "M-x shell
",
"M-x eshell
", or "M-x term
" to enter
recording console. Use "C-x C-w
" to write the buffer to
a file.
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.
See tmux
(1) for functionalities of the alternative
command.
In Abschnitt 1.4.2, „Anpassen der bash“, 2 tips to allow quick navigation
around directories are described: $CDPATH
and
mc
.
If you use fuzzy text filter program, you can do without typing the exact
path. For fzf
, include following in
~/.bashrc
.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi FZF_COMPLETION_PATH=/usr/share/doc/fzf/examples/completion.bash if [ -f $FZF_COMPLETION_PATH ]; then . $FZF_COMPLETION_PATH fi
For example:
You can jump to a very deep subdirectory with minimal efforts. You first
type "cd **
" and press Tab
. Then you
will be prompted with candidate paths. Typing in partial path strings,
e.g., s/d/b foo
, will narrow down candidate paths. You
select the path to be used by cd
with cursor and return
keys.
You can select a command from the command history more efficiently with
minimal efforts. You press Ctrl-R
at the command
prompt. Then you will be prompted with candidate commands. Typing in
partial command strings, e.g., vim d
, will narrow down
candidates. You select the one to be used with cursor and return keys.
Some commands such as /usr/bin/dash
which lacks command
line history editing capability can add such functionality transparently by
running under rlwrap
or its equivalents.
$ rlwrap dash -i
This provides convenient platform to test subtle points for
dash
with friendly bash
-like
environment.
After you learn basics of vim
(1) through Abschnitt 1.4.8, „Using vim“, please read Bram Moolenaar's "Seven habits of effective text
editing (2000)" to understand how vim
should be
used.
![]() |
Achtung |
---|---|
Don't try to change the default key bindings without very good reasons. |
The behavior of vim
can be changed significantly by
enabling its internal features through the Ex
-mode
commands such as "set ...
" to set vim options.
These Ex
-mode commands can be included in user's vimrc
file, traditional "~/.vimrc
" or git-friendly
"~/.vim/vimrc
". Here is a very simple example
[2]:
colorscheme murphy " from /usr/share/vim/vim??/colors/*.vim filetype plugin indent on " filetype aware behavior syntax enable " Syntax highlight "set spelllang=en_us " Spell check language as en_us "set spell " Enable spell check set autoindent " Copy indent from current line set smartindent " More than autoindent (Drop/Pop after {/}) set nosmarttab " <Tab>-key always inserts blanks set backspace=indent,eol,start " Back space through everything set laststatus=2 " Always show status line set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V
Simple customization to enable secure-modelines and classical IDE can be enabled by installing vim-scripts package and appending the following to user's vimrc file.
packadd! secure-modelines packadd! winmanager let mapleader = ' ' " Toggle paste mode with <SPACE>p set pastetoggle=<leader>p " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR> " Use safer keys <SPACE>? for moving to another window nnoremap <leader>h <C-W>h nnoremap <leader>j <C-W>j nnoremap <leader>k <C-W>k nnoremap <leader>l <C-W>l
The new native Vim package system works nicely with "git
"
and "git submodule
". One such example configuration can
be found at my git repository:
dot-vim. This does essentially:
By using "git
" and "git submodule
",
latest external packages, such as
"name
", are placed into
~/.vim/pack/*/opt/name
and similar.
By adding :packadd! name
line to
user's vimrc file, these packages are placed on
runtimepath
.
Vim loads these packages on runtimepath
during its
initialization.
At the end of its initialization, tags for the installed documents are
updated with "helptags ALL
".
For more, please start vim
with "vim
--startuptime vimstart.log
" to check actual execution sequence and
time spent for each step.
Interesting external plugin packages can be found:
Vim - the ubiquitous text editor -- The official upstream site of Vim and vim scripts
VimAwsome -- The listing of Vim plugins
vim-scripts -- Debian package: a collection of vim scripts
It is quite confusing to see too many ways[3] to manage and load these external packages to
vim
. Checking the original information is the best cure.
Tabelle 9.3. Information on the initialization of vim
key strokes | information |
---|---|
:help package |
explanation on the vim package mechanism |
:help runtimepath |
explanation on the runtimepath mechanism |
:version |
internal states including candidates for the vimrc file |
:echo $VIM |
the environment variable "$VIM " used to locate the vimrc
file |
:set runtimepath? |
list of directories which will be searched for all runtime support files |
:echo $VIMRUNTIME |
the environment variable "$VIMRUNTIME " used to locate
various system provided runtime support files |
Many traditional programs record their activities in the text file format
under the "/var/log/
" directory.
logrotate
(8) is used to simplify the administration of
log files on a system which generates a lot of log files.
Many new programs record their activities in the binary file format using
systemd-journald
(8) Journal service under the
"/var/log/journal
" directory.
You can log data to the systemd-journald
(8) Journal from
a shell script by using the systemd-cat
(1) command.
Lesen Sie dazu Abschnitt 3.4, „Die Systemmeldungen“ und Abschnitt 3.3, „Die Kernel-Meldungen“.
Hier eine Liste erwähnenswerter Analyseprogramme für Logdateien
("~Gsecurity::log-analyzer
" in
aptitude
(8)):
Tabelle 9.4. Liste von System-Log-Analysatoren
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
logwatch
|
V:14, I:17 | 2276 | Log-Analysator mit netter Ausgabe, geschrieben in Perl |
fail2ban
|
V:109, I:122 | 2092 | IP-Adressen sperren, die vielfache Authentifizierungsfehler verursachen |
analog
|
V:3, I:104 | 3534 | Webserver-Log-Analysator |
awstats
|
V:8, I:13 | 6910 | leistungsfähiger und mit vielen Funktionen ausgestatteter Webserver-Log-Analysator |
sarg
|
V:2, I:2 | 843 | Analysereportgenerator für Squid |
pflogsumm
|
V:2, I:4 | 111 | Programm zur Zusammenfassung von Postfix-Logeinträgen |
syslog-summary
|
V:0, I:1 | 30 | Programm zum Zusammenfassen des Inhalts einer Syslog-Datei |
fwlogwatch
|
V:0, I:0 | 478 | Firewall-Log-Analysator |
squidview
|
V:0, I:1 | 189 | Programm zum Beobachten und Analysieren von Squid-access.log-Dateien |
swatch
|
V:0, I:0 | 101 | Logdatei-Betrachter mit Unterstützung für reguläre Ausdrücke, Hervorhebung und Einsprungstellen |
crm114
|
V:0, I:0 | 1119 | Programm zur flexiblen Einordnung von E-Mails und anderen Daten (CRM114) |
icmpinfo
|
V:0, I:0 | 44 | 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. |
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 |
The default display format of time and date by the "ls
-l
" command depends on the locale (see Abschnitt 1.2.6, „Zeitstempel“ for
value). The "$LANG
" variable is referred first and it
can be overridden by the "$LC_TIME
" or
"$LC_ALL
" exported environment variables.
The actual default display format for each locale depends on the version of
the standard C library (the libc6
package) used. I.e.,
different releases of Debian had different defaults. For iso-formats, see
ISO 8601.
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.5. Display examples of time and date for the "ls -l
" command
with the time style value
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 |
---|---|
You can eliminate typing long option on commandline using command alias (see Abschnitt 1.5.9, „Befehls-Alias“): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
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.6. Liste von Werkzeugen zur Bildbearbeitung
Paket | Popcon | Größe | screen | Befehl |
---|---|---|---|---|
gnome-screenshot
|
V:30, I:282 | 1167 | Wayland | screenshot application for GNOME |
flameshot
|
V:6, I:13 | 1810 | Wayland | screenshot application on steroid |
gimp
|
V:63, I:311 | 19729 | Wayland + X | screenshot in GUI menu |
x11-apps
|
V:29, I:468 | 2437 | X | xwd (1) |
imagemagick
|
I:363 | 220 | X | import (1) |
scrot
|
V:7, I:76 | 126 | X | scrot (1) |
There are specialized tools to record changes in configuration files with help of DVCS and to make system snapshots on Btrfs.
Tabelle 9.7. List of packages which can record configuration history
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
etckeeper
|
V:27, I:31 | 176 | Konfigurationsdateien und deren Metadaten mit Git (Standard), Mercurial oder Bazaar (neu) abspeichern |
timeshift
|
V:2, I:5 | 3142 | system restore utility using rsync or BTRFS snapshots |
snapper
|
V:2, I:3 | 2170 | Linux filesystem snapshot management tool |
You may also think about local script Abschnitt 10.2.3, „Personal backup“ approach.
Programmaktivitäten können mittels spezieller Werkzeuge überwacht und kontrolliert werden:
Tabelle 9.8. Liste von Werkzeugen zur Überwachung und Steuerung von Programmaktivitäten
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
coreutils
|
V:895, I:999 | 17372 | nice (1): ein Programm mit veränderter Ablaufpriorität
ausführen |
bsdutils
|
V:666, I:999 | 402 | renice (1): die Ablaufpriorität eines laufenden Prozess
verändern |
procps
|
V:740, I:999 | 1648 | Werkzeuge für das "/proc "-Dateisystem:
ps (1), top (1),
kill (1), watch (1), … |
psmisc
|
V:408, I:827 | 793 | Werkzeuge für das "/proc "-Dateisystem:
killall (1), fuser (1),
peekfd (1), pstree (1) |
time
|
V:12, I:226 | 129 | time (1): ein Programm ausführen und die Zeit ausgeben,
während der Ressourcen verbraucht wurden |
sysstat
|
V:160, I:183 | 1923 | sar (1), iostat (1),
mpstat (1), …: Werkzeuge zur Messung der
System-Performance unter Linux |
isag
|
V:0, I:3 | 117 | Interaktive grafische Darstellung der Systemaktivität, basierend auf sysstat |
lsof
|
V:386, I:946 | 451 | lsof (8): mit der Option "-p "
diejenigen Dateien auflisten, die von einem gerade laufenden Prozess
geöffnet wurden |
strace
|
V:15, I:143 | 2367 | strace (1): Systemaufrufe und -signale verfolgen |
ltrace
|
V:1, I:20 | 363 | ltrace (1): Bibliotheksaufrufe verfolgen |
xtrace
|
V:0, I:0 | 353 | xtrace (1): Kommunikation zwischen X11-Client und -Server
verfolgen |
powertop
|
V:11, I:211 | 680 | powertop (1): Informationen über verbrauchte
Systemleistung |
cron
|
V:799, I:996 | 263 | Prozesse laut dem Ablaufplan des cron (8)-Daemons im
Hintergrund ausführen |
anacron
|
V:408, I:481 | 107 | cron-ähnlicher Programmablauf-Planer für Systeme, die nicht 24 Stunden am Tag laufen |
at
|
V:140, I:252 | 161 | 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 some_command >/dev/null real 0m0.035s # time on wall clock (elapsed real time) user 0m0.000s # time in user mode sys 0m0.020s # time in kernel mode
Der nice-Wert wird verwendet, um die Ablaufpriorität von Prozessen zu steuern.
Tabelle 9.9. 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 # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
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.10. 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
![]() |
Tipp |
---|---|
Use strace-graph script found in /usr/share/doc/strace/examples/ to make a nice tree view |
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“.
For the graphical user interface
(GUI) compliant to the freedesktop.org standards, the
*.desktop
files in the
/usr/share/applications/
directory provide necessary
attributes for the GUI menu display of each program. Each package which is
compliant to Freedesktop.org's xdg menu system installs its menu data
provided by "*.desktop" under "/usr/share/applications/". Modern desktop
environments which are compliant to Freedesktop.org standard use these data
to generate their menu using the xdg-utils package. See
"/usr/share/doc/xdg-utils/README".
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 GenericName=Web Browser Comment=Access the Internet Comment[fr]=Explorer le Web 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 |
---|---|
|
![]() |
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.11. Liste von häufig verwendeten Signalen für den kill-Befehl
Signalwert | Signalname | Aktion | note |
---|---|---|---|
0 | --- | no signal is sent (see kill (2)) |
check if process is running |
1 | SIGHUP | terminate the process | disconnected terminal (signal hang up) |
2 | SIGINT | terminate the process | interrupt from keyboard (CTRL-C ) |
3 | SIGQUIT | terminate the process and dump core | quit from keyboard (CTRL-\ ) |
9 | SIGKILL | terminate the process | unblockable kill signal |
15 | SIGTERM | terminate the process | blockable termination signal |
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:
# use /bin/sh to run commands, no matter what /etc/passwd says SHELL=/bin/sh # mail any output to paul, no matter whose crontab this is MAILTO=paul # Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed) # run at 00:05, every day 5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1 # run at 14:15 on the first of every month -- output mailed to paul 15 14 1 * * $HOME/bin/monthly # run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc: 0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids?%.%% 23 */2 1 2 * echo "run 23 minutes after 0am, 2am, 4am ..., on Feb 1" 5 4 * * sun echo "run at 04:05 every Sunday" # run at 03:40 on the first Monday of each month 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
" |
Systemd has low level capability to schedule
programs to run without cron
daemon. For example,
/lib/systemd/system/apt-daily.timer
and
/lib/systemd/system/apt-daily.service
set up daily apt
download activities. See systemd.timer
(5) .
Pressing Alt-SysRq (PrtScr) followed by one keys does the magic of rescuing control of the system.
Tabelle 9.12. List of notable SAK command keys
Taste nach Alt-SysRq | Beschreibung der Aktion |
---|---|
k |
kill all processes on the current virtual console (SAK) |
s |
alle eingebundenen Dateisysteme synchronisieren (Dateisystempuffer auf Platte schreiben), um Datenverluste zu vermeiden |
u |
alle eingebundenen Dateisysteme neu einbinden mit Nur-Lese-Berechtigung (umount) |
r |
Tastatur aus dem Roh-Modus (raw) wiederherstellen nach X-Abstürzen |
See more on Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks
![]() |
Tipp |
---|---|
Von einem SSH-Terminal u.ä. können Sie die Alt-SysRq-Funktionalität nutzen,
indem Sie nach " |
The current (2021) Debian amd64 Linux kernel has
/proc/sys/kernel/sysrq=438=0b110110110
:
2 = 0x2 - enable control of console logging level (ON)
4 = 0x4 - enable control of keyboard (SAK, unraw) (ON)
8 = 0x8 - enable debugging dumps of processes etc. (OFF)
16 = 0x10 - enable sync command (ON)
32 = 0x20 - enable remount read-only (ON)
64 = 0x40 - enable signaling of processes (term, kill, oom-kill) (OFF)
128 = 0x80 - allow reboot/poweroff (ON)
256 = 0x100 - allow nicing of all RT tasks (ON)
Sie können wie folgt überprüfen, wer derzeit im System aktiv ist:
who
(1) shows who is logged on.
w
(1) shows who is logged on and what they are doing.
last
(1) shows listing of last logged in user.
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 "We are shutting down in 1 hour" | 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.13. Liste von Werkzeugen zur Hardware-Identifikation
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
pciutils
|
V:210, I:991 | 196 | Hilfsprogramme für PCI unter Linux: lspci (8) |
usbutils
|
V:73, I:862 | 325 | Hilfsprogramme für USB unter Linux: lsusb (8) |
nvme-cli
|
V:4, I:12 | 779 | NVMe utilities for Linux: nvme (1) |
pcmciautils
|
V:10, I:16 | 97 | Hilfsprogramme für PCMCIA unter Linux: pccardctl (8) |
scsitools
|
V:0, I:3 | 375 | Sammlung von Werkzeugen für das SCSI-Hardware-Management:
lsscsi (8) |
procinfo
|
V:0, I:12 | 136 | Systeminformationen, gewonnen aus "/proc ":
lsdev (8) |
lshw
|
V:12, I:94 | 906 | Informationen über die Hardware-Konfiguration: lshw (1) |
discover
|
V:37, I:951 | 97 | 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.14. Liste von Werkzeugen zur Hardware-Konfiguration
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
console-setup
|
V:102, I:963 | 420 | Werkzeuge für Schriftarten und Tastaturbelegungen auf der Linux-Konsole |
x11-xserver-utils
|
V:294, I:529 | 570 | X-Server-Hilfsprogamme: xset (1),
xmodmap (1) |
acpid
|
V:122, I:255 | 169 | Daemon zur Verwaltung von Ereignissen der Advanced-Configuration-and-Power-Interface-(ACPI-)Schnittstelle |
acpi
|
V:14, I:240 | 45 | Werkzeug zur Anzeige von Informationen über ACPI-Geräte |
sleepd
|
V:0, I:0 | 86 | Daemon, mit dem man einen Laptop bei Inaktivität in Ruhemodus schicken kann |
hdparm
|
V:336, I:603 | 256 | Optimierung des Festplattenzugriffs (lesen Sie dazu Abschnitt 9.6.9, „Optimierung der Festplatte“) |
smartmontools
|
V:164, I:224 | 2117 | Speichersysteme mittels S.M.A.R.T. kontrollieren und überwachen |
setserial
|
V:4, I:8 | 117 | Werkzeugsammlung zur Verwaltung von seriellen Ports |
memtest86+
|
V:1, I:26 | 2391 | Werkzeugsammlung zur Speicher-Hardware-Verwaltung |
scsitools
|
V:0, I:3 | 375 | Werkzeugsammlung zur SCSI-Hardware-Verwaltung |
setcd
|
V:0, I:1 | 35 | Optimierung des Zugriffs auf CD-Laufwerke |
big-cursor
|
I:1 | 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).
If the hardware time is set to UTC, change the setting to
"UTC=yes
" in the "/etc/default/rcS
".
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 |
---|---|
|
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).
Application softwares may be configured not only to access sound devices directly but also to access them via some standardized sound server system. Currently, PulseAudio, JACK, and PipeWire are used as sound server system. See Debian wiki page on Sound for the latest situation.
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.
![]() |
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. |
Tabelle 9.15. Liste von Audio-Paketen
Verwenden Sie folgende Befehle, um den Bildschirmschoner zu deaktivieren:
Tabelle 9.16. 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.17. 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.18. Liste von Werkzeugen für eine Systemsicherheits- und Integritätsüberprüfung
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
logcheck
|
V:7, I:9 | 102 | Daemon, um Anomalien in den System-Logdateien per Mail an den Administrator zu melden |
debsums
|
V:5, I:41 | 108 | Hilfsprogramm, um installierte Paketdateien anhand von MD5-Prüfsummen zu verifizieren |
chkrootkit
|
V:5, I:22 | 956 | rootkit-Erkennungsprogramm |
clamav
|
V:11, I:53 | 775 | Antiviren-Programm für Unix - Befehlszeilenschnittstelle |
tiger
|
V:2, I:2 | 7822 | Sicherheitslücken im System melden |
tripwire
|
V:2, I:3 | 11701 | Integritätsüberprüfung für Dateien und Verzeichnisse |
john
|
V:2, I:11 | 460 | Programm zum aktiven Knacken von Passwörtern |
aide
|
V:1, I:1 | 2049 | Fortschrittliche Intrusion-Detection-Umgebung - statische Binärdatei |
integrit
|
V:0, I:0 | 329 | Dateiintegritäts-Verifizierungsprogramm |
crack
|
V:0, I:1 | 152 | 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.
You may need to umount
(8) some devices manually from the
command line before operating on them if they are automatically mounted by
the GUI desktop system.
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.
Older PCs use the classic Master Boot Record (MBR) scheme to hold disk partitioning data in the first sector, i.e., LBA sector 0 (512 bytes).
Recent PCs with Unified Extensible Firmware Interface (UEFI), including Intel-based Macs, use GUID Partition Table (GPT) scheme to hold disk partitioning data not in the first sector.
Obwohl fdisk
(8) lange Zeit das Standardwerkzeug zur
Laufwerkspartitionierung war, ist parted
(8) dabei, ihm
den Rang abzulaufen.
Tabelle 9.19. Liste von Paketen zum Partitions-Management
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
util-linux
|
V:886, I:999 | 4843 | verschiedene System-Werkzeuge inklusive fdisk (8) und
cfdisk (8) |
parted
|
V:370, I:561 | 307 | GNU Parted - Programm zum Anlegen / Ändern von Partitionen |
gparted
|
V:16, I:121 | 2063 | GNOME Partitionseditor, basierend auf libparted |
gdisk
|
V:323, I:517 | 874 | partition editor for the GPT/MBR hybrid disk |
kpartx
|
V:19, I:32 | 88 | Programm zur Erzeugung von Gerätezuordnungen (device mappings) für Partitionen |
![]() |
Achtung |
---|---|
Obwohl |
![]() |
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.8.6, „Leeren von Dateiinhalten“)
und " |
Although reconfiguration of your partition or activation order of removable storage media may yield different names for partitions, you can access them consistently. This is also helpful if you have multiple disks and your BIOS/UEFI doesn't give them consistent device names.
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 You can also probe it and other information with " |
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.20. Liste von Paketen für das Dateisystem-Management
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
e2fsprogs
|
V:612, I:999 | 1529 | Hilfsprogramme für ext2/ext3/ext4-Dateisysteme |
btrfs-progs
|
V:37, I:67 | 4183 | Hilfsprogramme für das Btrfs-Dateisystem |
reiserfsprogs
|
V:8, I:28 | 1132 | Hilfsprogramme für das Reiserfs-Dateisystem |
zfsutils-linux
|
V:21, I:24 | 1499 | utilities for the OpenZFS filesystem |
dosfstools
|
V:137, I:523 | 315 | Hilfsprogramme für das FAT-Dateisystem (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:1, I:25 | 171 | utilities for the exFAT filesystem maintained by Samsung. |
exfat-fuse
|
V:21, I:425 | 71 | read/write exFAT filesystem (Microsoft) driver for FUSE. |
exfat-utils
|
V:18, I:421 | 231 | utilities for the exFAT filesystem maintained by the exfat-fuse author. |
xfsprogs
|
V:19, I:99 | 3308 | Hilfsprogramme für das XFS-Dateisystem (SGI: IRIX) |
ntfs-3g
|
V:114, I:508 | 1482 | read/write NTFS filesystem (Microsoft: Windows NT, …) driver for FUSE. |
jfsutils
|
V:1, I:11 | 1577 | Hilfsprogramme für das JFS-Dateisystem (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:3 | 1373 | Hilfsprogramme für das Reiser4-Dateisystem |
hfsprogs
|
V:0, I:6 | 389 | Hilfsprogramme für HFS- und HFS Plus-Dateisysteme (Apple: Mac OS) |
zerofree
|
V:3, I:107 | 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. Btrfs status can be found at Debian wiki on btrfs and kernel.org wiki on btrfs. It is expected to be the next default filesystem after the ext4 filesystem. Einige Werkzeuge erlauben den Zugriff auf Dateisysteme ohne entsprechende Unterstützung im Linux-Kernel (lesen Sie dazu Abschnitt 9.8.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 In " |
Die grundlegende statische Dateisystem-Konfiguration wird in
"/etc/fstab
" festgelegt. Zum Beispiel:
«file system» «mount point» «type» «options» «dump» «pass» proc /proc proc defaults 0 0 UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 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.6.3, „Zugriff auf Partitionen über die UUID-Kennung“) kann statt der normalen Namen
für blockorientierte Geräte wie " |
Since Linux 2.6.30, the kernel defaults to the behavior provided by
"relatime
" option.
See fstab
(5) and mount
(8).
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
|
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.
Solid state drive (SSD) is auto detected now.
Reduce unnecessary disk accesses to prevent disk wear out by mounting
"tmpfs
" on volatile data path in
/etc/fstab
.
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
".
restart the smartd
(8) daemon by "sudo systemctl
restart smartmontools
".
![]() |
Tipp |
---|---|
Die Einstellungen des |
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 work-dir old-dir $ sudo mkfs.ext4 /dev/sdx $ sudo mount -t ext4 /dev/sdx work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
![]() |
Tipp |
---|---|
Alternativ können Sie eine leere Festplatten-Image-Datei (lesen Sie dazu Abschnitt 9.7.5, „Eine leere Abbild-Datei erstellen“) als loop-device einbinden (Näheres dazu in Abschnitt 9.7.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 /path/to/emp-dir work-dir
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=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
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 work-dir old-dir $ sudo mkdir -p /path/to/emp-dir $ sudo ln -sf /path/to/emp-dir work-dir $ sudo cp -a old-dir/* work-dir $ sudo rm -rf old-dir
![]() |
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.6.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 # verify kernel capability max_part:Maximum number of partitions per loop device max_loop:Maximum number of loop devices # losetup -a # verify nothing using the loop device # 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
Instead of using dd
(1), specialized
fallocate
(8) may be used here.
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.7.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 source_directory
Ä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 source_directory
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 |
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.21. Liste von Paketen zum Betrachten und Bearbeiten von Binärdaten
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
coreutils
|
V:895, I:999 | 17372 | grundlegendes Paket, das od (1) für die Ausgabe von
Dateien (HEX, ASCII, OCTAL, …) enthält |
bsdmainutils
|
V:36, I:748 | 27 | Hilfspaket, das hd (1) für die Ausgabe von Dateien (HEX,
ASCII, OCTAL, …) enthält |
hexedit
|
V:1, I:11 | 73 | Editor und Betrachter für Binärdateien (HEX, ASCII) |
bless
|
V:0, I:3 | 1028 | voll ausgestatteter Hexadezimal-Editor (GNOME) |
okteta
|
V:1, I:13 | 1505 | 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:0 | 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.23. Liste von Werkzeugen, um Redundanz für Dateien hinzuzufügen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
par2
|
V:11, I:51 | 271 | Parity Archive Volume Set, für die Dateiüberprüfung und -reparatur |
dvdisaster
|
V:0, I:2 | 1742 | Schutz vor Datenverlust/Kratzern/Alterung von CD-/DVD-Medien |
dvbackup
|
I:0 | 413 | Backup-Werkzeug, das MiniDV-Camcorder verwendet (enthält
rsbep (1)) |
Hier einige Programme für Datenwiederherstellung und forensische Analysen:
Tabelle 9.24. Liste von Paketen für Datenwiederherstellung und forensische Analysen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
testdisk
|
V:3, I:34 | 1430 | Hilfsprogramm zum Scannen von Partitionen und Wiederherstellen von Daten |
magicrescue
|
V:0, I:3 | 259 | Hilfsprogramm zur Dateiwiederherstellung mittels Suche nach "magischen Bytes" |
scalpel
|
V:0, I:4 | 87 | ein sparsamer, sehr leistungsfähiger Datei-Carver |
myrescue
|
V:0, I:3 | 83 | Daten von beschädigten Festplatten retten |
extundelete
|
V:0, I:10 | 147 | Hilfsprogramm, um gelöschte Dateien von ext3-/ext4-Dateisystemen wiederherzustellen |
ext4magic
|
V:0, I:4 | 233 | Hilfsprogramm, um gelöschte Dateien von ext3-/ext4-Dateisystemen wiederherzustellen |
ext3grep
|
V:0, I:3 | 293 | Werkzeug, das bei der Wiederherstellung von gelöschten Dateien auf ext3-Dateisystemen hilft |
scrounge-ntfs
|
V:0, I:3 | 50 | Datenwiederherstellungsprogramm für NTFS-Dateisysteme |
gzrt
|
V:0, I:0 | 33 | Werkzeugsatz für die Wiederherstellung von gzip-Daten |
sleuthkit
|
V:2, I:25 | 1602 | Werkzeuge für forensische Analysen (SleuthKit) |
autopsy
|
V:0, I:1 | 1027 | grafische Oberfläche für SleuthKit |
foremost
|
V:0, I:6 | 101 | forensiche Anwendung zur Datenwiederherstellung |
guymager
|
V:0, I:1 | 1035 | forensisches Imaging-Werkzeug, basierend auf Qt |
dcfldd
|
V:0, I:4 | 106 | 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 large_file $ cat x* >large_file
![]() |
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:
$ :>file_to_be_cleared
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
|
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
You may alternatively use badblocks
(8) with -t
random
option.
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 /path/to/mount/point -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.6.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 facilitates automatic data encryption via native Linux kernel modules with minimal user efforts using device-mapper.
Tabelle 9.25. Liste von Werkzeugen zur Datenverschlüsselung
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
cryptsetup
|
V:17, I:77 | 446 | Werkzeug zur Verschlüsselung von blockorientierten Geräten (dm-crypt / LUKS) |
cryptmount
|
V:3, I:4 | 228 | Werkzeuge zur Verschlüsselung von blockorientierten Geräten (dm-crypt / LUKS) mit Fokus auf das Einbinden/Trennen durch normale Benutzer |
fscrypt
|
V:0, I:1 | 4316 | utilities for Linux filesystem encryption (fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 4411 | PAM module for Linux filesystem encryption (fscrypt) |
![]() |
Achtung |
---|---|
Data encryption costs CPU time etc. Encrypted data becomes inaccessible if its password is lost. Please weigh its benefits and costs. |
![]() |
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:
# fdisk /dev/sdx ... "n" "p" "1" "return" "return" "w" # cryptsetup luksFormat /dev/sdx1 ... # cryptsetup open /dev/sdx1 secret ... # ls -l /dev/mapper/ total 0 crw-rw---- 1 root root 10, 60 2021-10-04 18:44 control lrwxrwxrwx 1 root root 7 2021-10-04 23:55 secret -> ../dm-0 # mkfs.vfat /dev/mapper/secret ... # cryptsetup close secret
Then, it can be mounted just like normal one on to
"/media/username/disk_label
", except
for asking password (see Abschnitt 10.1.7, „Wechseldatenträger“) under
modern desktop environment using the udisks2
package.
The difference is that every data written to it is encrypted. The password
entry may be automated using keyring (see Abschnitt 10.3.6, „Password keyring“).
You may alternatively format media in different filesystem, e.g., ext4 with
"mkfs.ext4 /dev/mapper/sdx1
". If btrfs is used instead,
the udisks2-btrfs
package needs to be installed. For
these filesystems, the file ownership and permissions may need to be
configured.
For example, an encrypted disk partition created with dm-crypt/LUKS on
"/dev/sdc5
" by Debian Installer can be mounted onto
"/mnt
" as follows:
$ 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
Debian stellt für unterstützte Architekturen modulare Linux-Kernel als Pakete bereit.
If you are reading this documentation, you probably don't need to compile Linux kernel by yourself.
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.7.3, „Einbinden der Festplatten-Abbild-Datei“).
See "The Linux kernel user’s and administrator’s guide » The kernel’s command-line parameters" for the detail.
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 |
---|---|
For compiling some kernel-specific programs such as the kernel modules from
the external source and the automounter daemon ( |
Debian hat seine eigene Methode zur Kompilierung des Kernels und zugehöriger Module.
Tabelle 9.26. Liste von Schlüsselpaketen für die Neukompilierung des Kernels auf einem Debian-System
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
build-essential
|
I:493 | 20 | Pakete, die zum Bauen von Debian-Paketen essentiell nötig sind:
make , gcc , … |
bzip2
|
V:162, I:974 | 122 | Werkzeuge zum Komprimieren und Dekomprimieren von bz2-Dateien |
libncurses5-dev
|
I:105 | 6 | Entwickler-Bibliothek und Dokumentation für ncurses |
git
|
V:319, I:499 | 37497 | git: vom Linux-Kernel verwendetes verteiltes Versionsverwaltungssystem |
fakeroot
|
V:32, I:510 | 228 | bietet eine fakeroot-Umgebung, um Pakete als nicht-root-Benutzer zu bauen |
initramfs-tools
|
V:351, I:990 | 112 | Werkzeug zur Erzeugung eines initramfs (Debian-spezifisch) |
dkms
|
V:41, I:200 | 293 | Dynamic Kernel Module Support (DKMS) (generisch) |
module-assistant
|
V:1, I:29 | 391 | helper tool to make module package (Debian specific) |
devscripts
|
V:7, I:51 | 2672 | 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- 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
The hardware driver is the code running on the main CPUs of the target
system. Most hardware drivers are available as free software now and are
included in the normal Debian kernel packages in the main
area.
The firmware is the code or data loaded on the device attach to the target system (e.g., CPU microcode, rendering code running on GPU, or FPGA / CPLD data, …). Some firmware packages are available as free software but many firmware packages are not available as free software since they contain sourceless binary data. Installing these firmware data is essential for the device to function as expected.
The firmware data packages containing data loaded to the volatile memory on the target device.
firmware-linux-free (main
)
firmware-linux-nonfree (non-free
)
firmware-linux-* (non-free
)
*-firmware (non-free
)
intel-microcode (non-free
)
amd64-microcode (non-free
)
The firmware update program packages which update data on the non-volatile memory on the target device.
fwupd (main
): Firmware
update daemon which downloads firmware data from Linux Vendor Firmware Service.
gnome-firmware (main
): GTK front end for fwupd
plasma-discover-backend-fwupd (main
): Qt front end for
fwupd
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“.
Please also note that the firmware data downloaded by fwupd from Linux Vendor Firmware Service and
loaded to the running Linux kernel may be non-free
.
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. |
There are several virtualization and emulation tool platforms.
Complete hardware emulation packages such as ones installed by the games-emulator metapackage
Mostly CPU level emulation with some I/O device emulations such as QEMU
Mostly CPU level virtualization with some I/O device emulations such as Kernel-based Virtual Machine (KVM)
OS level container virtualization with the kernel level support such as LXC (Linux Containers), Docker, ...
OS level filesystem access virtualization with the system library call override on the file path such as chroot
OS level filesystem access virtualization with the system library call override on the file ownership such as fakeroot
OS API emulation such as Wine
Interpreter level virtualization with its executable selection and run-time library overrides such as virtualenv and venv for Python
The container virtualization uses Abschnitt 4.7.4, „Linux security features“ and it is the backend technology of Abschnitt 7.6, „Sandbox“.
Here are some packages to help you to setup the virtualized system.
Tabelle 9.27. Liste von Virtualisierungswerkzeugen
Paket | Popcon | Größe | Beschreibung |
---|---|---|---|
schroot
|
V:7, I:9 | 2708 | spezialisiertes Werkzeug, um Debian-Binärpakete in chroot-Umgebungen auszuführen |
sbuild
|
V:1, I:4 | 271 | Werkzeug, um Debian-Binärpakete aus Debian-Quellen zu bauen |
debootstrap
|
V:5, I:61 | 308 | Programm zum Bootstrap eines grundlegenden Debian-Systems (geschrieben in sh) |
cdebootstrap
|
V:0, I:2 | 116 | Programm zum Bootstrap eines Debian-Systems (geschrieben in C) |
virt-manager
|
V:11, I:42 | 2298 | Virtual Machine Manager: Arbeitsplatz-Anwendung zur Verwaltung von virtuellen Maschinen |
libvirt-clients
|
V:43, I:62 | 1185 | Programme für die libvirt-Bibliothek |
games-emulator
|
I:0 | 26 | games-emulator: Debian's emulators for games |
bochs
|
V:0, I:1 | 6999 | Bochs: IA-32 PC-Emulator |
qemu
|
I:29 | 100 | QEMU: schneller generischer Prozessor-Emulator |
qemu-system
|
I:22 | 101 | QEMU: Binärdateien zur Emulation eines vollständigen Systems |
qemu-user
|
V:0, I:10 | 106589 | QEMU: Binärdateien für User-Mode-Emulation |
qemu-utils
|
V:12, I:105 | 6471 | QEMU: Hilfsprogramme |
qemu-kvm
|
V:5, I:36 | 107 | KVM: vollständige Virtualisierungslösung auf x86-Hardware mit hardware-unterstützter Virtualisierung |
virtualbox
|
V:11, I:14 | 106967 | VirtualBox: x86-Virtualisierungslösung auf i386 und amd64 |
xen-tools
|
V:0, I:3 | 727 | Werkzeuge zur Verwaltung von virtuellen Debian-XEN-Servern |
wine
|
V:17, I:73 | 191 | Wine: Windows-API-Implementierung (Standard-Programm-Suite) |
dosbox
|
V:2, I:17 | 2718 | DOSBox: x86-Emulator mit Tandy-/Herc-/CGA-/EGA-/VGA-/SVGA-Grafik, Audioausgabe und DOS |
lxc
|
V:10, I:14 | 21166 | Linux-Container verwenden Werkzeuge im User-Space-Bereich |
python3-venv
|
I:52 | 6 | venv for creating virtual python environments (system library) |
python3-virtualenv
|
V:10, I:59 | 415 | virtualenv for creating isolated virtual python environments |
pipx
|
V:0, I:1 | 885 | pipx for installing python applications in isolated environments |
Der Wikipedia-Artikel Comparison of platform virtual machines enthält detaillierte Gegenüberstellungen der verschiedenen Plattform-Virtualisierungslösungen.
![]() |
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.7.1, „Erzeugung der Festplatten-Abbild-Datei“ und
Abschnitt 9.7.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.7.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.11.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.11.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.7, „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.7.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
" |
If you wish to try a new Debian environment from a terminal console, I
recommend you to use chroot. This enables you
to run console applications of Debian unstable
and
testing
without usual risks associated and without
rebooting. chroot
(8) is the most basic way.
![]() |
Achtung |
---|---|
Examples below assumes both parent system and chroot system share the same
|
Although you can manually create a chroot
(8) environment
using debootstrap
(1). But this requires non-trivial
efforts.
The sbuild package to build Debian packages
from source uses the chroot environment managed by the schroot package. It comes with helper script
sbuild-createchroot
(1). Let's learn how it works by
running it under script
(1) as follows.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian
You see how debootstrap
(8) populates system data for
unstable
environment under
"/srv/chroot/unstable-amd64-sbuild
" for a minimal build
system.
You can login to this environment using schroot
(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
You see how a system shell running under unstable
environment is created.
![]() |
Anmerkung |
---|---|
The " |
![]() |
Anmerkung |
---|---|
Some programs under chroot may require access to more files from the parent
system to function than |
![]() |
Tipp |
---|---|
The |
If you wish to try a new GUI Desktop environment of any OS, I recommend you
to use QEMU, KVM, or
VirtualBox on a Debian
stable
system to run multiple desktop systems safely
using virtualization. These enable
you to run any desktop applications including ones of Debian
unstable
and testing
without usual
risks associated with them and without rebooting. The configuration of
these tools are relatively straight forward.
Since pure QEMU is very slow, it is recommended to accelerate it with KVM when the host system supports it.
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. |
[2] More elaborate customization examples: "Vim Galore", "sensible.vim", "#vim Recommendations" ...
[3] vim-pathogen was popular.