Innehållsförteckning
Här beskriver jag grundläggande tips för att konfigurera och hantera system, mestadels från konsolen.
Det finns några verktygsprogram som hjälper dig med konsolaktiviteterna.
Tabell 9.1. Lista över program för att stödja konsolaktiviteter
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
mc
|
V:42, I:189 | 1590 | Se Avsnitt 1.3, ”Midnight Commander (MC)” |
bsdutils
|
V:429, I:999 | 335 | script(1)-kommando för att spela in en terminalsession |
screen
|
V:55, I:205 | 1009 | terminalmultiplexer med VT100/ANSI-terminalemulering |
tmux
|
V:72, I:154 | 1292 | terminal multiplexer alternativ (Använd "Control-B" istället) |
fzf
|
V:7, I:30 | 4651 | fuzzy text sökare |
fzy
|
V:0, I:0 | 59 | fuzzy text sökare |
rlwrap
|
V:1, I:12 | 328 | readline-funktion kommandoradsinklädnad |
ledit
|
V:0, I:8 | 375 | readline-funktion kommandoradsinklädnad |
rlfe
|
V:0, I:0 | 45 | readline-funktion kommandoradsinklädnad |
ripgrep
|
V:8, I:28 | 5342 | snabb rekursiv strängsökning i källkodsträdet med automatisk filtrering |
En enkel användning av script(1) (se Avsnitt 1.4.9, ”Registrering av skalets aktiviteter”) för att registrera aktiviteten
i skalet ger en fil med kontrolltecken. Detta kan undvikas genom att
använda col(1) på följande sätt.
$ script Script started, file is typescript
Gör vad som helst ... och tryck på Ctrl-D för att avsluta
skriptet.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
Det finns alternativa metoder för att registrera skalaktiviteterna:
Använd tee (kan användas under startprocessen i
initramfs):
$ sh -i 2>&1 | tee typescript
Använd gnome-terminal med utökad radbuffert för
scrollback.
Använd skärmen med "^A H" (se Avsnitt 9.1.2, ”Skärmprogrammet”) för att spela in konsolen.
Använd vim med ":terminal" för att gå
till terminalläget. Använd "Ctrl-W N" för att gå från
terminalläge till normalläge. Använd ":w typescript" för
att skriva bufferten till en fil.
Använd emacs med "M-xshell",
"M-x eshell" eller "M-xterm" för att
komma till inspelningskonsolen. Använd "C-x C-w" för att
skriva bufferten till en fil.
screen(1) gör inte bara att ett terminalfönster kan
arbeta med flera processer, utan gör också att
fjärrskalprocessen kan överleva avbrutna anslutningar. Här är
ett typiskt användningsscenario för screen(1).
Du loggar in på en fjärrmaskin.
Du startar skärmen på en enda konsol.
Du kör flera program i skärmfönster som skapats med
^A c ("Control-A" följt av "c").
Du växlar mellan de olika fönstren med ^A
n ("Control-A" följt av "n").
Plötsligt måste du lämna din terminal, men du vill inte förlora ditt aktiva arbete genom att behålla anslutningen.
Du kan ta bort
skärmsessionen på valfritt sätt.
Brutalt koppla bort din nätverksanslutning
Skriv ^A d ("Control-A" följt av "d") och logga ut
manuellt från fjärranslutningen
Skriv ^A DD ("Control-A" följt av "DD") för att få
skärmen att lossna och logga ut dig
Du loggar in igen på samma fjärrmaskin (även från en annan terminal).
Du startar screen som "screen -r".
screen återför på ett
magiskt sätt alla tidigare skärmfönster med alla aktivt
pågående program.
|
Tips |
|---|---|
|
Du kan spara anslutningsavgifter med |
I en skärmsession skickas alla tangentbordsinmatningar
till det aktuella fönstret utom kommandotangenttryckningen. Alla
kommandotangenttryckningar på skärmen anges genom att
skriva ^A ("Control-A") plus en enda tangent [plus
eventuella parametrar]. Här är några som är viktiga att komma ihåg.
Tabell 9.2. Lista över tangentbindningar för skärm
| nyckelbindning | betydelse |
|---|---|
^A ? |
visa en hjälpskärm (visa tangentbindningar) |
^A c |
skapa ett nytt fönster och växla till det |
^A n |
gå till nästa fönster |
^A p |
gå till föregående fönster |
^A 0 |
gå till fönster nummer 0 |
^A 1 |
gå till fönster nummer 1 |
^A w |
visa en lista över fönster |
^A a |
skicka ett Ctrl-A till aktuellt fönster som tangentbordsinmatning |
^A h |
skriva en papperskopia av det aktuella fönstret till filen |
^A H |
påbörja/avsluta loggning av aktuellt fönster till fil |
^A ^X |
låsa terminalen (lösenordsskyddad) |
^A d |
koppla loss skärmsessionen från terminalen |
^A DD |
koppla bort skärmsessionen och logga ut |
Se screen(1) för mer information.
Se tmux(1) för funktionaliteten hos det alternativa
kommandot.
I Avsnitt 1.4.2, ”Anpassa bash” beskrivs 2 tips för att snabbt kunna
navigera i kataloger: $CDPATH och mc.
Om du använder textfilterprogrammet fuzzy kan du slippa skriva den exakta
sökvägen. För fzf, inkludera följande i
~/.bashrc.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi
Till exempel:
Du kan hoppa till en mycket djup underkatalog med minimal ansträngning. Du
skriver först "cd **" och trycker på
Tab. Sedan får du en fråga om möjliga sökvägar. Om du
skriver in delsträngar av sökvägen, t.ex. s/d/b foo,
begränsas antalet sökvägar. Du väljer den sökväg som ska användas av
cd med hjälp av markör- och returtangenterna.
Du kan välja ett kommando från kommandohistoriken på ett mer effektivt sätt
med minimal ansträngning. Du trycker på Ctrl-R vid
kommandotolken. Då kommer du att uppmanas med kandidatkommandon. Om du
skriver in delar av kommandosträngar, t.ex. vim d,
begränsas antalet kandidater. Du väljer det som ska användas med markör-
och returtangenterna.
Vissa kommandon, t.ex. /usr/bin/dash, som saknar
möjlighet att redigera kommandoradshistorik kan lägga till sådan
funktionalitet på ett transparent sätt genom att köra under
rlwrap eller dess motsvarigheter.
$ rlwrap dash -i
Detta ger en bekväm plattform för att testa subtila punkter för
dash med vänlig bash-liknande miljö.
När du har lärt dig grunderna i vim(1) via Avsnitt 1.4.8, ”Använda vim”, läs Bram Moolenaars"Seven habits of effective text
editing (2000)" för att förstå hur vim ska
användas.
Beteendet hos vim kan ändras avsevärt genom att aktivera
dess interna funktioner genom Ex-mode-kommandon som
"set ..." för att ställa in vim-alternativ.
Dessa Ex-mode-kommandon kan inkluderas i användarens
vimrc-fil, traditionell "~/.vimrc" eller git-vänlig
"~/.vim/vimrc". Här är ett mycket enkelt exempel
[2]:
""" Generic baseline Vim and Neovim configuration (~/.vimrc) """ - For NeoVim, use "nvim -u ~/.vimrc [filename]" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" let mapleader = ' ' " :h mapleader """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" set nocompatible " :h 'cp -- sensible (n)vim mode syntax on " :h :syn-on filetype plugin indent on " :h :filetype-overview set encoding=utf-8 " :h 'enc (default: latin1) -- sensible encoding """ current vim option value can be verified by :set encoding? set backspace=indent,eol,start " :h 'bs (default: nobs) -- sensible BS set statusline=%<%f%m%r%h%w%=%y[U+%04B]%2l/%2L=%P,%2c%V set listchars=eol:¶,tab:⇄\ ,extends:↦,precedes:↤,nbsp:␣ set viminfo=!,'100,<5000,s100,h " :h 'vi -- bigger copy buffer etc. """ Pick "colorscheme" from blue darkblue default delek desert elflord evening """ habamax industry koehler lunaperche morning murphy pablo peachpuff quiet ron """ shine slate torte zellner colorscheme industry """ don't pick "colorscheme" as "default" which may kill SpellUnderline settings set scrolloff=5 " :h 'scr -- show 5 lines around cursor set laststatus=2 " :h 'ls (default 1) k """ boolean options can be unset by prefixing "no" set ignorecase " :h 'ic set smartcase " :h 'scs set autoindent " :h 'ai set smartindent " :h 'si set nowrap " :h 'wrap "set list " :h 'list (default nolist) set noerrorbells " :h 'eb set novisualbell " :h 'vb set t_vb= " :h 't_vb -- termcap visual bell set spell " :h 'spell set spelllang=en_us,cjk " :h 'spl -- english spell, ignore CJK set clipboard=unnamedplus " :h 'cb -- cut/copy/paste with other app set hidden " :h 'hid set autowrite " :h 'aw set timeoutlen=300 " :h 'tm
Keymapen för vim kan ändras i användarens vimrc-fil.
T.ex:
|
Observera |
|---|---|
|
Försök inte att ändra standardtangentbindningarna utan mycket goda skäl. |
""" Popular mappings (imitating LazyVim etc.)
""" Window moves without using CTRL-W which is dangerous in INSERT mode
nnoremap <C-H> <C-W>h
nnoremap <C-J> <C-W>j
nnoremap <C-K> <C-W>k
silent! nnoremap <C-L> <C-W>l
""" Window resize
nnoremap <C-LEFT> <CMD>vertical resize -2<CR>
nnoremap <C-DOWN> <CMD>resize -2<CR>
nnoremap <C-UP> <CMD>resize +2<CR>
nnoremap <C-RIGHT> <CMD>vertical resize +2<CR>
""" Clear hlsearch with <ESC> (<C-L> is mapped as above)
nnoremap <ESC> <CMD>noh<CR><ESC>
inoremap <ESC> <CMD>noh<CR><ESC>
""" center after jump next
nnoremap n nzz
nnoremap N Nzz
""" fast "jk" to get out of INSERT mode (<ESC>)
inoremap jk <CMD>noh<CR><ESC>
""" fast "<ESC><ESC>" to get out of TERM mode (CTRL-\ CTRL-N)
tnoremap <ESC><ESC> <C-\><C-N>
""" fast "jk" to get out of TERM mode (CTRL-\ CTRL-N)
tnoremap jk <C-\><C-N>
""" previous/next trouble/quickfix item
nnoremap [q <CMD>cprevious<CR>
nnoremap ]q <CMD>cnext<CR>
""" buffers
nnoremap <S-H> <CMD>bprevious<CR>
nnoremap <S-L> <CMD>bnext<CR>
nnoremap [b <CMD>bprevious<CR>
nnoremap ]b <CMD>bnext<CR>
""" Add undo break-points
inoremap , ,<C-G>u
inoremap . .<C-G>u
inoremap ; ;<C-G>u
""" save file
inoremap <C-S> <CMD>w<CR><ESC>
xnoremap <C-S> <CMD>w<CR><ESC>
nnoremap <C-S> <CMD>w<CR><ESC>
snoremap <C-S> <CMD>w<CR><ESC>
""" better indenting
vnoremap < <gv
vnoremap > >gv
""" terminal (Somehow under Linux, <C-/> becomes <C-_> in Vim)
nnoremap <C-_> <CMD>terminal<CR>
"nnoremap <C-/> <CMD>terminal<CR>
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
if ! has('nvim')
""" Toggle paste mode with <SPACE>p for Vim (no need for Nvim)
set pastetoggle=<leader>p
""" nvim default mappings for Vim. See :h default-mappings in nvim
""" copy to EOL (no delete) like D for d
noremap Y y$
""" sets a new undo point before deleting
inoremap <C-U> <C-G>u<C-U>
inoremap <C-W> <C-G>u<C-W>
""" <C-L> is re-purposed as above
""" execute the previous macro recorded with Q
nnoremap Q @@
""" repeat last substitute and *KEEP* flags
nnoremap & :&&<CR>
""" search visual selected string for visual mode
xnoremap * y/\V<C-R>"<CR>
xnoremap # y?\V<C-R>"<CR>
endif
För att ovanstående tangentbindningar ska fungera korrekt måste
terminalprogrammet konfigureras så att det genererar "ASCII DEL" för
Backspace-tangenten och "Escape-sekvens" för
Delete-tangenten.
Andra diverse konfigurationer kan ändras i användarens vimrc-fil. T.ex:
""" Use faster 'rg' (ripgrep package) for :grep
if executable("rg")
set grepprg=rg\ --vimgrep\ --smart-case
set grepformat=%f:%l:%c:%m
endif
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""" Retain last cursor position :h '"
augroup RetainLastCursorPosition
autocmd!
autocmd BufReadPost *
\ if line("'\"") > 0 && line ("'\"") <= line("$") |
\ exe "normal! g'\"" |
\ endif
augroup END
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""" Force to use underline for spell check results
augroup SpellUnderline
autocmd!
autocmd ColorScheme * highlight SpellBad term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellCap term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellLocal term=Underline gui=Undercurl
autocmd ColorScheme * highlight SpellRare term=Underline gui=Undercurl
augroup END
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""" highlight tailing spaces except when typing as red (set after colorscheme)
highlight TailingWhitespaces ctermbg=red guibg=red
""" \s\+ 1 or more whitespace character: <Space> and <Tab>
""" \%#\@<! Matches with zero width if the cursor position does NOT match.
match TailingWhitespaces /\s\+\%#\@<!$/
Intressanta externa plugin-paket kan hittas:
Vim - den allestädes närvarande textredigeraren -- Den officiella uppströmswebbplatsen för Vim och vim-skript
VimAwsome -- En lista över Vim-plugins
vim-scripts -- Debian-paket: en samling vim-skript
Plugin-paket i paketet vim-scripts kan aktiveras med hjälp av användarens vimrc-fil. T.ex:
packadd! secure-modelines packadd! winmanager " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR>
Det nya inbyggda Vim-paketsystemet fungerar fint med
"git" och "git submodule". Ett sådant
exempel på konfiguration finns i mitt
git-arkiv: dot-vim. Detta gör i huvudsak:
Genom att använda "git" och "git
submodule" kan de senaste externa paketen, till exempel
"namn", placeras i
~/.vim/pack/*/opt/name och liknande.
Genom att lägga till
namnraden:packadd! i användarens vimrc-fil
placeras dessa paket på runtimepath.
Vim laddar dessa paket på runtimepath under
initialiseringen.
I slutet av initialiseringen uppdateras taggarna för de installerade
dokumenten med "helptags ALL".
För mer information, starta vim med ”vim
--startuptime vimstart.log” för att kontrollera den faktiska
exekveringssekvensen och tiden som åtgår för varje steg.
Det är ganska förvirrande att se alltför många sätt[3] att hantera och ladda dessa externa paket till
vim. Att kontrollera den ursprungliga informationen är
det bästa botemedlet.
Tabell 9.3. Information om initialiseringen av vim
| tangenttryckningar | information |
|---|---|
:hjälp paket |
förklaring av paketmekanismen vim |
:hjälp runtimepath |
förklaring av mekanismen för runtimepath |
:version |
interna stater inklusive kandidater för vimrc-filen |
:echo $VIM |
miljövariabeln "$VIM" som används för att hitta
vimrc-filen |
:set runtimepath? |
lista över kataloger som ska genomsökas efter alla runtime-stödfiler |
:echo $VIMRUNTIME |
miljövariabeln "$VIMRUNTIME" som används för att hitta
olika systemtillhandahållna runtime-stödfiler |
Många traditionella program registrerar sina aktiviteter i textfilformat
under katalogen "/var/log/".
logrotate(8) används för att förenkla administrationen av
loggfiler på ett system som genererar många loggfiler.
Många nya program registrerar sina aktiviteter i det binära filformatet med
hjälp av systemd-journald(8) Journaltjänst under
katalogen "/var/log/journal".
Du kan logga data till journalen systemd-journald(8) från
ett skalskript med kommandot systemd-cat(1).
Se Avsnitt 3.4, ”Systemets meddelande” och Avsnitt 3.3, ”Kärnans meddelande”.
Här är anmärkningsvärda logganalysatorer (
"~Gsecurity::log-analyzer" i
aptitude(8)).
Tabell 9.4. Lista över systemlogganalysatorer
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
logwatch
|
V:9, I:11 | 2412 | logganalysator med snygg utdata skriven i Perl |
fail2ban
|
V:97, I:108 | 2191 | förbjuda IP-adresser som orsakar flera autentiseringsfel |
analog
|
V:3, I:88 | 3739 | logganalysator för webbserver |
awstats
|
V:5, I:9 | 6935 | kraftfull och funktionell analysator för webbserverloggar |
sarg
|
V:0, I:0 | 863 | generator för bläckfiskanalysrapport |
pflogsumm
|
V:1, I:4 | 167 | Postfix sammanfattning av loggposter |
fwlogwatch
|
V:0, I:0 | 487 | analysator för brandväggsloggar |
squidview
|
V:0, I:0 | 189 | övervaka och analysera squid access.log-filer |
swatch
|
V:0, I:0 | 99 | loggfilsgranskare med regexp-matchning, markering och krokar |
crm114
|
V:0, I:0 | 1365 | Kontrollerbart regex- och skräppostfilter (CRM114) |
icmpinfo
|
V:0, I:0 | 42 | tolka ICMP-meddelanden |
|
Notera |
|---|---|
|
CRM114 tillhandahåller språkinfrastruktur för att skriva fuzzy-filter med TRE regex-biblioteket. Det används ofta som spamfilter men kan även användas som logganalysator. |
Även om pager-verktyg som more(1) och
less(1) (se Avsnitt 1.4.5, ”Personsökaren”) och anpassade
verktyg för markering och formatering (se Avsnitt 11.1.8, ”Markera och formatera data i klartext”) kan visa textdata
på ett snyggt sätt, är generella editorer (se Avsnitt 1.4.6, ”Textredigeraren”) mest mångsidiga och anpassningsbara.
|
Tips |
|---|---|
|
För |
Standardformatet för visning av tid och datum med kommandot "ls
-l" beror på locale (se Avsnitt 1.2.6, ”Tidsstämplar” för värde). Variabeln "$LANG"
anges först och den kan åsidosättas av de exporterade miljövariablerna
"$LC_TIME" eller "$LC_ALL".
Det faktiska standardformatet för varje lokal beror på vilken version av
standardbiblioteket för C ( paketet libc6 ) som används.
D.v.s. olika versioner av Debian har olika standardformat. För isoformat,
se ISO 8601.
Om du verkligen vill anpassa detta visningsformat för tid och datum utöver
locale, bör du ställa in tidsformatvärdet med argumentet "
--time-style” eller med värdet ”$TIME_STYLE”
(se ls(1), date(1), ”info
coreutils ’ls invocation’").
Tabell 9.5. Visa exempel på tid och datum för kommandot "ls -l" med
värdet för tidstyp
| tid stil värde | lokal | visning av tid och datum |
|---|---|---|
iso |
någon | 01-19 00:15 |
lång-iso |
någon | 2009-01-19 00:15 |
full-iso |
någon | 2009-01-19 00:15:16.000000000 +0900 |
lokal |
C |
19 januari 00:15 |
lokal |
en_US.UTF-8 |
19 januari 00:15 |
lokal |
es_ES.UTF-8 |
ene 19 00:15 |
+%d.%m.%y %H:%M |
någon | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C eller en_US.UTF-8 |
19.09 januari 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
|
Tips |
|---|---|
|
Du kan slippa skriva långa alternativ på kommandoraden med hjälp av kommandonas alias (se Avsnitt 1.5.9, ”Kommando alias”): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
Shell-eko till de flesta moderna terminaler kan färgläggas med hjälp av
ANSI escape code (se
"/usr/share/doc/xterm/ctlseqs.txt.gz").
Försök till exempel med följande
$ RED=$(printf "\x1b[31m")
$ NORMAL=$(printf "\x1b[0m")
$ REVERSE=$(printf "\x1b[7m")
$ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Färgade kommandon är praktiska för att inspektera deras utdata i den
interaktiva miljön. Jag inkluderar följande i min
"~/.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
Användningen av alias begränsar färgeffekterna till den interaktiva
kommandoanvändningen. Det har en fördel jämfört med att exportera
miljövariabeln "export GREP_OPTIONS='--color=auto'"
eftersom färg kan ses under pager-program som less(1).
Om du vill undertrycka färgen vid piping till andra program, använd
"--color=auto" istället i exemplet ovan för
"~/.bashrc".
|
Tips |
|---|---|
|
Du kan stänga av dessa färgläggande alias i den interaktiva miljön genom att
anropa shell med " |
Du kan spela in redigeringsaktiviteterna för komplexa upprepningar.
För Vim, enligt följande.
"qa": börja registrera skrivna tecken i ett namngivet
register "a".
... redaktörsverksamhet
"q": avsluta inspelning av skrivna tecken.
"@a": kör innehållet i register "a".
För Emacs, enligt följande.
"C-x (": Börja definiera ett tangentbordsmakro.
... redaktörsverksamhet
"C-x )": Avsluta definitionen av ett tangentbordsmakro.
"C-x e": Utför ett tangentbordsmakro.
Det finns några olika sätt att spela in grafikbilden för ett X-program,
inklusive en xterm-display.
Tabell 9.6. Lista över grafiska bildmanipuleringsverktyg
| paket | popcon | storlek | skärm | kommando |
|---|---|---|---|---|
gnome-screenshot
|
V:13, I:114 | 1115 | Wayland | skärmdumpsprogram för GNOME |
flameshot
|
V:7, I:17 | 3532 | Wayland | skärmdump ansökan på steroid |
gimp
|
V:45, I:232 | 32135 | Wayland + X | skärmdump i GUI-meny |
x11-apps
|
V:31, I:467 | 2461 | X | xwd(1) |
imagemagick
|
I:295 | 77 | X | import(1) |
scrot
|
V:4, I:54 | 141 | X | scrot(1) |
Det finns specialiserade verktyg för att registrera ändringar i konfigurationsfiler med hjälp av DVCS och för att göra ögonblicksbilder av systemet på Btrfs.
Tabell 9.7. Lista över paket som kan registrera konfigurationshistorik
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
etckeeper
|
V:24, I:28 | 157 | lagra konfigurationsfiler och deras metadata med Git (standard), Mercurial eller GNU Bazaar |
timeshift
|
V:7, I:13 | 4234 | verktyg för systemåterställning med hjälp av rsync eller BTRFS-snapshots |
snapper
|
V:6, I:8 | 2426 | Verktyg för hantering av ögonblicksbilder av Linux-filsystem |
Du kan också tänka dig att använda det lokala skriptet Avsnitt 10.2.3, ”Tips för säkerhetskopiering”.
Programaktiviteter kan övervakas och styras med hjälp av specialiserade verktyg.
Tabell 9.8. Förteckning över verktyg för övervakning och kontroll av programaktiviteter
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
coreutils
|
V:897, I:999 | 18457 | nice(1): kör ett program med ändrad
schemaläggningsprioritet |
bsdutils
|
V:429, I:999 | 335 | renice(1): ändra schemaläggningsprioriteten för en
process som körs |
procps
|
V:821, I:997 | 2395 | "/proc" filsystemverktyg: ps(1),
top(1), kill(1),
watch(1), … |
psmisc
|
V:403, I:748 | 950 | verktyg för filsystemet "/proc":
killall(1), fuser(1),
peekfd(1), pstree(1) |
time
|
V:6, I:90 | 129 | time(1): kör ett program för att rapportera hur
systemresurser används med avseende på tid |
sysstat
|
V:129, I:165 | 1904 | sar(1), iostat(1),
mpstat(1), ...: verktyg för systemprestanda för Linux |
isag
|
V:0, I:3 | 109 | Interactive System Activity Grapher för sysstat |
lsof
|
V:438, I:949 | 492 | lsof(8): lista filer som öppnats av en pågående process
med alternativet "-p" |
strace
|
V:9, I:106 | 3253 | strace(1): spåra systemanrop och signaler |
ltrace
|
V:0, I:12 | 420 | ltrace(1): spåra anrop till bibliotek |
xtrace
|
V:0, I:0 | 353 | xtrace(1): spåra kommunikationen mellan X11-klient och
server |
powertop
|
V:29, I:226 | 696 | powertop(1): information om systemets strömförbrukning |
cron
|
V:903, I:996 | 250 | kör processer enligt ett schema i bakgrunden från
cron(8)-daemon |
anacron
|
V:412, I:485 | 112 | cron-liknande kommandoschemaläggare för system som inte körs 24 timmar om dygnet |
at
|
V:77, I:107 | 158 | at(1) eller batch(1): kör ett jobb vid
en angiven tidpunkt eller under en viss belastningsnivå |
|
Tips |
|---|---|
|
Paketen |
Visar tid som använts av den process som anropas av kommandot.
# 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
Ett fint värde används för att styra schemaläggningsprioriteten för processen.
Tabell 9.9. Lista med bra värden för schemaläggningsprioritet
| bra värde | prioritet för schemaläggning |
|---|---|
| 19 | process med lägst prioritet (nice) |
| 0 | mycket högprioriterad process för användaren |
| -20 | mycket högprioriterad process för rot (inte trevligt) |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
Ibland gör ett extremt nice-värde mer skada än nytta för systemet. Använd detta kommando med försiktighet.
Kommandot ps(1) på ett Debian-system har stöd för både
BSD- och SystemV-funktioner och hjälper till att identifiera
processaktiviteten statiskt.
Tabell 9.10. Lista över stilar för kommandot ps
| stil | typiskt kommando | funktion |
|---|---|---|
| BSD | ps aux |
visa %CPU %MEM |
| System V | ps -efH |
visa PPID |
När det gäller zombieprocesser kan du döda dem med hjälp av det ID för den
överordnade processen som anges i fältet "PPID".
Kommandot pstree(1) visar ett träd med processer.
top(1) på Debian-systemet har rika funktioner och hjälper
till att identifiera vilken process som agerar roligt dynamiskt.
Det är ett interaktivt fullskärmsprogram. Du kan få hjälp med användningen genom att trycka på "h"-tangenten och avsluta det genom att trycka på "q"-tangenten.
Du kan lista alla filer som öppnats av en process med ett process-ID (PID), t.ex. 1, på följande sätt.
$ sudo lsof -p 1
PID=1 är vanligtvis init-programmet.
Du kan spåra programaktivitet med strace(1),
ltrace(1) eller xtrace(1) för
systemanrop och signaler, biblioteksanrop eller kommunikation mellan
X11-klient och -server.
Du kan spåra systemanrop med kommandot ls på följande
sätt.
$ sudo strace ls
|
Tips |
|---|---|
|
Använd skriptet strace-graph som finns i /usr/share/doc/strace/examples/ för att skapa en snygg trädvy |
Du kan också identifiera processer med hjälp av filer genom
fuser(1), t.ex. för
"/var/log/mail.log" på följande sätt.
$ sudo fuser -v /var/log/mail.log
USER PID ACCESS COMMAND
/var/log/mail.log: root 2946 F.... rsyslogd
Du ser att filen "/var/log/mail.log" är öppen för
skrivning av kommandot rsyslogd(8).
Du kan också identifiera processer som använder uttag med
fuser(1), t.ex. för ”smtp/tcp” med
följande.
$ sudo fuser -v smtp/tcp
USER PID ACCESS COMMAND
smtp/tcp: Debian-exim 3379 F.... exim4
Nu vet du att ditt system kör exim4(8) för att hantera
TCP-anslutningar till SMTP-porten (25).
watch(1) kör ett program upprepade gånger med ett
konstant intervall och visar dess resultat i helskärm.
$ watch w
Visar vem som är inloggad på systemet och uppdateras varannan sekund.
Det finns flera sätt att upprepa ett kommando som loopar över filer som
uppfyller ett visst villkor, t.ex. att matcha globmönstret
"*.ext".
Shell for loop-metoden (se Avsnitt 12.1.4, ”Öglor i skalet”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
find(1) och xargs(1) kombination:
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find(1) med alternativet "-exec" med
ett kommando:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find(1) med alternativet "-exec" med
ett kort shell-skript:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
Exemplen ovan är skrivna för att säkerställa korrekt hantering av konstiga
filnamn, t.ex. sådana som innehåller mellanslag. Se Avsnitt 10.1.5, ”Idiom för urval av filer” för mer avancerade
användningsområden för find(1).
För kommandoradsgränssnittet
(CLI) körs det första programmet med samma namn som finns i de
kataloger som anges i miljövariabeln $PATH. Se Avsnitt 1.5.3, ”Variabeln "$PATH"”.
För det grafiska
användargränssnittet (GUI) som följer freedesktop.org-standarderna tillhandahåller
*.desktop-filerna i katalogen
/usr/share/applications/ nödvändiga attribut för
GUI-menyvisningen i varje program. Varje paket som är kompatibelt med
Freedesktop.org:s xdg-menysystem installerar sina menydata som
tillhandahålls av "*.desktop" under "/usr/share/applications/". Moderna
skrivbordsmiljöer som följer Freedesktop.org-standarden använder dessa data
för att generera sin meny med hjälp av paketet xdg-utils. Se
"/usr/share/doc/xdg-utils/README".
Till exempel definierar filen chromium.desktop attribut
för "Chromium Web Browser", såsom "Name" för programnamnet, "Exec" för
sökvägen och argumenten för programkörning, "Icon" för den ikon som används,
etc. (se Desktop Entry
Specification) enligt följande:
[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
Detta är en alltför förenklad
beskrivning. *.desktop-filerna skannas enligt följande.
Skrivbordsmiljön ställer in miljövariablerna
$XDG_DATA_HOME och $XDG_DATA_DIR.
Till exempel, under GNOME 3:
$XDG_DATA_HOME är inte inställt. (Standardvärdet
$HOME/.local/share används)
$XDG_DATA_DIRS är inställd på
/usr/share/gnome:/usr/local/share/:/usr/share/.
Baskatalogerna (se XDG Base
Directory Specification) och
applikationskatalogerna är alltså följande.
$HOME/.local/share/ →
$HOME/.local/share/applications/
/usr/share/gnome/ →
/usr/share/gnome/tillämpningar/
/usr/local/share/ →
/usr/local/share/applications/
/usr/share/ →
/usr/share/applikationer/
*.desktop-filerna skannas i dessa
programkataloger i denna ordning.
|
Tips |
|---|---|
|
En användaranpassad GUI-menypost kan skapas genom att lägga till en
|
|
Tips |
|---|---|
|
" |
|
Tips |
|---|---|
|
På samma sätt, om en |
|
Tips |
|---|---|
|
På samma sätt, om en |
Vissa program startar ett annat program automatiskt. Här följer kontrollpunkter för att anpassa denna process.
Meny för programkonfiguration:
GNOME3 skrivbord: "Inställningar" → "System" → "Detaljer" → "Standardprogram"
KDE-skrivbord: "K" → "Kontrollcenter" → "KDE-komponenter" → "Komponentväljare"
Iceweasel webbläsare: "Redigera" → "Inställningar" → "Program"
mc(1): "/etc/mc/mc.ext"
Miljövariabler som "$BROWSER",
"$EDITOR", "$VISUAL" och
"$PAGER" (se environ(7))
Systemet update-alternatives(1) för program som
"editor", "view",
"x-www-browser", "gnome-www-browser"
och "www-browser" (se Avsnitt 1.4.7, ”Ange en standardtextredigerare”)
filinnehållet i "~/.mailcap" och
"/etc/mailcap" som associerar MIME-typ med program (se mailcap(5))
Filinnehållet i "~/.mime.types" och
"/etc/mime.types" som associerar filnamnstillägg med
MIME-typ (se run-mailcap(1))
|
Tips |
|---|---|
|
|
|
Tips |
|---|---|
|
Paketet |
|
Tips |
|---|---|
|
För att kunna köra en konsolapplikation som # cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF # chmod 755 /usr/local/bin/mutt-term |
Använd kill(1) för att döda (eller skicka en signal till)
en process med process-ID.
Använd killall(1) eller pkill(1) för
att göra samma sak med processens kommandonamn och andra attribut.
Tabell 9.11. Lista över ofta använda signaler för kill-kommando
| signalvärde | signalens namn | åtgärd | notering |
|---|---|---|---|
| 0 | --- | ingen signal skickas (se kill(2)) |
kontrollera om processen är igång |
| 1 | SIGHUP | avsluta processen | frånkopplad terminal (signal upphängd) |
| 2 | SIGINT | avsluta processen | avbrott från tangentbordet(CTRL-C) |
| 3 | SIGQUIT | avsluta processen och dumpa kärnan | avsluta från tangentbordet(CTRL-\\) |
| 9 | SIGKILL | avsluta processen | oblockerbar dödssignal |
| 15 | SIGTERM | avsluta processen | blockerbar avslutningssignal |
Kör kommandot at(1) för att schemalägga ett engångsjobb
på följande sätt.
$ echo 'command -args'| at 3:40 monday
Använd cron(8) för att schemalägga uppgifter
regelbundet. Se crontab(1) och
crontab(5).
Du kan schemalägga att köra processer som en vanlig användare,
t.ex. foo, genom att skapa en
crontab(5)-fil som
"/var/spool/cron/crontabs/foo" med kommandot
"crontab -e".
Här är ett exempel på en crontab(5)-fil.
# use /usr/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
|
Tips |
|---|---|
|
Om systemet inte körs kontinuerligt kan du installera paketet
|
|
Tips |
|---|---|
|
Skript för schemalagt systemunderhåll kan du köra regelbundet från
root-kontot genom att placera dem i " |
Systemd har kapacitet på låg nivå för att
schemalägga program som ska köras utan cron-daemon. Till
exempel ställer /lib/systemd/system/apt-daily.timer och
/lib/systemd/system/apt-daily.service in dagliga
apt-hämtningsaktiviteter. Se systemd.timer(5) .
Systemd kan schemalägga program inte bara på timerhändelsen utan även på mount-händelsen. Se Avsnitt 10.2.3.3, ”Timerhändelseutlöst säkerhetskopiering” och Avsnitt 10.2.3.2, ”Montera händelsestyrd säkerhetskopiering” för exempel.
Genom att trycka på Alt-SysRq (PrtScr) följt av en knapptryckning återfår du kontrollen över systemet.
Tabell 9.12. Lista över anmärkningsvärda SAK-kommandotangenter
| tangent efter Alt-SysRq | beskrivning av åtgärden |
|---|---|
k |
dödaalla processer på den aktuella virtuella konsolen(SAK) |
s |
synkroniseraalla monterade filsystem för att undvika datakorruption |
u |
återmontera alla monterade filsystem skrivskyddade(umount) |
r |
återställa tangentbordet från raw-lägeefter X-krasch |
Se mer på Linux-kärnans användar- och administratörshandbok " Linux Magic System Request Key Hacks
|
Tips |
|---|---|
|
Från SSH-terminaler etc. kan du använda Alt-SysRq-funktionen genom att
skriva till " |
Den aktuella (2021) Debian amd64 Linux-kärnan har
/proc/sys/kernel/sysrq=438=0b110110110:
2 = 0x2 - aktivera kontroll av konsolloggningsnivå (ON)
4 = 0x4 - aktivera styrning av tangentbord (SAK, unraw) (ON)
8 = 0x8 - aktivera felsökningsdumpar av processer etc. (OFF)
16 = 0x10 - aktivera synkroniseringskommando (ON)
32 = 0x20 - aktivera återmontering skrivskyddad (ON)
64 = 0x40 - aktivera signalering av processer (term, kill, oom-kill) (OFF)
128 = 0x80 - Tillåt omstart/avstängning (ON)
256 = 0x100 - Tillåt nikning av alla RT-uppgifter (ON)
Du kan kontrollera vem som är inne i systemet på följande sätt.
who(1) visar vem som är inloggad.
w(1) visar vem som är inloggad och vad de gör.
last(1) visar en lista över den senast inloggade
användaren.
lastb(1) visar en lista över de senaste dåliga inloggade
användarna.
|
Tips |
|---|---|
|
" |
Du kan skicka ett meddelande till alla som är inloggade i systemet med
wall(1) på följande sätt.
$ echo "We are shutting down in 1 hour" | wall
För PCI-liknande enheter(AGP, PCI-Express,
CardBus, ExpressCard etc.) är lspci(8)
(förmodligen med alternativet "-nn") en bra början för
identifiering av maskinvaran.
Alternativt kan du identifiera maskinvaran genom att läsa innehållet i
"/proc/bus/pci/devices" eller bläddra i katalogträdet
under "/sys/bus/pci" (se Avsnitt 1.2.12, ”procfs och sysfs”).
Tabell 9.13. Lista över verktyg för identifiering av hårdvara
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
pciutils
|
V:252, I:992 | 279 | Linux PCI-verktyg: lspci(8) |
usbutils
|
V:77, I:883 | 322 | USB-verktyg för Linux: lsusb(8) |
nvme-cli
|
V:21, I:31 | 2222 | NVMe-verktyg för Linux: nvme(1) |
pcmciautils
|
V:4, I:7 | 92 | PCMCIA-verktyg för Linux: pccardctl(8) |
scsitools
|
V:0, I:2 | 261 | samling verktyg för hantering av SCSI-maskinvara:
lsscsi(8) |
procinfo
|
V:0, I:6 | 149 | systeminformation hämtad från "/proc":
lsdev(8) |
lshw
|
V:13, I:93 | 971 | information om maskinvarukonfiguration: lshw(1) |
discover
|
V:28, I:727 | 81 | system för identifiering av hårdvara: discover(8) |
Även om det mesta av maskinvarukonfigurationen på moderna GUI-skrivbordssystem som GNOME och KDE kan hanteras via medföljande GUI-konfigurationsverktyg, är det en bra idé att känna till några grundläggande metoder för att konfigurera dem.
Tabell 9.14. Lista över verktyg för hårdvarukonfiguration
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
console-setup
|
V:58, I:971 | 420 | Font och keytable-verktyg för Linux-konsolen |
x11-xserver-utils
|
V:306, I:537 | 559 | Verktyg för X-server: xset(1),
xmodmap(1) |
acpid
|
V:60, I:96 | 158 | daemon för att hantera händelser som levereras av ACPI (Advanced Configuration and Power Interface) |
acpi
|
V:7, I:89 | 49 | verktyg för att visa information om ACPI-enheter |
sleepd
|
V:0, I:0 | 84 | daemon för att sätta en bärbar dator i viloläge under inaktivitet |
hdparm
|
V:116, I:231 | 246 | optimering av hårddiskåtkomst (se Avsnitt 9.6.9, ”Optimering av hårddisken”) |
smartmontools
|
V:227, I:265 | 2455 | styra och övervaka lagringssystem med hjälp av S.M.A.R.T. |
setserial
|
V:3, I:5 | 104 | samling av verktyg för hantering av serieportar |
memtest86+
|
V:0, I:19 | 12473 | samling av verktyg för hantering av minneshårdvara |
scsitools
|
V:0, I:2 | 261 | samling av verktyg för hantering av SCSI-hårdvara |
setcd
|
V:0, I:0 | 33 | optimering av åtkomst till cd-läsare |
big-cursor
|
I:0 | 26 | större muspekare för X |
ACPI är ett nyare ramverk för energihanteringssystemet än APM.
|
Tips |
|---|---|
|
Skalning av CPU-frekvens på moderna system styrs av kärnmoduler som
t.ex. |
I det följande ställs system- och maskinvarutid in på MM/DD hh:mm, CCYY.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
Tiderna visas normalt i lokal tid på Debian-systemet, men maskinvaru- och systemtiden använder vanligtvis UTC(GMT).
Om maskinvarans tid är inställd på UTC ska du ändra inställningen till
"UTC=yes" i "/etc/default/rcS".
Följande omkonfigurerar den tidszon som används av Debiansystemet.
# dpkg-reconfigure tzdata
Om du vill uppdatera systemtiden via nätverket kan du överväga att använda
NTP-tjänsten med paket som
ntp, ntpdate och
chrony.
|
Tips |
|---|---|
|
Under systemd ska du istället använda
|
Se följande.
|
Tips |
|---|---|
|
|
Det finns flera komponenter för att konfigurera teckenkonsol- och
ncurses(3)-systemfunktioner.
Filen "/etc/terminfo/*/*"(terminfo(5))
Miljövariabeln "$TERM"(term(7))
setterm(1), stty(1),
tic(1) och toe(1)
Om terminfo-posten för xterm inte
fungerar med en xterm som inte är från Debian, ändra din
terminaltyp, "$TERM", från "xterm"
till en av de funktionsbegränsade versionerna som
"xterm-r6" när du loggar in på ett Debiansystem på
distans. Se "/usr/share/doc/libncurses5/FAQ" för mer
information. "dumb" är den minsta gemensamma nämnaren
för "$TERM".
Drivrutiner för ljudkort för nuvarande Linux tillhandahålls av Advanced Linux Sound Architecture (ALSA). ALSA tillhandahåller emuleringsläge för tidigare Open Sound System (OSS) för kompatibilitet.
Programvarorna kan konfigureras så att de inte bara har direkt tillgång till ljudenheterna utan också till dem via ett standardiserat ljudserversystem. För närvarande används PulseAudio, JACK och PipeWire som ljudserversystem. Se Debians wikisida om ljud för den senaste situationen.
Det finns vanligtvis en gemensam ljudmotor för varje populär skrivbordsmiljö. Varje ljudmotor som används av programmet kan välja att ansluta till olika ljudservrar.
|
Tips |
|---|---|
|
Använd " |
|
Tips |
|---|---|
|
Om du inte får något ljud kan högtalaren vara ansluten till en utgång som är
avstängd. Moderna ljudsystem har många
utgångar. |
Tabell 9.15. Lista över ljudpaket
Använd följande kommandon för att inaktivera skärmsläckaren.
Tabell 9.16. Lista över kommandon för att inaktivera skärmsläckaren
| miljö | kommando |
|---|---|
| Linux-konsolen | setterm -powersave av |
| X-fönstret (stänga av skärmsläckaren) | xset s off |
| X-fönstret (inaktivera dpms) | xset -dpms |
| X-fönstret (GUI-konfiguration av skärmsläckare) | xscreensaver-kommando -prefs |
Man kan alltid koppla ur datorns högtalare för att inaktivera pipljud. Att
ta bort pcspkr-kärnmodulen gör detta åt dig.
Följande förhindrar att programmet readline(3) som
används av bash(1) piper när det stöter på ett
alert-tecken (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Det finns 2 resurser tillgängliga för dig för att få information om minnesanvändningssituationen.
Kärnans startmeddelande i "/var/log/dmesg" innehåller den
totala exakta storleken på tillgängligt minne.
free(1) och top(1) visar information
om minnesresurser i det system som körs.
Här är ett exempel.
# 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
Du kanske undrar "dmesg säger att jag har 990 MB ledigt, och free -k säger att 320 MB är ledigt. Mer än 600 MB saknas ...".
Bry dig inte om det stora "used" och det lilla
"free" i raden "Mem:", utan läs det
som står under dem (675404 och 321780 i exemplet ovan) och slappna av.
För min MacBook med 1GB=1048576k DRAM (videosystemet stjäl en del av detta), ser jag följande.
Tabell 9.17. Lista över rapporterade minnesstorlekar
| felanmalan | storlek |
|---|---|
| Total storlek i dmesg | 1016784k = 1GB - 31792k |
| Gratis i dmesg | 990528k |
| Totalt under skal | 997184k |
| Fri under skal | 20256k (men i praktiken 321780k) |
Dåligt systemunderhåll kan utsätta ditt system för extern exploatering.
För att kontrollera systemets säkerhet och integritet bör du börja med följande.
Debsums-paketet, se debsums(1) och
Avsnitt 2.5.2, ”"Release"-fil på högsta nivå och äkthet”.
Paketet chkrootkit, se chkrootkit(1).
Paketfamiljen clamav, se clamscan(1)
och freshclam(1).
Tabell 9.18. Förteckning över verktyg för kontroll av systemsäkerhet och systemintegritet
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
logcheck
|
V:5, I:6 | 120 | daemon för att skicka avvikelser i systemets loggfiler till administratören |
debsums
|
V:4, I:31 | 107 | verktyg för att verifiera installerade paketfiler mot MD5-kontrollsummor |
chkrootkit
|
V:9, I:15 | 966 | rootkit-detektor |
clamav
|
V:8, I:40 | 33105 | antivirusprogram för Unix - kommandoradsgränssnitt |
tiger
|
V:1, I:1 | 7800 | rapportera sårbarheter i systemsäkerheten |
tripwire
|
V:1, I:1 | 5050 | kontroll av fil- och katalogintegritet |
john
|
V:1, I:8 | 469 | aktivt verktyg för att knäcka lösenord |
aide
|
V:1, I:2 | 331 | Avancerad miljö för intrångsdetektering - statisk binär |
integrit
|
V:0, I:0 | 2939 | program för verifiering av filintegritet |
crack
|
V:0, I:0 | 153 | program för lösenordsgissning |
Här är ett enkelt skript för att kontrollera om filbehörigheterna för skrivbara filer är felaktiga.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
|
Observera |
|---|---|
|
Eftersom |
Om du startar ditt system med Linux live-CD-skivor eller Debian-installer-CD-skivor i räddningsläge kan du enkelt konfigurera om datalagringen på din startenhet.
Du kan behöva umount(8) vissa enheter manuellt från
kommandoraden innan du kör på dem om de monteras automatiskt av
GUI-skrivbordssystemet.
Diskutrymmesanvändningen kan utvärderas med hjälp av program som
tillhandahålls av paketen mount,
coreutils och xdu:
mount(8) rapporterar alla monterade filsystem (= diskar).
df(1) rapporterar hur mycket diskutrymme som används för
filsystemet.
du(1) rapporterar hur mycket diskutrymme som används för
katalogträdet.
|
Tips |
|---|---|
|
Du kan mata utdata från |
För diskpartitionskonfiguration, även
om fdisk(8) har ansetts vara standard, förtjänar
parted(8) viss uppmärksamhet. "Diskpartitionsdata",
"partitionstabell", "partitionskarta" och "disketikett" är synonymer.
Äldre datorer använder det klassiska MBR-schemat (Master Boot Record) för att lagra diskpartitioneringsdata i den första sektorn, dvs. LBA-sektorn 0 (512 byte).
Nya datorer med UEFI (Unified Extensible Firmware Interface), inklusive Intel-baserade Mac-datorer, använder GPT (GUID Partition Table) för att lagra diskpartitioneringsdata som inte finns i den första sektorn.
Även om fdisk(8) har varit standard för
diskpartitioneringsverktyget håller parted(8) på att
ersätta det.
Tabell 9.19. Lista över paket för hantering av diskpartitioner
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
util-linux
|
V:900, I:999 | 4401 | diverse systemverktyg inklusive fdisk(8) och
cfdisk(8) |
parted
|
V:443, I:577 | 126 | GNU Parted program för att ändra storlek på diskpartitioner |
gparted
|
V:13, I:94 | 2168 | GNOME-partitionsredigerare baserad på libparted |
gdisk
|
V:20, I:331 | 940 | partition editor för GPT/MBR hybriddisk |
kpartx
|
V:17, I:29 | 78 | program för att skapa enhetsmappningar för partitioner |
|
Observera |
|---|---|
|
Även om |
|
Notera |
|---|---|
|
För att kunna växla mellan GPT och MBR måste du radera de första blocken av diskinnehållet
direkt (se Avsnitt 9.8.6, ”Rensning av filinnehåll”) och använda
" |
Även om omkonfigurering av partitioner eller aktiveringsordning för flyttbara lagringsmedia kan ge olika namn på partitioner, kan du komma åt dem på ett konsekvent sätt. Detta är också användbart om du har flera diskar och ditt BIOS/UEFI inte ger dem enhetsnamn som är konsekventa.
mount(8) med alternativet "-U" kan
montera en blockenhet med hjälp av UUID,
istället för att använda dess filnamn, t.ex. "/dev/sda3".
"/etc/fstab" (se fstab(5)) kan använda
UUID.
Boot loaders (Avsnitt 3.1.2, ”Steg 2: startladdaren”) kan också använda UUID.
|
Tips |
|---|---|
|
Du kan undersöka UUID för en blockspecifik enhet
med Du kan också undersöka UUID och annan information med " |
LVM2 är en logisk volymhanterare för Linux-kärnan. Med LVM2 kan diskpartitioner skapas på logiska volymer i stället för på de fysiska hårddiskarna.
LVM kräver följande.
stöd för enhetsmappare i Linux-kärnan (standard för Debian-kärnor)
stödbibliotek för enhet-mappare i
användarutrymmet(libdevmapper*-paketet)
lVM2-verktygen i användarutrymmet(lvm2-paketet)
Börja med att lära dig LVM2 från följande manpages.
lvm(8): Grunderna i LVM2-mekanismen (lista över alla
LVM2-kommandon)
lvm.conf(5): Konfigurationsfil för LVM2
lvs(8): Rapportera information om logiska volymer
vgs(8): Rapportera information om volymgrupper
pvs(8): Rapportera information om fysiska volymer
För ext4-filsystem tillhandahåller paketet
e2fsprogs följande.
mkfs.ext4(8) för att skapa ett nytt ext4-filsystem
fsck.ext4(8) för att kontrollera och reparera ett
befintligt ext4-filsystem
tune2fs(8) för att konfigurera superblock i ext4-filsystem
debugfs(8) för att felsöka ext4-filsystem interaktivt. (Det har kommandot
undel för att återställa raderade filer)
Kommandona mkfs(8) och fsck(8)
tillhandahålls av paketet e2fsprogs som front-ends till
olika filsystemberoende program (mkfs.fstype och
fsck.fstype). För ext4-filsystemet är det mkfs.ext4(8)
och fsck.ext4(8) (de är symlänkade till
mke2fs(8) och e2fsck(8)).
Liknande kommandon finns tillgängliga för alla filsystem som stöds av Linux.
Tabell 9.20. Lista över paket för hantering av filsystem
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
e2fsprogs
|
V:797, I:998 | 1549 | verktyg för filsystemen ext2/ext3/ext4 |
btrfs-progs
|
V:44, I:77 | 5204 | verktyg för filsystemet Btrfs |
reiserfsprogs
|
V:6, I:22 | 473 | verktyg för Reiserfs-filsystemet |
zfsutils-linux
|
V:32, I:32 | 1873 | verktyg för OpenZFS-filsystemet |
dosfstools
|
V:238, I:568 | 310 | verktyg för FAT-filsystemet. (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:34, I:459 | 352 | verktyg för exFAT-filsystemet som underhålls av Samsung. |
exfat-fuse
|
V:2, I:54 | 74 | läs/skriv exFAT-filsystem (Microsoft) drivrutin för FUSE. |
xfsprogs
|
V:33, I:90 | 4384 | verktyg för XFS-filsystemet. (SGI: IRIX) |
ntfs-3g
|
V:122, I:523 | 1494 | läs/skriv NTFS-filsystem (Microsoft: Windows NT, ...) drivrutin för FUSE. |
jfsutils
|
V:0, I:7 | 1104 | verktyg för JFS-filsystemet. (IBM: AIX, OS/2) |
reiser4progs
|
V:0, I:1 | 1367 | verktyg för Reiser4-filsystemet |
hfsprogs
|
V:0, I:3 | 394 | verktyg för filsystemet HFS och HFS Plus. (Apple: Mac OS) |
zerofree
|
V:5, I:122 | 30 | program för att nollställa fria block från ext2/3/4-filsystem |
|
Tips |
|---|---|
|
Ext4-filsystemet är standardfilsystemet för Linux-systemet och rekommenderas starkt att använda det om du inte har några specifika skäl att inte göra det. Status för btrfs finns på Debian wiki on btrfs och kernel.org wiki on btrfs. Det förväntas bli nästa standardfilsystem efter ext4-filsystemet. Vissa verktyg ger åtkomst till filsystem utan stöd från Linux-kärnan (se Avsnitt 9.8.2, ”Manipulera filer utan att montera disk”). |
Kommandot mkfs(8) skapar filsystemet på ett
Linux-system. Med kommandot fsck(8) kan du kontrollera
och reparera filsystemets integritet på ett Linux-system.
Debian använder nu som standard ingen periodisk fsck
efter skapande av filsystem.
|
Observera |
|---|---|
|
Det är i allmänhet inte säkert att köra |
|
Tips |
|---|---|
|
Du kan köra kommandot Kontrollera filerna i " |
Den grundläggande konfigurationen av ett statiskt filsystem anges i
"/etc/fstab". Till exempel,
«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
|
Tips |
|---|---|
|
UUID (se Avsnitt 9.6.3, ”Åtkomst till partition med hjälp av UUID”) kan användas för att
identifiera en blockenhet i stället för normala blockenhetsnamn som
" |
Sedan Linux 2.6.30 använder kärnan som standard det beteende som anges i
alternativet "relatime".
Se fstab(5) och mount(8).
Egenskaperna hos ett filsystem kan optimeras via dess superblock med hjälp
av kommandot tune2fs(8).
När "sudo tune2fs -l /dev/hda1" körs visas innehållet i
filsystemets superblock på "/dev/hda1".
Genom att köra "sudo tune2fs -c 50 /dev/hda1" ändras
frekvensen för filsystemkontroller(fsck körs under
uppstart) till var 50:e uppstart på "/dev/hda1".
Genom att köra "sudo tune2fs -j /dev/hda1" läggs
journaliseringskapacitet till filsystemet, dvs. filsystemet konverteras från
ext2 till ext3 på
"/dev/hda1". (Gör detta på det omonterade filsystemet.)
Utförandet av "sudo tune2fs -O extents,uninit_bg,dir_index
/dev/hda1 && fsck -pf /dev/hda1" konverterar det från
ext3 till ext4 på
"/dev/hda1". (Gör detta på det omonterade filsystemet.)
|
Tips |
|---|---|
|
Trots sitt namn fungerar |
|
Varning |
|---|---|
|
Kontrollera din maskinvara och läs manpage för |
Du kan testa diskåtkomsthastigheten för en hårddisk,
t.ex. "/dev/hda", med "hdparm -tT
/dev/hda". För vissa hårddiskar som är anslutna till (E)IDE kan du
snabba upp den med "hdparm -q -c3 -d1 -u1 -m16 /dev/hda"
genom att aktivera "(E)IDE 32-bitars I/O-stöd", aktivera
"using_dma-flaggan", ställa in "interrupt-unmask-flaggan" och ställa in
"multiple 16 sector I/O" (farligt!).
Du kan testa skrivcache-funktionen på en hårddisk,
t.ex. "/dev/sda", med "hdparm -W
/dev/sda". Du kan inaktivera dess skrivcachefunktion med
"hdparm -W 0 /dev/sda".
Du kanske kan läsa dåligt pressade CDROM-skivor på en modern CD-ROM-enhet
med hög hastighet genom att sakta ner den med "setcd -x
2".
SSD-enheten (Solid State Drive) upptäcks automatiskt nu.
Minska onödiga diskåtkomster för att förhindra att disken slits ut genom att
montera "tmpfs" på den flyktiga datasökvägen i
/etc/fstab.
Du kan övervaka och logga din SMART-kompatibla
hårddisk med hjälp av daemon smartd(8).
Aktivera SMART-funktionen i BIOS.
Installera paketet smartmontools.
Identifiera dina hårddiskar genom att lista dem med
df(1).
Låt oss anta att en hårddisk som ska övervakas heter
"/dev/hda".
Kontrollera utdata från "smartctl -a /dev/hda" för att se
om SMART-funktionen faktiskt är aktiverad.
Om inte, aktivera den genom att "smartctl -s on -a
/dev/hda".
Aktivera smartd(8) daemon att köras genom att göra
följande.
kommentera bort "start_smartd=yes" i filen
"/etc/default/smartmontools".
starta om daemon smartd(8) med "sudo systemctl
restart smartmontools".
|
Tips |
|---|---|
|
|
Program skapar normalt temporära filer under den temporära lagringskatalogen
"/tmp". Om "/tmp" inte ger
tillräckligt med utrymme kan du ange en sådan katalog för tillfällig lagring
via variabeln $TMPDIR för väluppfostrade program.
För partitioner som skapas med LVM (Logical Volume Manager) (Linux-funktion) vid installationstillfället kan storleken enkelt ändras genom att sammanlänka extenter till dem eller avkorta extenter från dem över flera lagringsenheter utan större omkonfigurering av systemet.
Om du har en tom partition (t.ex. "/dev/sdx") kan du
formatera den med mkfs.ext4(1) och
mount(8) den till en katalog där du behöver mer
utrymme. (Du måste kopiera det ursprungliga datainnehållet.)
$ 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
|
Tips |
|---|---|
|
Alternativt kan du montera en tom diskavbildningsfil (se Avsnitt 9.7.5, ”Skapa en tom diskavbildningsfil”) som en loop-enhet (se Avsnitt 9.7.3, ”Montering av diskavbildningsfilen”). Den faktiska diskanvändningen växer med de faktiska data som lagras. |
Om du har en tom katalog (t.ex. "/path/to/emp-dir") på en
annan partition med användbart utrymme kan du montera(8) den med
alternativet "--bind" till en katalog
(t.ex. "work-dir") där du behöver mer utrymme.
$ sudo mount --bind /path/to/emp-dir work-dir
Om du har användbart utrymme i en annan partition
(t.ex. "/path/to/empty" och
"/path/to/work") kan du skapa en katalog i den och stapla
den på en gammal katalog (t.ex. "/path/to/old") där du
behöver utrymme med hjälp av OverlayFS för
Linux-kärnan 3.18 eller nyare (Debian Stretch 9.0 eller nyare).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Här bör "/path/to/empty" och
"/path/to/work" finnas på den RW-aktiverade partitionen
för att skriva på "/path/to/old".
|
Observera |
|---|---|
|
Detta är en föråldrad metod. Vissa program kanske inte fungerar bra med "symlänk till en katalog". Använd istället "mounting"-metoderna som beskrivs i avsnittet ovan. |
Om du har en tom katalog (t.ex. "/path/to/emp-dir") i en
annan partition med användbart utrymme kan du skapa en symlänk till
katalogen med ln(8).
$ 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
|
Varning |
|---|---|
|
Använd inte "symlänk till en katalog" för kataloger som hanteras av
systemet, t.ex. " |
Här diskuterar vi manipuleringar av diskavbildningen.
Diskavbildningsfilen "disk.img" för en omonterad enhet,
t.ex. den andra SCSI- eller seriella ATA-enheten
"/dev/sdb", kan skapas med hjälp av
cp(1) eller dd(1) på följande sätt.
# cp /dev/sdb disk.img # dd if=/dev/sdb of=disk.img
Skivavbildningen av den traditionella datorns Master Boot Record (MBR) (se Avsnitt 9.6.2, ”Konfiguration av diskpartitioner”) som finns i den första sektorn på
den primära IDE-disken kan skapas med dd(1) på följande
sätt.
# 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": MBR med partitionstabellen
"mbr-nopart.img": MBR utan partitionstabell
"mbr-part.img": Endast partitionstabellen för MBR
Om du har en SCSI- eller seriell ATA-enhet som startdiskett ersätter du
"/dev/hda" med "/dev/sda".
Om du gör en avbildning av en diskpartition på originaldisken ersätter du
"/dev/hda" med "/dev/hda1" osv.
Diskavbildningsfilen "disk.img" kan skrivas till en
omonterad enhet, t.ex. den andra SCSI-enheten "/dev/sdb"
med motsvarande storlek, på följande sätt.
# dd if=disk.img of=/dev/sdb
På samma sätt kan diskpartitionsbildfilen "partition.img"
skrivas till en omonterad partition, t.ex. den första partitionen i den
andra SCSI-enheten "/dev/sdb1" med matchande storlek, på
följande sätt.
# dd if=partition.img of=/dev/sdb1
Diskavbildningen "partition.img" som innehåller en enda
partitionsavbildning kan monteras och avmonteras med hjälp av loop-enheten på följande sätt.
# losetup --show -f partition.img /dev/loop0 # mkdir -p /mnt/loop0 # mount -t auto /dev/loop0 /mnt/loop0 ...hack...hack...hack # umount /dev/loop0 # losetup -d /dev/loop0
Detta kan förenklas på följande sätt.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.img
Varje partition i diskavbildningen "disk.img" som
innehåller flera partitioner kan monteras med hjälp av loop-enheten.
# losetup --show -f -P disk.img /dev/loop0 # ls -l /dev/loop0* brw-rw---- 1 root disk 7, 0 Apr 2 22:51 /dev/loop0 brw-rw---- 1 root disk 259, 12 Apr 2 22:51 /dev/loop0p1 brw-rw---- 1 root disk 259, 13 Apr 2 22:51 /dev/loop0p14 brw-rw---- 1 root disk 259, 14 Apr 2 22:51 /dev/loop0p15 # fdisk -l /dev/loop0 Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1 Device Start End Sectors Size Type /dev/loop0p1 262144 4192255 3930112 1.9G Linux root (x86-64) /dev/loop0p14 2048 8191 6144 3M BIOS boot /dev/loop0p15 8192 262143 253952 124M EFI System Partition table entries are not in disk order. # mkdir -p /mnt/loop0p1 # mkdir -p /mnt/loop0p15 # mount -t auto /dev/loop0p1 /mnt/loop0p1 # mount -t auto /dev/loop0p15 /mnt/loop0p15 # mount |grep loop /dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime) /dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro) ...hack...hack...hack # umount /dev/loop0p1 # umount /dev/loop0p15 # losetup -d /dev/loop0
Alternativt kan liknande effekter åstadkommas genom att använda device mapper-enheter som skapats av
kpartx(8) från kpartx-paketet enligt
följande.
# kpartx -a -v disk.img add map loop0p1 (253:0): 0 3930112 linear 7:0 262144 add map loop0p14 (253:1): 0 6144 linear 7:0 2048 add map loop0p15 (253:2): 0 253952 linear 7:0 8192 # fdisk -l /dev/loop0 Disk /dev/loop0: 2 GiB, 2147483648 bytes, 4194304 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 6A1D9E28-C48C-2144-91F7-968B3CBC9BD1 Device Start End Sectors Size Type /dev/loop0p1 262144 4192255 3930112 1.9G Linux root (x86-64) /dev/loop0p14 2048 8191 6144 3M BIOS boot /dev/loop0p15 8192 262143 253952 124M EFI System Partition table entries are not in disk order. # ls -l /dev/mapper/ total 0 crw------- 1 root root 10, 236 Apr 2 22:45 control lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p1 -> ../dm-0 lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p14 -> ../dm-1 lrwxrwxrwx 1 root root 7 Apr 2 23:19 loop0p15 -> ../dm-2 # mkdir -p /mnt/loop0p1 # mkdir -p /mnt/loop0p15 # mount -t auto /dev/mapper/loop0p1 /mnt/loop0p1 # mount -t auto /dev/mapper/loop0p15 /mnt/loop0p15 # mount |grep loop /dev/loop0p1 on /mnt/loop0p1 type ext4 (rw,relatime) /dev/loop0p15 on /mnt/loop0p15 type vfat (rw,relatime,fmask=0002,dmask=0002,allow_utime=0020,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro) ...hack...hack...hack # umount /dev/mapper/loop0p1 # umount /dev/mapper/loop0p15 # kpartx -d disk.img
En diskavbildningsfil, "disk.img", kan rensas från alla
borttagna filer till en ren, gles avbildning, "new.img",
på följande sätt.
# 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
Om "disk.img" är i ext2, ext3 eller ext4 kan du också
använda zerofree(8) från
zerofree-paketet enligt följande.
# losetup --show -f disk.img /dev/loop0 # zerofree /dev/loop0 # cp --sparse=always disk.img new.img # losetup -d /dev/loop0
Den tomma diskavbildningen "disk.img" som kan växa upp
till 5GiB kan skapas med dd(1) på följande sätt.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
Istället för att använda dd(1) kan den specialiserade
fallocate(8) användas här.
Du kan skapa ett ext4-filsystem på den här diskavbildningen
"disk.img" med hjälp av loop-enheten på följande sätt.
# losetup --show -f disk.img /dev/loop0 # mkfs.ext4 /dev/loop0 ...hack...hack...hack # losetup -d /dev/loop0 $ du --apparent-size -h disk.img 5.0G disk.img $ du -h disk.img 83M disk.img
För "disk.img" är filstorleken 5,0 GiB och den faktiska
diskanvändningen är bara 83MiB. Denna avvikelse är möjlig eftersom ext4 kan hålla glesa
filer.
|
Tips |
|---|---|
|
Den faktiska diskanvändningen för sparse file växer med data som skrivs till den. |
Genom att använda liknande åtgärder på enheter som skapats av loop-enheten eller enhetsmappningsenheterna som Avsnitt 9.7.3, ”Montering av diskavbildningsfilen” kan du partitionera
diskavbildningen "disk.img" med hjälp av
parted(8) eller fdisk(8) och skapa filsystem på
den med hjälp av mkfs.ext4(8),
mkswap(8), etc.
ISO9660-bildfilen,
"cd.iso", från källkatalogträdet i
"source_directory" kan skapas med hjälp av
genisoimage(1) från cdrkit
på följande sätt.
# genisoimage -r -J -T -V volume_id -o cd.iso source_directory
På samma sätt kan den startbara ISO9660-bildfilen,
"cdboot.iso", skapas från
debian-installer-liknande katalogträd i
"source_directory" genom följande.
# 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
Här används Isolinux boot loader (se Avsnitt 3.1.2, ”Steg 2: startladdaren”) för uppstart.
Du kan beräkna md5sum-värdet och skapa ISO9660-bilden direkt från CD-ROM-enheten på följande sätt.
$ 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
|
Varning |
|---|---|
|
Du måste noggrant undvika ISO9660 filsystem read ahead bug i Linux enligt ovan för att få rätt resultat. |
|
Tips |
|---|---|
|
DVD är bara en stor CD till |
Du kan hitta en användbar enhet genom att göra följande.
# wodim --devices
Sedan sätts den tomma CD-R:n i CD-enheten och ISO9660-bildfilen
"cd.iso" skrivs till den här enheten,
t.ex. "/dev/hda", med wodim(1) på
följande sätt.
# wodim -v -eject dev=/dev/hda cd.iso
Om CD-RW används i stället för CD-R, gör du i stället på följande sätt.
# wodim -v -eject blank=fast dev=/dev/hda cd.iso
|
Tips |
|---|---|
|
Om ditt skrivbordssystem monterar CD-skivor automatiskt ska du avmontera dem
genom att " |
Om "cd.iso" innehåller en ISO9660-avbildning, monteras
den manuellt till "/cdrom" på följande sätt.
# mount -t iso9660 -o ro,loop cd.iso /cdrom
|
Tips |
|---|---|
|
Moderna skrivbordssystem kan automatiskt montera flyttbara media, t.ex. ISO9660-formaterade CD-skivor (se Avsnitt 10.1.7, ”Flyttbar lagringsenhet”). |
Här diskuterar vi direkta manipulationer av binärdata på lagringsmedia.
Den mest grundläggande visningsmetoden för binära data är att använda
kommandot "od -t x1".
Tabell 9.21. Lista över paket som visar och redigerar binära data
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
coreutils
|
V:897, I:999 | 18457 | grundläggande paket som har od(1) för att dumpa filer
(HEX, ASCII, OCTAL, ...) |
bsdmainutils
|
V:4, I:163 | 17 | verktygspaket som har hd(1) för att dumpa filer (HEX,
ASCII, OCTAL, ...) |
hexedit
|
V:0, I:8 | 70 | binär editor och viewer (HEX, ASCII) |
bless
|
V:0, I:1 | 924 | fullfjädrad hexadecimalredigerare (GNOME) |
okteta
|
V:1, I:13 | 1590 | fullfjädrad hexadecimal editor (KDE4) |
ncurses-hexedit
|
V:0, I:1 | 130 | binär editor och viewer (HEX, ASCII, EBCDIC) |
beav
|
V:0, I:0 | 137 | binär editor och viewer (HEX, ASCII, EBCDIC, OCTAL, ...) |
|
Tips |
|---|---|
|
HEX används som en förkortning för hexadecimalt format med radix 16. OCTAL används för oktalt format med radix 8. ASCII används för American Standard Code for Information Interchange, dvs. normal engelsk textkod. EBCDIC är för Extended Binary Coded Decimal Interchange Code som används på IBM mainframe operativsystem. |
Det finns verktyg för att läsa och skriva filer utan att montera disken.
RAID-system för programvara som erbjuds av Linux-kärnan ger dataredundans på filsystemnivå för att uppnå höga nivåer av lagringstillförlitlighet.
Det finns också verktyg för att lägga till dataredundans i filer på applikationsprogramnivå för att uppnå höga nivåer av lagringstillförlitlighet.
Tabell 9.23. Lista över verktyg för att lägga till dataredundans i filer
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
par2
|
V:11, I:119 | 292 | Parity Archive Volume Set, för kontroll och reparation av filer |
dvdisaster
|
V:0, I:1 | 1422 | skydd mot dataförlust/skrap/åldring för CD/DVD-media |
dvbackup
|
V:0, I:0 | 413 | backupverktyg som använder MiniDV-videokameror (tillhandahåller
rsbep(1)) |
Det finns verktyg för återställning av datafiler och kriminalteknisk analys.
Tabell 9.24. Lista över paket för återställning av datafiler och kriminalteknisk analys
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
testdisk
|
V:2, I:27 | 1495 | verktyg för partitionsskanning och diskåterställning |
magicrescue
|
V:0, I:2 | 258 | verktyg för att återställa filer genom att leta efter magiska byte |
scalpel
|
V:0, I:2 | 89 | sparsam, högpresterande filhuggare |
myrescue
|
V:0, I:2 | 83 | rädda data från skadade hårddiskar |
extundelete
|
V:0, I:8 | 152 | verktyg för att återställa filer på ext3/4-filsystemet |
ext4magic
|
V:0, I:3 | 235 | verktyg för att återställa filer på ext3/4-filsystemet |
ext3grep
|
V:0, I:2 | 299 | verktyg som hjälper till att återställa raderade filer på ext3-filsystemet |
scrounge-ntfs
|
V:0, I:1 | 49 | program för dataåterställning för NTFS-filsystem |
gzrt
|
V:0, I:0 | 33 | verktyg för gzip-återställning |
sleuthkit
|
V:2, I:24 | 1719 | verktyg för kriminalteknisk analys. (Sleuthkit) |
autopsy
|
V:0, I:1 | 1026 | grafiskt gränssnitt till SleuthKit |
foremost
|
V:0, I:4 | 102 | kriminalteknisk applikation för att återställa data |
guymager
|
V:0, I:0 | 1047 | verktyg för kriminalteknisk avbildning baserat på Qt |
dcfldd
|
V:0, I:3 | 113 | förbättrad version av dd för kriminalteknik och säkerhet |
|
Tips |
|---|---|
|
Du kan återställa filer i ext2-filsystemet med hjälp av kommandona
|
När en data är för stor för att säkerhetskopiera som en enda fil kan du säkerhetskopiera innehållet efter att ha delat upp det i t.ex. 2000MiB bitar och slå samman dessa bitar tillbaka till originalfilen senare.
$ split -b 2000m large_file $ cat x* >large_file
|
Observera |
|---|---|
|
Se till att du inte har några filer som börjar med " |
Om du vill rensa innehållet i en fil, t.ex. en loggfil, ska du inte använda
rm(1) för att radera filen och sedan skapa en ny tom fil,
eftersom filen fortfarande kan nås under tiden mellan kommandona. Följande
är det säkra sättet att rensa innehållet i filen.
$ :>file_to_be_cleared
Följande kommandon skapar dummyfiler eller tomma filer.
$ 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
Du bör hitta följande filer.
"5kb.file" är 5KB med nollor.
"7mb.file" är 7MB slumpmässig data.
"zero.file" kan vara en fil på 0 byte. Om den existerade
uppdateras dess mtime medan dess innehåll och längd
behålls.
"alwayszero.file" är alltid en fil med 0 byte. Om den
existerade uppdateras dess mtime och dess innehåll
nollställs.
Det finns flera sätt att helt radera data från en hel hårddisk som enhet,
t.ex. USB-minne på "/dev/sda".
|
Observera |
|---|---|
|
Kontrollera först USB-minnets plats med |
Radera allt innehåll på hårddisken genom att återställa data till 0 med följande.
# dd if=/dev/zero of=/dev/sda
Radera allt genom att skriva över med slumpmässiga data enligt följande.
# dd if=/dev/urandom of=/dev/sda
Radera allt genom att skriva över med slumpmässiga data på ett mycket effektivt sätt enligt följande.
# shred -v -n 1 /dev/sda
Alternativt kan du använda badblocks(8) med flaggan
-t random.
Eftersom dd(1) finns tillgänglig i skalet på många
startbara Linux-CD-skivor, t.ex. Debians installations-CD, kan du radera
ditt installerade system helt genom att köra ett raderingskommando från ett
sådant media på systemets hårddisk, t.ex. "/dev/hda",
"/dev/sda", etc.
Oanvända områden på en hårddisk (eller ett USB-minne),
t.ex. "/dev/sdb1", kan fortfarande innehålla raderade
data eftersom de bara är olänkade från filsystemet. Dessa kan rensas genom
att skriva över dem.
# 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
|
Varning |
|---|---|
|
Detta är vanligtvis tillräckligt bra för ditt USB-minne. Men det är inte perfekt. De flesta delar av raderade filnamn och deras attribut kan vara dolda och ligga kvar i filsystemet. |
Även om du av misstag har raderat en fil, så länge filen fortfarande används av något program (läs- eller skrivläge), är det möjligt att återställa en sådan fil.
Försök till exempel med följande
$ 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
Gör så här på en annan terminal (när du har lsof-paketet
installerat).
$ 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
Filer med hårda länkar kan identifieras med "ls -li".
$ 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
Både "baz" och "foo" har länkantal på
"2" (>1) vilket visar att de har hårda länkar. Deras inodnummer är gemensamma "2738404". Detta betyder att
de är samma hårdlänkade fil. Om du inte råkar hitta alla hårdlänkade filer
av en slump kan du söka efter inode,
t.ex. "2738404" enligt följande.
# find /path/to/mount/point -xdev -inum 2738404
Med fysisk tillgång till din dator kan vem som helst enkelt få root-behörighet och komma åt alla filer på din dator (se Avsnitt 4.6.4, ”Säkra lösenordet för root”). Det innebär att ett system med inloggningslösenord inte kan skydda dina privata och känsliga data mot eventuell stöld av din dator. Du måste använda datakrypteringsteknik för att göra det. GNU privacy guard (se Avsnitt 10.3, ”Infrastruktur för datasäkerhet”) kan visserligen kryptera filer, men det kräver en del arbete av användaren.
Dm-crypt underlättar automatisk datakryptering via inbyggda Linux-kärnmoduler med minimal användarinsats med hjälp av device-mapper.
Tabell 9.25. Lista över verktyg för datakryptering
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
cryptsetup
|
V:16, I:81 | 463 | verktyg för krypterad blockenhet(dm-crypt / LUKS) |
cryptmount
|
V:2, I:2 | 231 | verktyg för krypterade blockenheter(dm-crypt / LUKS) med fokus på montering/avmontering av vanliga användare |
fscrypt
|
V:0, I:1 | 6471 | verktyg för kryptering av Linux-filsystem(fscrypt) |
libpam-fscrypt
|
V:0, I:0 | 5589 | PAM-modul för kryptering av Linux-filsystem(fscrypt) |
|
Observera |
|---|---|
|
Datakryptering kostar CPU-tid etc. Krypterad data blir oåtkomlig om lösenordet förloras. Vänligen väga dess fördelar och kostnader. |
|
Notera |
|---|---|
|
Hela Debian-systemet kan installeras på en krypterad disk med debian-installer (lenny eller nyare) med hjälp av dm-crypt/LUKS och initramfs. |
|
Tips |
|---|---|
|
Se Avsnitt 10.3, ”Infrastruktur för datasäkerhet” för verktyg för kryptering av användarutrymme: GNU Privacy Guard. |
Du kan kryptera innehållet i flyttbara massmediaenheter, t.ex. ett USB-minne
på "/dev/sdx", med hjälp av dm-crypt/LUKS. Du
formaterar den helt enkelt enligt följande.
# 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
Sedan kan den monteras precis som en vanlig disk på
"/media/användarnamn/disk_label", förutom att
man måste fråga efter lösenordet (se Avsnitt 10.1.7, ”Flyttbar lagringsenhet”) i en modern skrivbordsmiljö med hjälp
av udisks2-paketet. Skillnaden är att alla data som
skrivs till den är krypterade. Lösenordsinmatningen kan automatiseras med
hjälp av keyring (se Avsnitt 10.3.6, ”Nyckelring för lösenord”).
Alternativt kan du formatera media i ett annat filsystem, t.ex. ext4 med
"mkfs.ext4 /dev/mapper/sdx1". Om btrfs används i stället
måste paketet udisks2-btrfs installeras. För dessa
filsystem kan filägande och behörigheter behöva konfigureras.
En krypterad diskpartition som skapats med dm-crypt/LUKS på
"/dev/sdc5" av Debian Installer kan t.ex. monteras på
"/mnt" enligt följande:
$ 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 distribuerar den modulariserade Linuxkärnan som paket för de arkitekturer som stöds.
Om du läser den här dokumentationen behöver du förmodligen inte kompilera Linux-kärnan själv.
Många Linux-funktioner är konfigurerbara via kärnparametrar enligt följande.
Kärnparametrar som initieras av bootloader (se Avsnitt 3.1.2, ”Steg 2: startladdaren”)
Kärnparametrar som ändras av sysctl(8) vid körning för de
som är tillgängliga via sysfs (se Avsnitt 1.2.12, ”procfs och sysfs”)
Modulparametrar som ställs in med argument från
modprobe(8) när en modul aktiveras (se Avsnitt 9.7.3, ”Montering av diskavbildningsfilen”)
Se"Linux-kärnans användar- och administratörshandbok " " Kärnans kommandoradsparametrar" för mer information.
De flesta normala program behöver inte
kärnhuvuden och kan i själva verket gå sönder om du använder dem direkt för
kompilering. De bör kompileras mot headern i
"/usr/include/linux" och
"/usr/include/asm" som tillhandahålls av
libc6-dev-paketet (skapat från källkodspaketet
glibc ) på Debian-systemet.
|
Notera |
|---|---|
|
För att kompilera vissa kärnspecifika program, t.ex. kärnmoduler från extern
källa och automounter-daemon |
Debian har sin egen metod för att kompilera kärnan och relaterade moduler.
Tabell 9.26. Lista över viktiga paket som ska installeras för omkompilering av kärnan på Debian-systemet
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
build-essential
|
I:505 | 17 | nödvändiga paket för att bygga Debian-paket: make,
gcc, … |
bzip2
|
V:165, I:971 | 113 | verktyg för komprimering och dekomprimering av bz2-filer |
libncurses5-dev
|
I:44 | 6 | utvecklares bibliotek och dokument för ncurses |
git
|
V:379, I:598 | 50172 | git: distribuerat revisionskontrollsystem som används av Linux-kärnan |
fakeroot
|
V:30, I:509 | 225 | tillhandahålla fakeroot-miljö för att bygga paket som icke-root |
initramfs-tools
|
V:422, I:988 | 52 | verktyg för att bygga en initramfs (Debian-specifikt) |
dkms
|
V:56, I:148 | 235 | dKMS (dynamiskt stöd för kärnmoduler) (generisk) |
module-assistant
|
V:0, I:14 | 391 | hjälpverktyg för att skapa modulpaket (Debian-specifikt) |
devscripts
|
V:5, I:34 | 2768 | hjälpskript för en underhållare av Debian-paket (Debian-specifikt) |
Om du använder initrd i Avsnitt 3.1.2, ”Steg 2: startladdaren”, se till att läsa relaterad information
i initramfs-tools(8),
update-initramfs(8), mkinitramfs(8)
och initramfs.conf(5).
|
Varning |
|---|---|
|
Lägg inte in symlinks till katalogerna i källträdet
(t.ex. " |
|
Notera |
|---|---|
|
Vid kompilering av den senaste Linux-kärnan på Debian
DKMS (Dynamic Kernel Module Support) är ett nytt distributionsoberoende ramverk som gör det möjligt att uppgradera enskilda kernelmoduler utan att ändra hela kerneln. Detta används för underhåll av out-of-tree-moduler. Det gör det också mycket enkelt att bygga om moduler när man uppgraderar kärnan. |
För att bygga anpassade binära kärnpaket från uppströms kärnkälla bör du
använda "deb-pkg"-målet som tillhandahålls av den.
$ sudo apt-get build-dep linux $ cd /usr/src $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-version.tar.xz $ tar --xz -xvf linux-version.tar.xz $ cd linux-version $ cp /boot/config-version .config $ make menuconfig ... $ make deb-pkg
|
Tips |
|---|---|
|
Paketet linux-source-version tillhandahåller
Linux-kärnkällan med Debian-patchar som
" |
För att bygga specifika binära paket från Debian-kärnans källkodspaket bör
du använda målen
"binary-arch_arkitektur_featureset_variant"
i debian/rules.gen".
$ sudo apt-get build-dep linux $ apt-get source linux $ cd linux-3.* $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686
Se ytterligare information:
Debian Wiki: KernelFAQ
Debian Wiki: DebianKernel
Handbok för Debians Linuxkärnor: https://kernel-handbook.debian.net
Maskinvarudrivrutinen är den kod som körs på målsystemets
huvudprocessorer. De flesta maskinvarudrivrutiner finns nu tillgängliga som
fri programvara och ingår i de normala Debian-kärnpaketen i
main.
Intel GPU-drivrutin (main)
AMD/ATI GPU-drivrutin (main)
NVIDIA GPU-drivrutin (main för drivrutinen nouveau och non-free för binära
drivrutiner som stöds av tillverkaren.)
Den fasta programvaran är den kod eller de data som laddas på den enhet som är kopplad till målsystemet (t.ex. CPU:ns mikrokod, renderingskod som körs på GPU, eller FPGA / CPLD, ...). Vissa paket med fast programvara är tillgängliga som fri programvara, men många paket för fast programvara är inte tillgängliga som fri programvara eftersom de innehåller binära data utan källa. Installation av dessa datapaket med fast programvara är nödvändig för att enheten ska fungera som förväntat.
Datapaket för fast programvara som innehåller data som laddats till det flyktiga minnet på målenheten.
firmware-linux-free (main)
firmware-linux-nonfree(icke-fri-firmware)
firmware-linux-*(icke-fri firmware)
*-firmware(icke-fri-firmware)
intel-mikrokod(icke-fri firmware)
amd64-mikrokod(icke-fri firmware)
Programpaket för uppdatering av fast programvara som uppdaterar data i det icke-flyktiga minnet på målenheten.
fwupd (main): Demon för
uppdatering av fast programvara som hämtar data om fast programvara från
Linux Vendor Firmware
Service.
gnome-firmware (main): GTK-frontend för fwupd
plasma-discover-backend-fwupd (main): Qt-frontend för
fwupd
Observera att åtkomst till icke-firmware-paket
tillhandahålls av det officiella installationsmediet för att erbjuda en
funktionell installationsupplevelse för användaren sedan Debian 12
Bookworm. Området för non-free programvaror beskrivs i
Avsnitt 2.1.5, ”Grunderna i Debian-arkivet”.
Observera också att de data om fast programvara som hämtas av fwupd från Linux Vendor Firmware Service och
laddas till den Linux-kärna som körs kan vara non-free.
Genom att använda ett virtualiserat system kan vi köra flera instanser av systemet samtidigt på en enda maskinvara.
|
Tips |
|---|---|
Det finns flera olika plattformar för virtualiserings- och emuleringsverktyg.
Kompletta hårdvaruemuleringspaket, t.ex. de som installeras av metapaketet games-emulator
Mestadels emulering på CPU-nivå med vissa emuleringar av I/O-enheter, t.ex. QEMU
Mestadels virtualisering på CPU-nivå med vissa emuleringar av I/O-enheter, t.ex. Kernel-based Virtual Machine (KVM)
Containervirtualisering på OS-nivå med stöd på kärnnivå, t.ex. LXC (Linux Containers), Docker, systemd-nspawn(1), ...
Virtualisering av filsystemåtkomst på OS-nivå med åsidosättande av systembiblioteksanrop på filsökvägen, t.ex. chroot
Virtualisering av filsystemåtkomst på OS-nivå med systembiblioteksanrop som åsidosätter filägandet, t.ex. fakeroot
OS API-emulering som till exempel Wine
Virtualisering på tolkningsnivå med dess val av körbar fil och åsidosättande av körtidsbibliotek, t.ex. virtualenv och venv för Python
Containervirtualisering använder Avsnitt 4.7.5, ”Säkerhetsfunktioner i Linux” och är backend-tekniken för Avsnitt 7.7, ”Sandlåda”.
Här följer några paket som hjälper dig att konfigurera det virtualiserade systemet.
Tabell 9.27. Lista över virtualiseringsverktyg
| paket | popcon | storlek | beskrivning |
|---|---|---|---|
coreutils
|
V:897, I:999 | 18457 | GNU core-verktyg som innehåller chroot(8) |
systemd-container
|
V:72, I:76 | 2264 | systemd container/nspawn verktyg som innehåller
systemd-nspawn(1) |
schroot
|
V:5, I:7 | 2627 | specialiserat verktyg för att köra Debians binära paket i chroot |
sbuild
|
V:1, I:4 | 157 | verktyg för att bygga binära Debian-paket från Debian-källor |
debootstrap
|
V:4, I:48 | 330 | starta upp ett grundläggande Debian-system (skrivet i sh) |
cdebootstrap
|
V:0, I:1 | 114 | bootstrappa ett Debian-system (skrivet i C) |
cloud-image-utils
|
V:1, I:15 | 66 | verktyg för bildhantering i molnet |
cloud-guest-utils
|
V:2, I:18 | 71 | verktyg för molngäster |
virt-manager
|
V:11, I:49 | 2310 | Virtual Machine Manager: skrivbordsprogram för hantering av virtuella maskiner |
libvirt-clients
|
V:48, I:72 | 1154 | program för libvirt-biblioteket |
incus
|
V:0, I:2 | 21 | Incus: systembehållare och virtuell maskinhanterare (för Debian 13 "Trixie") |
lxd
|
V:0, I:0 | 55606 | LXD: systembehållare och hantering av virtuella maskiner (för Debian 12 "Bookworm") |
podman
|
V:24, I:27 | 81828 | podman: motor för att köra OCI-baserade behållare i Pods |
podman-docker
|
V:2, I:2 | 275 | motor för att köra OCI-baserade containrar i Pods - wrapper för docker |
docker.io
|
V:45, I:47 | 95958 | docker: Körprogram för Linux-containrar |
games-emulator
|
I:0 | 21 | spel-emulator: Debians emulatorer för spel |
bochs
|
V:0, I:0 | 8180 | Bochs: IA-32 PC-emulator |
qemu-system
|
I:23 | 80 | QEMU: binärfiler för fullständig systememulering |
qemu-user
|
V:5, I:9 | 472779 | QEMU: binärfiler för emulering i användarläge |
qemu-utils
|
V:13, I:110 | 12161 | QEMU: verktyg |
qemu-system-x86
|
V:53, I:94 | 67511 | KVM: full virtualisering på x86-hårdvara med hårdvaruassisterad virtualisering |
virtualbox
|
V:4, I:5 | 154064 | VirtualBox: lösning för x86-virtualisering på i386 och amd64 |
gnome-boxes
|
V:1, I:7 | 6847 | Lådor: Enkel GNOME-app för åtkomst till virtuella system |
xen-tools
|
V:0, I:1 | 719 | verktyg för att hantera debian XEN virtuell server |
wine
|
V:13, I:57 | 204 | Vin: Implementering av Windows API (standardpaket) |
dosbox
|
V:1, I:13 | 2697 | DOSBox: x86-emulator med Tandy/Herc/CGA/EGA/VGA/SVGA-grafik, ljud och DOS |
lxc
|
V:9, I:12 | 1626 | Linux-containrar verktyg för användarutrymme |
python3-venv
|
I:132 | 6 | venv för att skapa virtuella pythonmiljöer (systembibliotek) |
python3-virtualenv
|
V:8, I:43 | 379 | virtualenv för att skapa isolerade virtuella pythonmiljöer |
pipx
|
V:6, I:42 | 3613 | pipx för installation av python-program i isolerade miljöer |
Se Wikipedia-artikeln Comparison of platform virtual machines för en detaljerad jämförelse av olika lösningar för plattformsvirtualisering.
|
Notera |
|---|---|
|
Debians standardkärnor stöder KVM sedan
|
Ett typiskt arbetsflöde för virtualisering omfattar flera steg.
Skapa ett tomt filsystem (ett filträd eller en diskavbildning).
Filträdet kan skapas genom "mkdir -p /path/to/chroot".
Den obearbetade diskavbildningsfilen kan skapas med dd(1)
(se Avsnitt 9.7.1, ”Skapa en diskavbildningsfil” och Avsnitt 9.7.5, ”Skapa en tom diskavbildningsfil”).
qemu-img(1) kan användas för att skapa och konvertera
diskavbildningsfiler som stöds av QEMU.
Filformaten raw och VMDK kan användas som gemensamma format bland virtualiseringsverktyg.
Montera diskavbildningen med mount(8) till filsystemet
(valfritt).
För den råa diskavbildningsfilen, montera den som loop-enhet eller enhetsmappningsenheter (se Avsnitt 9.7.3, ”Montering av diskavbildningsfilen”).
För diskavbildningar som stöds av QEMU, montera dem som nätverksblockenheter (se Avsnitt 9.11.3, ”Montering av avbildningsfilen för den virtuella disken”).
Fyll på målfilsystemet med nödvändiga systemdata.
Användningen av program som debootstrap och
cdebootstrap hjälper till med denna process (se Avsnitt 9.11.4, ”Chroot-system”).
Använd installatörer av operativsystem under fullständig systememulering.
Kör ett program i en virtualiserad miljö.
chroot ger en grundläggande virtualiserad miljö som är tillräcklig för att kompilera program, köra konsolprogram och köra daemoner i den.
QEMU tillhandahåller CPU-emulering över flera plattformar.
QEMU med KVM ger fullständig systememulering genom maskinvaruassisterad virtualisering.
VirtualBox tillhandahåller fullständig systememulering på i386 och amd64 med eller utan maskinvarustödd virtualisering.
För den råa diskavbildningsfilen, se Avsnitt 9.7, ”Diskavbildningen”.
För andra virtuella diskavbildningsfiler kan du använda
qemu-nbd(8) för att exportera dem med hjälp av network block device protocol och montera
dem med hjälp av nbd-kärnmodulen.
qemu-nbd(8) stöder diskformat som stöds av QEMU: raw, qcow2,
qcow, vmdk, vdi, bochs, cow (Linux
copy-on-write i användarläge), parallels,
dmg, cloop, vpc, vvfat (virtuell VFAT) och host_device.
Nätverksblockenheten kan stödja
partitioner på samma sätt som loop-enheten
(se Avsnitt 9.7.3, ”Montering av diskavbildningsfilen”). Du kan montera den
första partitionen på "disk.img" på följande sätt.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
|
Tips |
|---|---|
|
Du kan exportera endast den första partitionen i
" |
Om du vill prova en ny Debian-miljö från en terminalkonsol rekommenderar jag
att du använder chroot. Detta gör att du kan
köra konsolprogram för Debian unstable och
testing utan de vanliga risker som är förknippade med
detta och utan att starta om. chroot(8) är det mest
grundläggande sättet.
|
Observera |
|---|---|
|
Exemplen nedan förutsätter att både det överordnade systemet och
chroot-systemet har samma |
Även om du manuellt kan skapa en chroot(8)-miljö med
hjälp av debootstrap(1), kräver det en del arbete.
Paketet sbuild för att bygga Debian-paket från
källkod använder chroot-miljön som hanteras av paketet schroot. Det levereras med hjälpskriptet
sbuild-createchroot(1). Låt oss lära oss hur det
fungerar genom att köra det på följande sätt.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian ...
Du ser hur debootstrap(8) fyller i systemdata för
unstable miljö under
"/srv/chroot/unstable-amd64-sbuild" för ett minimalt
byggsystem.
Du kan logga in i den här miljön med hjälp av schroot(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
Du ser hur ett systemskal som körs i en unstable miljö
skapas.
|
Notera |
|---|---|
|
Filen " |
|
Notera |
|---|---|
|
Vissa program under chroot kan behöva tillgång till fler filer från det
överordnade systemet för att fungera än vad
|
|
Tips |
|---|---|
|
Paketet |
|
Tips |
|---|---|
|
Kommandot |
Om du vill prova en ny GUI-skrivbordsmiljö för något operativsystem
rekommenderar jag att du använder QEMU eller
KVM på ett stable
Debian-system för att köra flera skrivbordssystem på ett säkert sätt med
hjälp av virtualisering. Dessa gör
att du kan köra alla skrivbordsprogram, inklusive Debian
unstable och testing, utan de vanliga
risker som är förknippade med dem och utan att behöva starta om.
Eftersom ren QEMU är mycket långsam rekommenderas det att accelerera den med KVM när värdsystemet stöder det.
Administrerare av virtuella
maskiner, även känd som virt-manager, är ett
bekvämt grafiskt gränssnittsverktyg för hantering av KVM-virtuella maskiner
via libvirt.
Den virtuella diskavbildningen "virtdisk.qcow2" som
innehåller ett Debian-system för QEMU kan skapas
med debian-installer: Små
CD-skivor enligt följande.
$ wget https://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 ...
|
Tips |
|---|---|
|
Att köra andra GNU/Linux-distributioner som Ubuntu och Fedora under virtualisering är ett bra sätt att lära sig konfigurationstips. Andra proprietära operativsystem kan också köras snyggt under denna GNU/Linux-virtualisering. |
Se fler tips på Debians wiki: SystemVirtualisering.
[2] Mer detaljerade exempel på anpassning:"Vim Galore","sensible.vim", ...
[3] vim-pathogen var populär.