Cuprins
Aici, descriu sfaturi de bază pentru configurarea și gestionarea sistemelor, în principal din consolă.
Există câteva programe utilitare care vă ajută în activitățile cu consola.
Tabel 9.1. Lista programelor ce ajută în activitățile cu consola
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
mc
|
V:44, I:184 | 1590 | consultați Secțiune 1.3, „Midnight Commander (MC)” |
bsdutils
|
V:443, I:999 | 335 | script(1) comandă pentru înregistrarea sesiunii
terminalului |
screen
|
V:54, I:200 | 1006 | multiplexor de terminal cu emulare de terminal VT100/ANSI |
tmux
|
V:81, I:154 | 1292 | alternativă multiplexor de terminal (utilizați «Control-B» în loc de acesta) |
ripgrep
|
V:9, I:31 | 5342 | căutare rapidă recursivă de șiruri în arborele codului sursă cu filtrare automată |
fzf
|
V:9, I:33 | 4902 | căutare text aproximativ |
fzy
|
V:0.09, I:0.41 | 59 | căutare text aproximativ |
rlwrap
|
V:1, I:12 | 328 | învăluitor de linie de comandă pentru funcționalitatea readline |
ledit
|
V:0.5, I:8.4 | 375 | învăluitor de linie de comandă pentru funcționalitatea readline |
rlfe
|
V:0.05, I:0.52 | 45 | învăluitor de linie de comandă pentru funcționalitatea readline |
Utilizarea simplă a script(1) (vezi Secțiune 1.4.9, „Înregistrarea activităților shell-ului”) pentru a înregistra activitatea
shell-ului produce un fișier cu caractere de control. Acest lucru poate fi
evitat utilizând col(1) după cum urmează.
$ script Script started, file is typescript
Faceți orice ... și apăsați Ctrl-D pentru a ieși din
script.
$ col -bx < typescript > cleanedfile $ vim cleanedfile
Există metode alternative pentru înregistrarea activităților din shell:
Utilizați tee (utilizabil în timpul procesului de pornire
din initramfs):
$ sh -i 2>&1 | tee typescript
Utilizați gnome-terminal cu tamponul de linie extins
pentru derulare înapoi.
Utilizați screen cu „^A H” (consultați
Secțiune 9.1.2, „Programul «screen»”) pentru a efectua înregistrarea
consolei.
Utilizați vim cu „:terminal” pentru a
intra în modul terminal. Utilizați „Ctrl-W N” pentru a
ieși din modul terminal și a reveni la modul normal. Utilizați „:w
typescript” pentru a scrie conținutul memoriei tampon într-un
fișier.
Utilizați emacs cu „M-x shell”,
„M-x eshell” sau „M-x term” pentru a
intra în consola de înregistrare. Utilizați „C-x C-w”
pentru a scrie conținutul memoriei tampon într-un fișier.
screen(1) nu numai că permite unei ferestre de terminal
să lucreze cu mai multe procese, dar permite și procesului shell de la distanță să supraviețuiască
conexiunilor întrerupte. Iată un scenariu tipic de utilizare a
screen(1).
Vă conectați la o mașină de la distanță.
Porniți screen pe o singură consolă.
Executați mai multe programe în ferestrele screen create
cu ^A c («Control-A» urmat de «c»).
Comutați între mai multe ferestre screen folosind comanda
^A n («Control-A» urmat de «n»).
Dintr-o dată trebuie să părăsiți terminalul, dar nu doriți să pierdeți munca activă menținând conexiunea.
Puteți detașa sesiunea
screen prin orice metodă.
Deconectați brutal conexiunea la rețea
Tastați ^A d («Control-A» urmat de «d») și deconectați-vă
manual de la conexiunea de la distanță
Tastați ^A DD («Control-A» urmat de «DD») pentru a detașa
screen și a vă deconecta
Vă conectați din nou la aceeași mașină de la distanță (chiar și de la un terminal diferit).
Porniți screen ca „screen -r”.
screen reatașează în
mod magic toate ferestrele screen anterioare cu toate
programele care rulează în mod activ.
|
Indicație |
|---|---|
|
Puteți economisi costurile de conectare cu |
Într-o sesiune screen, toate introducerile de la
tastatură sunt trimise către fereastra curentă, cu excepția tastelor de
comandă. Toate tastele de comandă screen sunt introduse
tastând ^A («Control-A») plus o singură tastă [plus orice
parametri]. Iată câteva dintre cele mai importante de reținut.
Tabel 9.2. Lista combinațiilor de taste pentru «screen»
| comanda/funcția asociată | semnificație |
|---|---|
^A ? |
afișează un ecran de ajutor (afișează combinațiile de taste) |
^A c |
crează o fereastră nouă și comută la ea |
^A n |
trece la fereastra următoare |
^A p |
trece la fereastra anterioară |
^A 0 |
trece la fereastra numărul 0 |
^A 1 |
trece la fereastra numărul 1 |
^A w |
afișează o listă de ferestre |
^A a |
trimite «Ctrl-A» către fereastra curentă ca intrare de la tastatură |
^A h |
scrie o copie fizică a ferestrei curente într-un fișier |
^A H |
începe/încheie înregistrarea ferestrei curente în fișier |
^A ^X |
blochează terminalul (protejat cu parolă) |
^A d |
detașează sesiunea «screen» de terminal |
^A DD |
detașează sesiunea «screen» și termină sesiunea |
Pentru detalii, consultați screen(1).
Consultați tmux(1) pentru funcționalitățile comenzii
alternative.
În Secțiune 1.4.2, „Personalizarea bash” sunt descrise două sfaturi care
permit navigarea rapidă între directoare: $CDPATH și
mc.
Dacă utilizați un program de filtrare a textului aproximativ, puteți renunța
la introducerea rutei exacte. Pentru fzf, includeți
următoarele în ~/.bashrc.
FZF_KEYBINDINGS_PATH=/usr/share/doc/fzf/examples/key-bindings.bash if [ -f $FZF_KEYBINDINGS_PATH ]; then . $FZF_KEYBINDINGS_PATH fi
De exemplu:
Puteți salta într-un subdirector foarte adânc cu eforturi minime. Mai întâi
tastați „cd **” și apăsați Tab. Apoi
vi se vor afișa rutele candidate. Tastând șiruri parțiale de rută, de
exemplu, s/d/b foo, veți restrânge rutele candidate.
Selectați ruta care va fi utilizată de cd cu ajutorul
tastelor cursor și «Enter».
Puteți selecta o comandă din istoricul comenzilor mai eficient, cu eforturi
minime. Apăsați Ctrl-R la promptul de comandă. Apoi vi
se vor afișa comenzile candidate. Tastând șiruri parțiale de comenzi, de
exemplu vim d, veți restrânge numărul de comenzi
candidate. Selectați comanda dorită cu ajutorul cursorului și tastelor de
returnare.
Unele comenzi, cum ar fi /usr/bin/dash, care nu dispun de
funcția de editare a istoricului liniei de comandă, pot adăuga această
funcționalitate în mod transparent prin rularea sub
rlwrap sau echivalenții săi.
$ rlwrap dash -i
Aceasta oferă o platformă convenabilă pentru testarea punctelor subtile
pentru dash într-un mediu prietenos, similar cu
bash.
Comanda rg(1) din pachetul ripgrep
oferă o alternativă mai rapidă la comanda grep(1) pentru
scanarea arborelui codului sursă în situații tipice. Aceasta profită de
avantajele procesoarelor moderne multi-core și aplică automat filtre
rezonabile pentru a omite anumite fișiere.
După ce învățați noțiunile de bază ale vim(1) prin Secțiune 1.4.8, „Utilizarea editorului vim”, vă rugăm să citiți articolul lui Bram Moolenaar
„Seven habits of effective
text editing (2000)” (Șapte obiceiuri pentru o editare eficientă a
textului) pentru a înțelege cum trebuie utilizat vim.
Comportamentul vim poate fi modificat semnificativ prin
activarea caracteristicilor sale interne prin intermediul comenzilor
Ex-mode, cum ar fi „set ...” pentru a
defini opțiunile vim.
Aceste comenzi în modul Ex pot fi incluse în fișierul
vimrc al utilizatorului, tradiționalul „~/.vimrc” sau
„~/.vim/vimrc”, compatibil cu git. Iată un exemplu
foarte simplu [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
Harta tastelor din vim poate fi modificată în fișierul
vimrc al utilizatorului. De exemplu:
|
Atenție |
|---|---|
|
Nu încercați să modificați combinațiile de taste implicite fără motive întemeiate. |
""" 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
Pentru ca combinațiile de taste de mai sus să funcționeze corect, programul
de terminal trebuie configurat să genereze „ASCII DEL” pentru tasta
Backspace și „Secvență de eludare” pentru tasta
Delete.
Alte configurații diverse pot fi modificate în fișierul vimrc al utilizatorului. De exemplu:
""" 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\+\%#\@<!$/
Se pot găsi pachete de module de extensii externe interesante:
Vim - the ubiquitous text editor -- Situl oficial al Vim și scripturilor vim
VimAwsome -- Lista modulelor de extensie Vim
vim-scripts -- Pachet Debian: o colecție de scripturi vim
Pachetele de module de extensie din pacheul vim-scripts pot fi activate folosind fișierul vimrc al utilizatorului. De exemplu:
packadd! secure-modelines packadd! winmanager " IDE-like UI for files and buffers with <space>w nnoremap <leader>w :WMToggle<CR>
Noul sistem nativ de pachete Vim funcționează bine cu
„git” și „git submodule”. Un astfel
de exemplu de configurare poate fi găsit în depozitul meu git: dot-vim. Acesta
face în esență următoarele:
Folosind „git” și „git submodule”,
cele mai recente pachete externe, precum
„nume”, sunt plasate în
~/.vim/pack/*/opt/nume și similare.
Prin adăugarea liniei :packadd! nume
în fișierul vimrc al utilizatorului, aceste pachete sunt plasate în
runtimepath.
Vim încarcă aceste pachete în runtimepath în timpul
inițializării.
La finalul inițializării, etichetele pentru documentele instalate sunt
actualizate cu „helptags ALL”.
Pentru mai multe informații, porniți vim cu „vim
--startuptime vimstart.log” pentru a verifica secvența reală de
execuție și timpul utilizat pentru fiecare etapă.
Este destul de confuz să vezi prea multe modalități[3] de a gestiona și încărca aceste pachete externe în
vim. Verificarea informațiilor originale este cea mai
bună soluție.
Tabel 9.3. Informații despre inițializarea vim
| combinația de taste | informații |
|---|---|
:help package |
explicație privind mecanismul pachetului vim |
:help runtimepath |
explicație privind mecanismul runtimepath |
:version |
stări interne, inclusiv candidați pentru fișierul vimrc |
:echo $VIM |
variabila de mediu „$VIM” utilizată pentru localizarea
fișierului vimrc |
:set runtimepath? |
lista directoarelor care vor fi căutate pentru toate fișierele de suport pentru rulare |
:echo $VIMRUNTIME |
variabila de mediu „$VIMRUNTIME” utilizată pentru
localizarea diverselor fișiere de suport pentru rulare furnizate de sistem |
Multe programe tradiționale înregistrează activitățile lor în format fișier
text în directorul „/var/log/”.
logrotate(8) este utilizat pentru a simplifica
administrarea fișierelor jurnal pe un sistem care generează o mulțime de
fișiere jurnal.
Multe programe noi își înregistrează activitățile în formatul de fișier
binar utilizând serviciul de jurnal systemd-journald(8)
în directorul „/var/log/journal”.
Puteți înregistra date în jurnalul systemd-journald(8)
dintr-un script shell utilizând comanda systemd-cat(1).
Consultați Secțiune 3.5, „Mesajele sistemului” și Secțiune 3.4, „Mesajele nucleului”.
Iată câteva analizatoare de jurnale notabile
(„~Gsecurity::log-analyzer” în
aptitude(8)).
Tabel 9.4. Lista analizatoarelor de jurnale de sistem
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
fail2ban
|
V:96, I:107 | 2191 | interzice adresele IP care provoacă erori multiple de autentificare |
logwatch
|
V:9, I:11 | 2436 | analizator de jurnale cu ieșire formatată plăcut, scris în Perl |
awstats
|
V:5.5, I:8.7 | 6935 | analizator de jurnale de server web, performant și cu multe funcții |
analog
|
V:3, I:88 | 3739 | analizator de jurnale de server web |
sarg
|
V:0.82, I:0.90 | 863 | generator de rapoarte de analizare squid |
pflogsumm
|
V:1.5, I:3.8 | 170 | program de sinteză a intrărilor din jurnalul Postfix |
fwlogwatch
|
V:0.12, I:0.18 | 487 | analizator de jurnale de paravan de protecție |
squidview
|
V:0.05, I:0.50 | 189 | monitorizează și analizează fișierele squid access.log |
swatch
|
V:0.09, I:0.32 | 99 | vizor de fișiere jurnal cu potrivire de expresii regulate, evidențiere și cârlige |
crm114
|
V:0.07, I:0.37 | 1371 | Filtru de spam și filtru cu expresii regulate controlabile („Controllable Regex Mutilator”: CRM114) |
icmpinfo
|
V:0.03, I:0.36 | 42 | interpretează mesajele ICMP |
|
Notă |
|---|---|
|
CRM114 oferă infrastructura lingvistică necesară pentru a scrie filtre fuzzy (aproximative) cu ajutorul bibliotecii TRE regex. Este utilizat în mod obișnuit pentru filtrarea mesajelor spam, dar poate fi folosit și ca analizor de jurnale. |
Deși instrumentele de paginare precum more(1) și
less (1) (a se vedea Secțiune 1.4.5, „Paginatorul”) și
instrumentele personalizate pentru evidențiere și formatare (a se vedea
Secțiune 11.1.8, „Evidențierea și formatarea datelor în text simplu”) pot afișa
datele de text într-un mod plăcut, editorii de uz general (a se vedea Secțiune 1.4.6, „Editorul de text”) sunt cei mai versatili și cei care pot fi cel
mai mult personalizați.
|
Indicație |
|---|---|
|
Pentru |
Formatul implicit de afișare a orei și datei de către comanda „ls
-l” depinde de configurația
regională (vedeți Secțiune 1.2.6, „Marcaje de timp” pentru valoare).
Variabila „$LANG” este consultată prima și poate fi
suprascrisă de variabilele de mediu exportate „$LC_TIME”
sau „$LC_ALL”.
Formatul de afișare implicit pentru fiecare configurație regională depinde
de versiunea bibliotecii standard C (pachetul libc6)
utilizată. Adică, versiunile diferite ale Debian aveau configurații
implicite diferite. Pentru formatele iso, consultați ISO 8601.
Dacă doriți cu adevărat să personalizați acest format de afișare a datei și
orei dincolo de configurația regională,
trebuie să definiți valoarea stilului de afișare a
datei și orei prin argumentul „ --time-style”
sau prin valoarea „$TIME_STYLE” (consultați
ls(1), date(1), «info
coreutils 'ls invocation'»).
Tabel 9.5. Exemplele de afișare a datei și orei pentru comanda „ls
-l” cu valoarea stilului de afișare a
datei și orei
| valoarea stilului de afișare a datei și orei | configurația regională | afișarea datei și orei |
|---|---|---|
iso |
oricare | 01-19 00:15 |
long-iso |
oricare | 2009-01-19 00:15 |
full-iso |
oricare | 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 |
oricare | 19.01.09 00:15 |
+%d.%b.%y %H:%M |
C sau en_US.UTF-8 |
19.Jan.09 00:15 |
+%d.%b.%y %H:%M |
es_ES.UTF-8 |
19.ene.09 00:15 |
|
Indicație |
|---|---|
|
Puteți elimina introducerea opțiunilor lungi în linia de comandă utilizând un alias de comandă (consultați Secțiune 1.5.9, „Alias de comandă”): alias ls='ls --time-style=+%d.%m.%y %H:%M' |
Ecoul Shell pentru majoritatea terminalelor moderne poate fi colorat
folosind codul de eludare ANSI (vedeți
„/usr/share/doc/xterm/ctlseqs.txt.gz”).
De exemplu, încercați următoarele
$ RED=$(printf "\x1b[31m")
$ NORMAL=$(printf "\x1b[0m")
$ REVERSE=$(printf "\x1b[7m")
$ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"
Comenzile colorate sunt utile pentru inspectarea rezultatelor acestora în
mediul interactiv. Includ următoarele în fișierul meu
„~/.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
Utilizarea unui alias limitează efectele de culoare la utilizarea
interactivă a comenzii. Are avantajul față de exportarea variabilei de
mediu „export GREP_OPTIONS='--color=auto'”, deoarece
culoarea poate fi văzută în programele de paginare, cum ar fi
less(1). Dacă doriți să suprimați culoarea atunci când
redirecționați către alte programe, utilizați
„--color=auto” în locul exemplului de mai sus pentru
„~/.bashrc”.
|
Indicație |
|---|---|
|
Puteți dezactiva aceste nume-alias de colorare în mediul interactiv apelând
shell cu „ |
Puteți înregistra activitățile editorului pentru repetări complexe.
Pentru Vim, procedați după cum urmează.
«qa»: începe înregistrarea caracterelor tastate în
registrul numit „a”.
… activități ale editorului
«q»: încheie înregistrarea caracterelor tastate.
«@a»: execută conținutul registrului
„a”.
Pentru Emacs, procedați după cum urmează.
«C-x (»: începe definirea unei macrocomenzi pentru
tastatură.
… activități ale editorului
«C-x )»: încheie definirea macrocomenzii pentru
tastatură.
«C-x e»: execută o macrocomandă pentru tastatură.
Există câteva modalități de a înregistra imaginea grafică a unei aplicații
X, inclusiv un afișaj xterm.
Tabel 9.6. Lista instrumentelor de manipulare a imaginilor grafice
| pachet | popcon(popularitate) | dimensiune | ecran | comandă |
|---|---|---|---|---|
gnome-screenshot
|
V:13, I:110 | 1115 | Wayland | aplicație de captură de ecran pentru GNOME |
flameshot
|
V:8, I:18 | 3532 | Wayland | aplicație de captură de ecran cu steroizi |
gimp
|
V:33, I:229 | 32032 | Wayland + X | captură de ecran în meniul interfeței grafice a aplicației |
x11-apps
|
V:33, I:463 | 2461 | X | xwd(1) |
imagemagick
|
V:9, I:291 | 77 | X | import(1) |
scrot
|
V:4, I:54 | 141 | X | scrot(1) |
Există instrumente specializate pentru înregistrarea modificărilor din fișierele de configurare cu ajutorul DVCS și pentru realizarea de instantanee ale sistemului pe Btrfs.
Tabel 9.7. Lista pachetelor care pot înregistra istoricul configurațiilor
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
etckeeper
|
V:25, I:28 | 157 | stochează fișierele de configurare și metadatele acestora cu Git (implicit), Mercurial sau GNU Bazaar |
timeshift
|
V:8, I:14 | 4481 | utiilitate de restaurare a sistemului folosind rsync sau instantanee BTRFS |
snapper
|
V:6.5, I:8.8 | 2410 | instrument de gestionare a instantaneelor sistemului de fișiere Linux |
Puteți lua în considerare și abordarea scriptului local Secțiune 10.2.3, „Sfaturi pentru copierea de rezervă”.
Activitățile programului pot fi monitorizate și controlate folosind instrumente specializate.
Tabel 9.8. Lista instrumentelor pentru monitorizarea și controlul activităților programului
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
coreutils
|
V:897, I:1000 | 17994 | nice(1): rulează un program cu prioritate de planificare
modificată |
bsdutils
|
V:443, I:999 | 335 | renice(1): modifică prioritatea de planificare a unui
proces în execuție |
procps
|
V:822, I:998 | 2404 | Utilități ale sistemului de fișiere „/proc”:
ps(1), top(1),
kill(1), watch(1), … |
psmisc
|
V:410, I:742 | 950 | Utilități ale sistemului de fișiere „/proc”:
killall(1), fuser(1),
peekfd(1), pstree(1) |
time
|
V:6, I:85 | 129 | time(1): rulează un program pentru a raporta utilizarea
resurselor sistemului în funcție de timp |
sysstat
|
V:124, I:163 | 1904 | sar(1), iostat(1),
mpstat(1), …: instrumente de performanță a sistemului
pentru Linux |
isag
|
V:0.1, I:3.3 | 109 | Grafic interactiv al activității sistemului pentru sysstat |
lsof
|
V:445, I:950 | 492 | lsof(8): listează fișierele deschise de un proces în
execuție folosind opțiunea „-p” |
strace
|
V:10, I:104 | 3253 | strace(1): urmărește apelurile de sistem și semnalele |
ltrace
|
V:1, I:12 | 420 | ltrace(1): trasează apelurile către bibliotecă |
xtrace
|
V:0.06, I:0.69 | 353 | xtrace(1): trasează comunicarea între clientul X11 și
server |
powertop
|
V:34, I:231 | 696 | powertop(1): informații despre consumul de energie al
sistemului |
cron
|
V:907, I:997 | 250 | rulează procesele conform unei programări în fundal din
cron(8) daemon |
anacron
|
V:421, I:492 | 112 | programator de comenzi de tip cron pentru sisteme care nu funcționează 24 de ore pe zi |
at
|
V:74, I:101 | 158 | at(1) sau batch(1): execută o sarcină
la o oră specificată sau sub un anumit nivel de încărcare |
|
Indicație |
|---|---|
|
Pachetele |
Afișează timpul utilizat de procesul invocat de comandă.
# 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
O valoare potrivită(de curtoazie) este utilizată pentru a controla prioritatea de planificare a procesului.
Tabel 9.9. Lista valorilor de curtoazie pentru prioritatea de programare
| valoarea de curtoazie | prioritatea de planificare |
|---|---|
| 19 | proces cu prioritate minimă (nice - curtoazie) |
| 0 | proces cu prioritate foarte mare pentru utilizator |
| -20 | proces cu prioritate foarte mare pentru root (fără curtoazie) |
# nice -19 top # very nice # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # very fast
Uneori, o valoare extrem de mare poate face mai mult rău decât bine sistemului. Utilizați această comandă cu precauție.
Comanda ps(1) pe un sistem Debian acceptă atât
caracteristicile BSD, cât și SystemV și ajută la identificarea statică a
activității procesului.
Tabel 9.10. Lista stilurilor de comenzi ps
| stil | comandă tipică | funcția |
|---|---|---|
| BSD | ps aux |
afișează %CPU %MEM |
| System V | ps -efH |
afișează PPID |
Procesele-copil zombie (inactive), le puteți opri utilizând ID-ul procesului
părinte identificat în câmpul „PPID”.
Comanda pstree(1) afișează arborele proceselor.
top(1) în sistemul Debian are funcții bogate și ajută la
identificarea proceselor care se comportă ciudat în mod dinamic.
Este un program interactiv pe ecran complet. Puteți obține ajutorul de utilizare apăsând tasta «h» și îl puteți închide apăsând tasta «q».
Puteți lista toate fișierele deschise de un proces cu un ID de proces (PID), de exemplu 1, folosind următoarea comandă.
$ sudo lsof -p 1
PID=1 este de obicei programul init.
Puteți urmări activitatea programului cu strace(1),
ltrace(1) sau xtrace(1) pentru apeluri
și semnale de sistem, apeluri de bibliotecă sau comunicarea între clientul
și serverul X11.
Puteți urmări apelurile de sistem ale comenzii ls după
cum urmează.
$ sudo strace ls
|
Indicație |
|---|---|
|
Utilizați scriptul strace-graph din /usr/share/doc/strace/examples/ pentru a crea o vizualizare arborescentă plăcută |
De asemenea, puteți identifica procesele utilizând fișiere prin
fuser(1), de exemplu pentru
„/var/log/mail.log” prin următoarea comandă.
$ sudo fuser -v /var/log/mail.log
USER PID ACCESS COMMAND
/var/log/mail.log: root 2946 F.... rsyslogd
Puteți vedea că fișierul „/var/log/mail.log” este deschis
pentru scriere de comanda rsyslogd(8).
De asemenea, puteți identifica procesele care utilizează socluri cu ajutorul
comenzii fuser(1), de exemplu pentru
„smtp/tcp” cu ajutorul următoarei comenzi.
$ sudo fuser -v smtp/tcp
USER PID ACCESS COMMAND
smtp/tcp: Debian-exim 3379 F.... exim4
Acum știți că sistemul dvs. rulează exim4(8) pentru a
gestiona conexiunile TCP la portul SMTP (25).
watch(1) execută un program în mod repetat, la intervale
constante, afișând rezultatul pe ecranul complet.
$ watch w
Afișează cine este conectat la sistem, actualizat la fiecare 2 secunde.
Există mai multe moduri de a repeta o comandă care parcurge fișierele care
corespund unei anumite condiții, de exemplu, care corespund modelului global
(cu caracter joker) „*.ext”.
Metoda Shell for-loop (a se vedea Secțiune 12.1.4, „Bucle shell”):
for x in *.ext; do if [ -f "$x"]; then command "$x" ; fi; done
combinația find(1) și xargs(1):
find . -type f -maxdepth 1 -name '*.ext' -print0 | xargs -0 -n 1 command
find(1) cu opțiunea „-exec” cu o
comandă:
find . -type f -maxdepth 1 -name '*.ext' -exec command '{}' \;
find(1) cu opțiunea „-exec” cu un
script shell scurt:
find . -type f -maxdepth 1 -name '*.ext' -exec sh -c "command '{}' && echo 'successful'" \;
Exemplele de mai sus sunt scrise pentru a asigura gestionarea corectă a
numelor de fișiere ciudate, cum ar fi cele care conțin spații. Consultați
Secțiune 10.1.5, „Expresii idiomatice pentru selectarea fișierelor” pentru utilizări mai
avansate ale find(1).
Pentru interfața de linie de comandă
(„command-line interface”: CLI), se execută primul program cu numele
corespunzător găsit în directoarele specificate în variabila de mediu
$PATH. Consultați Secțiune 1.5.3, „Variabila „$PATH””.
Pentru interfața grafică cu
utilizatorul („graphical user interface”: GUI) conformă cu
standardele freedesktop.org, fișierele
*.desktop din directorul
/usr/share/applications/ furnizează atributele necesare
pentru afișarea meniului GUI al fiecărui program. Fiecare pachet care este
compatibil cu sistemul de meniuri xdg al Freedesktop.org instalează datele
de meniu furnizate de „*.desktop” în „/usr/share/applications/”. Mediile
grafice de birou moderne care sunt compatibile cu standardul Freedesktop.org
utilizează aceste date pentru a genera meniul lor folosind pachetul
xdg-utils. Consultați „/usr/share/doc/xdg-utils/README”.
De exemplu, fișierul chromium.desktop definește
atributele pentru „Navigatorul Web Chromium”, cum ar fi „Name” pentru numele
programului, „Exec” pentru ruta de execuție și argumentele programului,
„Icon” pentru pictograma utilizată etc. (consultați Descriptorul de intrare desktop)
după cum urmează:
[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
Aceasta este o descriere simplificată. Fișierele
*.desktop sunt scanate după cum urmează.
Mediul de birou definește variabilele de mediu
$XDG_DATA_HOME și $XDG_DATA_DIR. De
exemplu, în GNOME:
variabila $XDG_DATA_HOME nu este definită; (se utilizează
valoarea implicită $HOME/.local/share)
variabila $XDG_DATA_DIRS este definită ca
/usr/share/gnome:/usr/local/share/:/usr/share/
Astfel, directoarele de bază (a se vedea XDG Base Directory
Specification) și directoarele de aplicații sunt
următoarele.
$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/
Fișierele *.desktop sunt scanate în aceste directoare de
aplicații în această ordine.
|
Indicație |
|---|---|
|
O intrare personalizată în meniul GUI poate fi creată prin adăugarea unui
fișier |
|
Indicație |
|---|---|
|
Linia „ |
|
Indicație |
|---|---|
|
În mod similar, dacă un fișier |
|
Indicație |
|---|---|
|
În mod similar, dacă un fișier |
Unele programe pornesc automat un alt program. Iată câteva puncte de verificare pentru personalizarea acestui proces.
Meniul de configurare a aplicației:
mediul grafic de birou GNOME: «Configurări» → «Aplicații» → «Aplicații implicite»
mediul grafic de birou KDE: «Meniu aplicații» → «Configurări de sistem» → «Aplicații implicite»
navigatorul web Iceweasel: «Editare» → «Preferințe» → «Aplicații»
mc(1): "/etc/mc/mc.ext"
Variabile de mediu precum „$BROWSER”,
„$EDITOR”, „$VISUAL” și
„$PAGER” (a se vedea environ(7))
Sistemul update-alternatives(1) pentru programe precum
„editor”, „view”,
„x-www-browser”, „gnome-www-browser”
și „www-browser” (a se vedea Secțiune 1.4.7, „Definirea unui editor de text implicit”)
Conținutul fișierelor „~/.mailcap” și
„/etc/mailcap” care asociază tipul MIME cu programul (a se vedea
mailcap(5))
Conținutul fișierelor „~/.mime.types” și
„/etc/mime.types” care asociază extensia numelui
fișierului cu tipul MIME (a se vedea
run-mailcap(1))
|
Indicație |
|---|---|
|
|
|
Indicație |
|---|---|
|
Pachetul |
|
Indicație |
|---|---|
|
Pentru a rula o aplicație de consolă precum # cat /usr/local/bin/mutt-term <<EOF #!/bin/sh gnome-terminal -e "mutt \$@" EOF # chmod 755 /usr/local/bin/mutt-term |
Utilizați kill(1) pentru a omorî (sau a trimite un semnal
către) un proces prin ID-ul procesului.
Utilizați killall(1) sau pkill(1)
pentru a face același lucru folosind numele comenzii procesului și alte
atribute.
Tabel 9.11. Lista semnalelor utilizate frecvent pentru comanda «kill»
| valoare semnal | nume semnal | acțiunea | notă |
|---|---|---|---|
| 0 | --- | nu se trimite niciun semnal (vedeți kill(2)) |
verifică dacă procesul rulează |
| 1 | SIGHUP | termină procesul | terminal deconectat (semnal de suspendare) |
| 2 | SIGINT | termină procesul | întrerupere de la tastatură (CTRL-C) |
| 3 | SIGQUIT | termină procesul și efectuează operația dump core (descarcă conținutul memoriei) | ieșire de la tastatură (CTRL-\) |
| 9 | SIGKILL | termină procesul | semnal de omorâre de neblocat |
| 15 | SIGTERM | termină procesul | semnal de terminare blocabil |
Rulează comanda at(1) pentru a programa o sarcină unică
după cum urmează.
$ echo 'command -args'| at 3:40 monday
Utilizați cron(8) pentru a programa sarcini în mod
regulat. Consultați crontab(1) și
crontab(5).
Puteți programa rularea proceselor ca utilizator normal, de exemplu
foo, creând un fișier crontab(5) ca
„/var/spool/cron/crontabs/foo” cu comanda
„crontab -e”.
Iată un exemplu de fișier crontab(5).
# 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
|
Indicație |
|---|---|
|
Pentru ca sistemul să nu funcționeze continuu, instalați pachetul
|
|
Indicație |
|---|---|
|
Pentru scripturile de întreținere programată a sistemului, le puteți rula
periodic din contul root, plasând astfel de scripturi în
„ |
Systemd are capacitatea de nivel inferior de
a programa rularea programelor fără demonul cron. De
exemplu, /lib/systemd/system/apt-daily.timer și
/lib/systemd/system/apt-daily.service configurează
activitățile zilnice de descărcare apt. Consultați
systemd.timer(5) .
Systemd poate programa programul nu numai pe evenimentul cronometrat, ci și pe evenimentul de montare. Consultați Secțiune 10.2.3.3, „Copiere de rezervă declanșată de evenimentul programatorului de sarcini” și Secțiune 10.2.3.2, „Copiere de rezervă declanșată de evenimentul de montare” pentru exemple.
Apăsarea tastelor Alt-SysRq (PrtScr) urmată de o singură tastă face minunea de a recupera controlul asupra sistemului.
Tabel 9.12. Lista tastelor de comandă SAK importante
| tasta ce urmează după Alt-SysRq | descrierea acțiunii |
|---|---|
k |
kill (omoară) toate procesele din consola virtuală curentă (SAK) |
s |
sincronizează toate sistemele de fișiere montate pentru a evita coruperea datelor |
u |
remontează toate sistemele de fișiere montate în mod citire-numai (umount) |
r |
restabilește tastatura din modul raw (brut) după blocarea X |
Vedeți mai multe în Linux kernel user’s and administrator’s guide » Linux Magic System Request Key Hacks
|
Indicație |
|---|---|
|
Din terminalul SSH etc., puteți utiliza funcția Alt-SysRq scriind în
„ |
Nucleul Linux Debian amd64 actual (2021) are
/proc/sys/kernel/sysrq=438=0b110110110:
2 = 0x2 - activează controlul nivelului de înregistrare în jurnalul consolei (ACTIVAT)
4 = 0x4 - activează controlul tastaturii (SAK, unraw) (ACTIVAT)
8 = 0x8 - activează dump-urile de depanare ale proceselor etc. (DEZACTIVAT)
16 = 0x10 - activează comanda de sincronizare (ACTIVAT)
32 = 0x20 - activează remontarea numai pentru citire (ACTIVAT)
64 = 0x40 - activează semnalizarea proceselor (term, kill, oom-kill) (dezactivat)
128 = 0x80 - permite repornirea/oprirea (ACTIVAT)
256 = 0x100 - permite optimizarea tuturor sarcinilor RT (ACTIVAT)
Puteți verifica cine este conectat la sistem urmând pașii de mai jos.
who (1) arată cine este conectat.
w(1) arată cine este conectat și ce face.
last(1) afișează lista ultimilor utilizatori conectați.
lastb(1) afișează lista ultimilor utilizatori care s-au
conectat incorect.
|
Indicație |
|---|---|
|
„ |
Puteți trimite mesaje tuturor celor care sunt conectați la sistem cu
wall(1) în felul următor.
$ echo "We are shutting down in 1 hour" | wall
Pentru dispozitivele de tip PCI (AGP, PCI-Express,
CardBus, ExpressCard etc.), lspci(8)
(probabil cu opțiunea „-nn”) este un bun punct de plecare
pentru identificarea hardware-ului.
Alternativ, puteți identifica hardware-ul citind conținutul
„/proc/bus/pci/devices” sau răsfoind arborele de
directoare din „/sys/bus/pci” (consultați Secțiune 1.2.12, „procfs și sysfs”).
Tabel 9.13. Lista instrumentelor de identificare a hardware-ului
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
pciutils
|
V:256, I:992 | 280 | utilități PCI Linux: lspci(8) |
usbutils
|
V:81, I:887 | 322 | utilități USB Linux: lsusb(8) |
nvme-cli
|
V:23, I:31 | 2222 | utilități NVMe pentru Linux: nvme(1) |
pcmciautils
|
V:4.6, I:7.1 | 92 | utilități PCMCIA pentru Linux: pccardctl(8) |
scsitools
|
V:0.2, I:2.4 | 261 | colecție de instrumente pentru gestionarea hardware-ului SCSI:
lsscsi(8) |
procinfo
|
V:0.4, I:6.2 | 149 | informații despre sistem obținute din „/proc”:
lsdev(8) |
lshw
|
V:13, I:91 | 971 | informații despre configurația hardware: lshw(1) |
discover
|
V:27, I:677 | 81 | sistem de identificare hardware: discover (8) |
Deși majoritatea configurațiilor hardware ale sistemelor grafice de birou moderne, precum GNOME și KDE, pot fi gestionate prin intermediul instrumentelor de configurare grafice însoțitoare, este recomandabil să cunoașteți câteva metode de bază pentru configurarea acestora.
Tabel 9.14. Lista instrumentelor de configurare hardware
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
console-setup
|
V:81, I:973 | 421 | utilități pentru fonturi și tabele de taste pentru consola Linux |
x11-xserver-utils
|
V:315, I:542 | 559 | utilități server X: xset(1),
xmodmap(1) |
acpid
|
V:58, I:90 | 158 | demon pentru gestionarea evenimentelor transmise de Interfața avansată de configurare și alimentare (ACPI) |
acpi
|
V:7, I:84 | 49 | instrument pentru afișarea informațiilor despre dispozitivele ACPI |
sleepd
|
V:0.09, I:0.11 | 84 | demon pentru a pune laptopul în stare de repaus în timpul inactivității |
hdparm
|
V:118, I:222 | 246 | optimizarea accesului la discurile dure (a se vedea Secțiune 9.6.9, „Optimizarea discului dur”) |
smartmontools
|
V:230, I:264 | 2455 | control and monitor storage systems using S.M.A.R.T. |
setserial
|
V:3.4, I:5.4 | 104 | colecție de instrumente pentru gestionarea porturilor seriale |
memtest86+
|
V:1, I:19 | 12473 | colecție de instrumente pentru gestionarea hardware-ului de memorie |
scsitools
|
V:0.2, I:2.4 | 261 | colecție de instrumente pentru gestionarea hardware-ului SCSI |
setcd
|
V:0.06, I:0.67 | 33 | optimizarea accesului la unitatea de disc compact |
big-cursor
|
I:0.70 | 26 | cursoare de mouse mai mari pentru X |
Aici, ACPI este un cadru mai nou pentru sistemul de gestionare a energiei decât APM.
|
Indicație |
|---|---|
|
Scalarea frecvenței procesorului pe sistemele moderne este controlată de
module ale nucleului, precum |
Următoarele stabilesc ora sistemului și a hardware-ului la MM/DD hh:mm, CCYY.
# date MMDDhhmmCCYY # hwclock --utc --systohc # hwclock --show
Ora este afișată în mod normal în ora locală pe sistemul Debian, dar hardware-ul și ora sistemului utilizează de obicei UTC(GMT).
Dacă ora hardware este stabilită la UTC, modificați configurația la
„UTC=yes” în „/etc/default/rcS”.
Următoarele reconfigurează fusul orar utilizat de sistemul Debian.
# dpkg-reconfigure tzdata
Dacă doriți să actualizați ora sistemului prin rețea, luați în considerare
utilizarea serviciului NTP cu pachete precum
ntp, ntpdate și
chrony.
|
Indicație |
|---|---|
|
În systemd, utilizați în schimb
|
Consultați următoarele.
Pachetul ntp-doc
|
Indicație |
|---|---|
|
|
Există mai multe componente pentru configurarea consolei de caractere și a
caracteristicilor sistemului ncurses(3).
Fișierul „/etc/terminfo/*/*”
(terminfo(5))
Variabila de mediu „$TERM” (term(7))
setterm(1), stty(1),
tic(1), și toe(1)
Dacă intrarea terminfo pentru xterm nu
funcționează cu un xterm non-Debian, schimbați tipul
terminalului, „$TERM”, din „xterm”
într-una dintre versiunile cu funcționalități limitate, cum ar fi
„xterm -r6” atunci când vă conectați la un sistem Debian
de la distanță. Consultați
„/usr/share/doc/libncurses5/FAQ” pentru mai multe
informații. „dumb” este cel mai mic numitor comun pentru
„$TERM”.
Controlorii pentru plăcile de sunet pentru versiunea actuală de Linux sunt furnizați de Advanced Linux Sound Architecture (ALSA). ALSA oferă modul de emulare pentru Open Sound System (OSS) anterior, pentru compatibilitate.
Aplicațiile software pot fi configurate nu numai pentru a accesa direct dispozitivele audio, ci și pentru a le accesa prin intermediul unui sistem standardizat de servere audio. În prezent, PulseAudio, JACK și PipeWire sunt utilizate ca sisteme de servere audio. Consultați Debian wiki page on Sound -- pagina wiki Debian despre sunet pentru a afla ultimele noutăți.
De obicei, există un motor de sunet comun pentru fiecare mediu grafic de birou popular. Fiecare motor de sunet utilizat de aplicație poate alege să se conecteze la diferite servere de sunet.
|
Indicație |
|---|---|
|
Utilizați „ |
|
Indicație |
|---|---|
|
Dacă nu auziți sunetul, este posibil ca difuzorul să fie conectat la o
ieșire mută. Sistemele audio moderne au mai multe ieșiri.
|
Tabel 9.15. Lista pachetelor de sunet
Pentru a dezactiva protectorul de ecran, utilizați următoarele comenzi.
Tabel 9.16. Lista comenzilor pentru dezactivarea protectorului de ecran
| mediu | comandă |
|---|---|
| Consola Linux | setterm -powersave off |
| Sistemul X Window (dezactivarea protectorului de ecran) | xset s off |
| Sistemul X Window (dezactivarea dpms) | xset -dpms |
| Sistemul X Window (intrerfața grafigă de configurare a protectorului de ecran) | xscreensaver-command -prefs |
Se poate întotdeauna deconecta difuzorul PC-ului pentru a dezactiva sunetele
bip. Eliminarea modulului nucleului pcspkr face acest
lucru pentru dvs.
Următorul cod împiedică programul readline(3) utilizat de
bash(1) să emită un semnal sonor atunci când întâlnește
un caracter de alertă (ASCII=7).
$ echo "set bell-style none">> ~/.inputrc
Există 2 resurse disponibile pentru a afla situația utilizării memoriei.
Mesajul de pornire al nucleului din „/var/log/dmesg”
conține dimensiunea totală exactă a memoriei disponibile.
free(1) și top(1) afișează informații
despre resursele de memorie ale sistemului în funcțiune.
Iată un exemplu.
# 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
Poate vă întrebați „dmesg îmi arată că sunt disponibili 990 Mo, iar «free -k» arată că sunt disponibili 320 Mo. Lipsește mai mult de 600 Mo...”.
Nu vă faceți griji cu privire la dimensiunea mare a
„utilizată” și dimensiunea mică a
„liberă” din linia „Mem:”, ci citiți
cea de sub ele (675404 și 321780 în exemplul de mai sus) și relaxați-vă.
Pentru MacBook-ul meu cu 1 Go = 1048576 k DRAM (sistemul video consumă o parte din această memorie), observ următoarele.
Tabel 9.17. Lista dimensiunilor memoriei raportate
| raportare | dimensiune |
|---|---|
| Dimensiunea totală în dmesg | 1016784k = 1Go - 31792k |
| Liberă în dmesg | 990528k |
| Total sub shell | 997184k |
| Liberă sub shell | 20256k (dar efectiv 321780k) |
O întreținere deficitară a sistemului poate expune sistemul la exploatare externă.
Pentru verificarea securității și integrității sistemului, ar trebui să începeți cu următoarele.
Pachetul debsums, consultați
debsums(1) și Secțiune 2.5.2, „Fișierul „Release” de nivel superior și autenticitatea”.
Pachetul chkrootkit, consultați
chkrootkit(1).
Familia de pachete clamav, consultați
clamscan(1) și freshclam(1).
Tabel 9.18. Lista instrumentelor pentru verificarea securității și integrității sistemului
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
logcheck
|
V:5.0, I:6.1 | 120 | demon pentru a trimite prin poșta electronică anomaliile din fișierele jurnal ale sistemului către administrator |
debsums
|
V:4, I:30 | 107 | ustensilă pentru verificarea fișierelor pachetelor instalate în raport cu sumele de control MD5 |
chkrootkit
|
V:9, I:15 | 966 | detector de rootkit |
clamav
|
V:9, I:40 | 33154 | ustensilă antivirus pentru Unix - interfață de linie de comandă |
tiger
|
V:1.4, I:1.8 | 7800 | raportează vulnerabilitățile de securitate ale sistemului |
tripwire
|
V:1.5, I:1.9 | 5050 | verificator de integritate a fișierelor și directoarelor |
john
|
V:1.4, I:8.0 | 469 | instrument activ de spargere a parolelor |
aide
|
V:1.8, I:2.2 | 331 | mediu avansat de detectare a intruziunilor - binar static |
integrit
|
V:0.09, I:0.19 | 2939 | program de verificare a integrității fișierelor |
crack
|
V:0.11, I:0.82 | 153 | program de ghicire a parolelor |
Iată un script simplu pentru a verifica permisiunile incorecte tipice ale fișierelor care pot fi scrise de oricine.
# find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)
|
Atenție |
|---|---|
|
Deoarece pachetul |
Pornirea sistemului ca sistem Linux live (consultați Secțiune 3.2.2, „Sistem de recuperare Linux live pe USB” și Secțiune 3.2.3, „Sistemul de recuperare live Linux din GRUB”) vă facilitează reconfigurarea stocării datelor pe sistemul instalat.
|
Notă |
|---|---|
|
Declarațiile referitoare la discul dur (HDD) se
aplică și altor dispozitive de stocare, cum ar fi SSD / unitate flash
USB / card de memorie / ... .
Înlocuiți numele dispozitivelor din exemple, cum ar fi
|
Este posibil să fie necesar să demontați cu umount(8)
unele dispozitive manual din linia de comandă înainte de a le utiliza, dacă
acestea sunt montate automat de sistemul grafic de birou.
Utilizarea spațiului pe disc poate fi evaluată cu ajutorul programelor
furnizate de pachetele mount,
coreutils și xdu:
mount(8) raportează toate sistemele de fișiere montate (=
discuri).
df(1) raportează utilizarea spațiului pe disc pentru
sistemul de fișiere.
du(1) raportează utilizarea spațiului pe disc pentru
arborele de directoare.
|
Indicație |
|---|---|
|
Puteți introduce rezultatul comenzii |
Pentru configurarea partiției discului,
deși fdisk(8) a fost considerat standard,
parted(8) merită o anumită atenție. „Date de
partiționare a discului”, „tabel de partiții”, „hartă de partiții” și
„etichetă de disc” sunt toate sinonime.
PC-urile mai vechi utilizează schema clasică Master Boot Record (MBR) pentru a stoca datele de partiționare a discului în primul sector, adică sectorul 0 LBA (512 octeți).
PC-urile recente cu Unified Extensible Firmware Interface (UEFI), inclusiv Mac-urile bazate pe Intel, utilizează schema GUID Partition Table (GPT) pentru a stoca datele de partiționare a discului care nu se află în primul sector.
Deși fdisk(8) a fost standardul pentru instrumentul de
partiționare a discurilor, parted(8) îl înlocuiește.
Tabel 9.19. Lista pachetelor de gestionare a partițiilor de disc
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
util-linux
|
V:902, I:1000 | 4384 | utilitare de sistem diverse, inclusiv fdisk(8) și
cfdisk(8) |
parted
|
V:448, I:580 | 126 | programul GNU Parted pentru redimensionarea partițiilor de disc |
gparted
|
V:13, I:93 | 2313 | editor de partiții GNOME bazat pe libparted |
gdisk
|
V:20, I:306 | 940 | editor de partiții pentru discul hibrid GPT/MBR |
kpartx
|
V:17, I:28 | 76 | program pentru crearea hărților dispozitivelor pentru partiții |
|
Atenție |
|---|---|
|
Deși |
|
Notă |
|---|---|
|
Pentru a comuta între GPT și MBR, trebuie să ștergeți direct primele câteva blocuri din
conținutul discului (consultați Secțiune 9.8.6, „Ștergerea conținutului fișierului”)
și să utilizați „ |
Deși reconfigurarea partiției sau ordinea de activare a mediilor de stocare amovibile poate genera denumiri diferite pentru partiții, puteți accesa aceste partiții în mod consecvent. Acest lucru este util și în cazul în care aveți mai multe discuri, iar BIOS/UEFI nu le atribuie denumiri consecvente.
mount(8) cu opțiunea „-U” poate monta
un dispozitiv de blocuri folosind UUID, în loc
să folosească numele fișierului, cum ar fi „/dev/sda3”.
„/etc/fstab” (a se vedea fstab(5))
poate utiliza UUID.
Încărcătoarele de pornire (Secțiune 3.1.2, „Etapa 2: încărcătorul de pornire”) pot utiliza de asemenea UUID.
|
Indicație |
|---|---|
|
Puteți verifica UUID-ul unui dispozitiv special
de blocuri cu De asemenea, puteți verifica UUID-ul și alte informații cu „ |
LVM2 este un manager de volume logice pentru nucleul Linux. Cu LVM2, partițiile de disc pot fi create pe volume logice în loc de discuri dure fizice.
LVM necesită următoarele.
suport pentru «device-mapper» în nucleul Linux (implicit pentru nucleele Debian)
biblioteca de suport pentru cartografierea dispozitivelor în spațiul
utilizatorului (pachetul libdevmapper*)
instrumentele LVM2 din spațiul utilizatorului (pachetul
lvm2)
Vă rugăm să începeți să învățați LVM2 din următoarele pagini de manual.
lvm(8): noțiuni de bază despre mecanismul LVM2 (lista
tuturor comenzilor LVM2)
lvm.conf(5): fișierul de configurare pentru LVM2
lvs(8): raportează informații despre volumele logice
vgs(8): raportează informații despre grupurile de volume
pvs(8): raportează informații despre volumele fizice
Pentru sistemul de fișiere ext4, pachetul
e2fsprogs oferă următoarele.
mkfs.ext4(8) pentru a crea un nou sistem de fișiere
ext4
fsck.ext4(8) pentru a verifica și repara sistemul de
fișiere ext4 existent
tune2fs(8) pentru a configura superblocul sistemului de
fișiere ext4
debugfs(8) pentru a depana interactiv sistemul de fișiere
ext4; acesta are comanda
undel pentru a recupera fișierele șterse).
Comenzile mkfs(8) și fsck(8) sunt
furnizate de pachetul e2fsprogs ca interfețe pentru
diverse programe dependente de sistemul de fișiere
(mkfs.fstype și fsck.fstype). Pentru
sistemul de fișiere ext4, acestea sunt
mkfs.ext4(8) și fsck.ext4(8) (acestea
sunt legate simbolic de mke2fs(8) și
e2fsck(8)).
Comenzi similare sunt disponibile pentru fiecare sistem de fișiere acceptat de Linux.
Tabel 9.20. Lista pachetelor de gestionare a sistemului de fișiere
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
e2fsprogs
|
V:804, I:998 | 1543 | ustensie pentru sistemele de fișiere ext2/ext3/ext4 |
btrfs-progs
|
V:49, I:77 | 5204 | ustensile pentru sistemul de fișiere Btrfs |
reiserfsprogs
|
V:10, I:22 | 473 | ustensile pentru sistemul de fișiere Reiserfs |
zfsutils-linux
|
V:32, I:32 | 1893 | ustensile pentru sistemul de fișiere OpenZFS |
dosfstools
|
V:251, I:573 | 310 | ustensile pentru sistemul de fișiere FAT (Microsoft: MS-DOS, Windows) |
exfatprogs
|
V:37, I:468 | 352 | ustensile pentru sistemul de fișiere exFAT menținut de Samsung. |
exfat-fuse
|
V:2, I:50 | 73 | citește/scrie sistemul de fișiere exFAT controlor (Microsoft) pentru FUSE. |
xfsprogs
|
V:37, I:87 | 4382 | ustensile pentru sistemul de fișiere XFS (SGI: IRIX) |
ntfs-3g
|
V:219, I:527 | 1500 | citește/scrie sistemul de fișiere NTFS (Microsoft: Windows NT, …) controlor pentru FUSE. |
jfsutils
|
V:0.5, I:7.2 | 1104 | ustensile pentru sistemul de fișiere JFS. (IBM: AIX, OS/2) |
xorriso
|
V:15, I:64 | 347 | ustensile pentru sistemul de fișiere ISO-9660 și scrierea CD-urilor/DVD-urilor din libburnia |
wodim
|
V:9, I:97 | 898 | instrument de scriere CD/DVD din linia de comandă din pachetul cdrkit |
genisoimage
|
V:18, I:168 | 1567 | instrument pentru sistemul de fișiere ISO-9660 din linia de comandă din pachetul cdrkit |
reiser4progs
|
V:0.1, I:1.5 | 1367 | ustensile pentru sistemul de fișiere Reiser4 |
hfsprogs
|
V:0.3, I:3.5 | 394 | ustensile pentru sistemul de fișiere HFS și HFS Plus (Apple: Mac OS) |
zerofree
|
V:6, I:120 | 30 | program pentru a șterge blocurile libere din sistemele de fișiere ext2/3/4 |
|
Indicație |
|---|---|
|
Sistemul de fișiere Ext4 este sistemul de fișiere implicit pentru sistemul Linux și se recomandă insistent utilizarea acestuia, cu excepția cazului în care aveți motive specifice pentru a nu o face. Starea Btrfs poate fi găsită la Debian wiki on btrfs și kernel.org wiki on btrfs. Se preconizează că acesta va fi următorul sistem de fișiere implicit după sistemul de fișiere ext4. Unele instrumente permit accesul la sistemul de fișiere fără suportulasigurat de nucleul Linux (a se vedea Secțiune 9.8.2, „Manipularea fișierelor fără montarea discului”). |
Comanda mkfs(8) creează sistemul de fișiere într-un
sistem Linux. Comanda fsck(8) asigură verificarea
integrității și repararea sistemului de fișiere într-un sistem Linux.
Debian nu mai execută implicit comanda fsck după crearea
sistemului de fișiere.
|
Atenție |
|---|---|
|
În general, nu este sigur să rulați |
|
Indicație |
|---|---|
|
Puteți rula comanda Verificați fișierele din „ |
Configurația statică de bază a sistemului de fișiere este dată de
„/etc/fstab”. De exemplu,
«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
|
Indicație |
|---|---|
|
UUID (vedeți Secțiune 9.6.3, „Accesarea partiției folosind UUID”) poate fi utilizat pentru a
identifica un dispozitiv de blocuri în locul numelor normale ale
dispozitivelor de bloc, cum ar fi „ |
Începând cu Linux 2.6.30, nucleul utilizează în mod implicit comportamentul
oferit de opțiunea „relatime”.
Consultați fstab(5) și mount(8).
Caracteristicile unui sistem de fișiere pot fi optimizate prin intermediul
super-blocului său, utilizând comanda tune2fs(8).
Executarea comenzii „sudo tune2fs -l /dev/sda1” afișează
conținutul super-blocului sistemului de fișiere pe
„/dev/sda1”.
Executarea comenzii „sudo tune2fs -c 50 /dev/sda1”
modifică frecvența verificărilor sistemului de fișiere (executarea comenzii
„fsck” în timpul pornirii) la fiecare 50 de porniri pe
„/dev/sda1”.
Executarea comenzii „sudo tune2fs -j /dev/sda1” adaugă
capacitatea de jurnalizare la sistemul de fișiere, adică conversia
sistemului de fișiere de la ext2 la ext3 pe „/dev/sda1”; (efectuați
această operațiune pe sistemul de fișiere nemontat).
Executarea comenzii „sudo tune2fs -O extents,uninit_bg,dir_index
/dev/sda1 && fsck -pf /dev/sda1” convertește partiția din
ext3 în ext4 pe
„/dev/sda1”; (faceți acest lucru pe sistemul de fișiere
nemontat).
|
Avertisment |
|---|---|
|
Vă rugăm să verificați hardware-ul și să citiți pagina de manual a
|
Puteți testa viteza de acces a unui disc dur, de exemplu
„/dev/sda”, cu „hdparm -tT
/dev/sda”. Pentru unele discuri dure conectate cu (E)IDE, puteți
accelera viteza cu „hdparm -q -c3 -d1 -u1 -m16 /dev/sda”
activând „(E) IDE 32-bit I/O support”, activând „fanionul using_dma”,
activând „fanionul interrupt-unmask” și definind „multiple 16 sector I/O”
(periculos!).
Puteți testa funcția de memorie cache de scriere a unui disc dur, de exemplu
„/dev/sda”, cu „hdparm -W
/dev/sda”. Puteți dezactiva funcția de memorie cache de scriere cu
„hdparm -W 0 /dev/sda”.
Este posibil să puteți citi CD-ROM-urile preconfigurate defectuos pe
unitățile CD-ROM moderne de mare viteză, încetinind-o cu „setcd -x
2”.
Discul/unitatea cu stare solidă („Solid State Drive”: SSD) este detectată automat acum.
Reduceți accesările inutile la disc pentru a preveni uzura discului prin
montarea „tmpfs” în ruta de date volatile din
/etc/fstab.
Puteți monitoriza și înregistra discul dvs. dur compatibil cu SMART cu ajutorul demonului
smartd(8).
Instalați pachetul smartmontools.
Identificați unitățile de disc dur listându-le cu df(1).
Să presupunem că unitatea de disc dur care trebuie monitorizată este
„/dev/sda”.
Verificați rezultatul comenzii „smartctl -a /dev/sda”
pentru a vedea dacă funcția SMART este
activată.
Dacă nu, activați-o cu „smartctl -s on -a /dev/sda”.
Activați demonul smartd(8) pentru a rula astfel.
decomentați „start_smartd=yes” din fișierul
„/etc/default/smartmontools”.
reporniți demonul smartd(8) cu comanda „sudo
systemctl restart smartmontools”.
|
Indicație |
|---|---|
|
Demonul |
Aplicațiile creează fișiere temporare în mod normal în directorul de stocare
temporară „/tmp”. Dacă „/tmp” nu
oferă suficient spațiu, puteți specifica un astfel de director de stocare
temporară prin variabila $TMPDIR pentru programele care o
acceptă.
Partițiile create cu ajutorul Managerul de volume logice („Logical Volume Manager”: LVM) (funcționalitate Linux) în momentul instalării pot fi redimensionate cu ușurință prin concatenarea extinderilor pe acestea sau prin trunchierea extinderilor de pe acestea pe mai multe dispozitive de stocare, fără a fi necesară o reconfigurare majoră a sistemului.
Dacă aveți o partiție goală (de exemplu, „/dev/sdx”), o
puteți formata cu mkfs.ext4(1) și o puteți monta
mount (8) într-un director în care aveți nevoie de mai
mult spațiu; (trebuie să copiați conținutul original al datelor).
$ 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
|
Indicație |
|---|---|
|
Alternativ, puteți monta un fișier imagine disc gol (consultați Secțiune 9.7.5, „Crearea fișierului imagine de disc gol”) ca dispozitiv loop (consultați Secțiune 9.7.3, „Montarea fișierului imagine disc”). Utilizarea efectivă a discului crește odată cu datele efectiv stocate. |
Dacă aveți un director gol (de exemplu,
„/path/to/emp-dir”) pe o altă partiție cu spațiu
utilizabil, îl puteți monta (8) cu opțiunea „--bind”
într-un director (de exemplu, „work-dir”) unde aveți
nevoie de mai mult spațiu.
$ sudo mount --bind /path/to/emp-dir work-dir
Dacă aveți spațiu utilizabil într-o altă partiție (de exemplu,
„/path/to/empty” și „/path/to/work”),
puteți crea un director în aceasta și îl puteți stivui pe un director vechi
(de exemplu, „/path/to/old ”) unde aveți nevoie de
spațiu, utilizând OverlayFS pentru nucleul
Linux 3.18 sau mai recent (Debian Stretch 9.0 sau mai recent).
$ sudo mount -t overlay overlay \ -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work
Aici, „/path/to/empty” și
„/path/to/work” ar trebui să se afle pe partiția cu acces
RW pentru a scrie pe „/path/to/old”.
|
Atenție |
|---|---|
|
Aceasta este o metodă învechită. Unele programe software pot să nu funcționeze bine cu o „legătură simbolică către un director”. În schimb, utilizați metodele de „montare” descrise mai sus. |
Dacă aveți un director gol (de exemplu,
„/path/to/emp-dir”) într-o altă partiție cu spațiu
utilizabil, puteți crea o legătură simbolică către director cu
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
|
Avertisment |
|---|---|
|
Nu utilizați o „legătură simbolică către un director” pentru directoarele
gestionate de sistem, cum ar fi „ |
Aici discutăm despre manipulările imaginii discului.
Fișierul imagine disc, „disk.img”, al unui dispozitiv
nemontat, de exemplu, al doilea disc SCSI sau serial ATA
„/dev/sdb”, poate fi creat folosind unul dintre
următoarele instrumente.
# dd if=/dev/sdb of=disk.img; sync
# cp /dev/sdb disk.img ; sync
# cat /dev/sdb > disk.img ; sync
Imaginea discului master boot record
(MBR) (a se vedea Secțiune 9.6.2, „Configurarea partițiilor de disc”)
al unui PC tradițional, care se află în primul sector al discului IDE
primar, poate fi creată folosind dd(1) după cum urmează.
# dd if=/dev/sda of=mbr.img bs=512 count=1 # dd if=/dev/sda of=mbr-nopart.img bs=446 count=1 # dd if=/dev/sda of=mbr-part.img skip=446 bs=1 count=66
"mbr.img": MBR-ul cu tabelul de partiții
"mbr-nopart.img": MBR-ul fără tabelul de partiții
"mbr-part.img": Doar tabelul de partiții al MBR
Dacă creați o imagine a unei partiții a discului original, înlocuiți
„/dev/sda” cu „/dev/sda1” etc.
Fișierul imagine disc, „disk.img”, poate fi scris pe un
dispozitiv nemontat, de exemplu, pe a doua unitate SCSI
„/dev/sdb” cu dimensiunea corespunzătoare, utilizând una
dintre următoarele comenzi.
# dd if=disk.img of=/dev/sdb ; sync
# cp disk.img /dev/sdb ; sync
# cat disk.img >/dev/sdb ; sync
În mod similar, fișierul imagine al partiției de disc,
„partition.img”, poate fi scris pe o partiție nemontată,
de exemplu, prima partiție a celui de-al doilea disc SCSI
„/dev/sdb1” cu dimensiunea corespunzătoare, prin
următoarea comandă.
# dd if=partition.img of=/dev/sdb1 ; sync
Imaginea de disc „partition.img” care conține o singură
imagine de partiție poate fi montată și demontată utilizând dispozitivul de
buclă loop device după cum urmează.
# 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
Acest lucru poate fi simplificat după cum urmează.
# mkdir -p /mnt/loop0 # mount -t auto -o loop partition.img /mnt/loop0 ...hack...hack...hack # umount partition.img
Fiecare partiție a imaginii discului „disk.img” care
conține mai multe partiții poate fi montată utilizând dispozitivul de buclă
loop device.
# 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
Alternativ, efecte similare pot fi obținute utilizând dispozitivele device mapper create de
kpartx(8) din pachetul kpartx, după
cum urmează.
# 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
Un fișier imagine de disc, „disk.img”, poate fi curățat
de toate fișierele eliminate într-o imagine curată și de dimensiune mai
redusă „new.img” prin următoarele.
# 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
Dacă „disk.img” este în ext2, ext3 sau ext4, puteți
utiliza și zerofree(8) din pachetul
zerofree după cum urmează.
# losetup --show -f disk.img /dev/loop0 # zerofree /dev/loop0 # cp --sparse=always disk.img new.img # losetup -d /dev/loop0
Imaginea de disc goală „disk.img”, care poate crește până
la 5 Gio, poate fi creată folosind dd(1) după cum
urmează.
$ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G
În loc să se utilizeze dd(1), aici se poate utiliza
fallocate(8) specializat.
Puteți crea un sistem de fișiere ext4 pe această imagine de disc
„disk.img” utilizând dispozitivul de buclă loop device după cum urmează.
# 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
Pentru „disk.img”, dimensiunea fișierului este de 5,0
Gio, iar utilizarea efectivă a discului este de doar 83 Mio. Această
discrepanță este posibilă deoarece ext4 poate
stoca fișiere disperse.
|
Indicație |
|---|---|
|
Utilizarea efectivă a discului de către fișierul dispers crește odată cu datele care sunt scrise pe acesta. |
Folosind o operație similară pe dispozitivele create de dispozitivul de
buclă loop device sau device mapper ca în Secțiune 9.7.3, „Montarea fișierului imagine disc”, puteți partiționa această imagine
de disc „disk.img” folosind parted(8)
sau fdisk(8) și puteți crea un sistem de fișiere pe
acesta folosind mkfs.ext4(8),
mkswap(8) etc.
|
Indicație |
|---|---|
|
Atât |
Fișierul imagine ISO9660
„cd.iso” din arborele directorului sursă
„source_directory” poate fi creată folosind
genisoimage(1) furnizat de cdrkit după cum urmează.
# genisoimage -r -J -T -V volume_id -o cd.iso source_directory
În mod similar, fișierul imagine ISO9660 ce poate fi pornit,
„cdboot.iso”, poate fi creat din
debian-installer, ca arbore de directoare în
„source_directory”, prin următoarele.
# 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
Aici încărcătorul de pornire Isolinux Isolinux boot loader (a se vedea Secțiune 3.1.2, „Etapa 2: încărcătorul de pornire”) este utilizat pentru pornire.
Puteți calcula valoarea md5sum și crea imaginea ISO9660 direct de pe dispozitivul CD-ROM, după cum urmează.
$ 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
|
Avertisment |
|---|---|
|
Pentru a obține rezultatul corect, trebuie să evitați cu atenție eroarea de citire anticipată a sistemului de fișiere ISO9660 din Linux, așa cum este descris mai sus. |
|
Indicație |
|---|---|
|
DVD-ul este doar un CD mare pentru |
Puteți găsi un dispozitiv utilizabil după cum urmează.
# wodim --devices
Apoi, CD-ul gol este introdus în unitatea CD, iar fișierul imagine ISO9660,
„cd.iso”, este scris pe acest dispozitiv, de exemplu
„/dev/sda”, folosind wodim(1) după cum
urmează.
# wodim -v -eject dev=/dev/sda cd.iso
Dacă se utilizează CD-RW în loc de CD-R, procedați în felul următor.
# wodim -v -eject blank=fast dev=/dev/sda cd.iso
|
Indicație |
|---|---|
|
Dacă sistemul dvs. de birou montează automat CD-urile, demontați-l cu
comanda „ |
Dacă „cd.iso” conține o imagine ISO9660, atunci
următoarea comandă o montează manual în „/cdrom”.
# mount -t iso9660 -o ro,loop cd.iso /cdrom
|
Indicație |
|---|---|
|
Sistemele grafice de birou moderne pot monta automat suporturi amovibile, cum ar fi CD-urile formatate ISO9660 (vedeți Secțiune 10.1.7, „Dispozitive de stocare amovibile (detașabile)”). |
Aici discutăm despre manipularea directă a datelor binare pe suporturile de stocare.
Cea mai simplă metodă de vizualizare a datelor binare este utilizarea
comenzii „od -t x1”.
Tabel 9.21. Lista pachetelor care vizualizează și editează date binare
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
coreutils
|
V:897, I:1000 | 17994 | pachetul de bază care are od(1) pentru a descărca fișiere
(HEX, ASCII, OCTAL, …) |
bsdmainutils
|
V:5, I:150 | 17 | pachet de ustensiler care are hd(1) pentru a descărca
fișiere (HEX, ASCII, OCTAL, …) |
hexedit
|
V:1.0, I:8.5 | 70 | editor și vizor binar (HEX, ASCII) |
bless
|
V:0.2, I:1.7 | 924 | editor hexazecimal cu funcții avansate (GNOME) |
okteta
|
V:1, I:12 | 1589 | editor hexazecimal cu funcții avansate (KDE4) |
ncurses-hexedit
|
V:0.2, I:1.3 | 130 | editor și vizor binar (HEX, ASCII, EBCDIC) |
beav
|
V:0.05, I:0.36 | 137 | editor și vizor binar (HEX, ASCII, EBCDIC, OCTAL, …) |
|
Indicație |
|---|---|
|
HEX este utilizat ca acronim pentru formatul hexazecimal cu baza numerică 16. OCTAL este pentru formatul octal cu baza numerică 8. ASCII este pentru Codul standard american pentru schimbul de informații, adică codul normal al textului în limba engleză. EBCDIC este pentru Extended Binary Coded Decimal Interchange Code utilizat pe sistemele de operare IBM mainframe. |
Există instrumente pentru citirea și scrierea fișierelor fără montarea discului.
Sistemele software RAID oferite de nucleul Linux asigură redundanța datelor la nivelul sistemului de fișiere al nucleului pentru a obține un nivel ridicat de fiabilitate a stocării.
Există instrumente pentru a adăuga redundanță de date la fișiere la nivel de program de aplicație, pentru a obține niveluri ridicate de fiabilitate a stocării.
Tabel 9.23. Lista instrumentelor pentru adăugarea redundanței datelor la fișiere
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
par2
|
V:11, I:120 | 298 | set de volume de arhivă Parity (Parity Archive Volume Set), pentru verificarea și repararea fișierelor |
dvdisaster
|
V:0.1, I:1.4 | 1422 | protecție împotriva pierderii datelor/zgârieturilor/îmbătrânirii pentru suporturile CD/DVD |
dvbackup
|
V:0.01, I:0.07 | 413 | instrument de copie de rezervă utilizând camere video MiniDV (furnizând
rsbep(1)) |
Există instrumente pentru recuperarea fișierelor de date și analiza tehnico-criminalistică.
Tabel 9.24. Lista pachetelor pentru recuperarea fișierelor de date și analiza tehnico-criminalistică
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
testdisk
|
V:2, I:27 | 1495 | ustensile pentru scanarea partițiilor și recuperarea discurilor |
magicrescue
|
V:0.3, I:2.1 | 257 | ustensilă pentru recuperarea fișierelor prin căutarea de octeți magici |
scalpel
|
V:0.3, I:2.6 | 89 | economic, cu performanțe ridicate în prelucrarea fișierelor pentru recuperarea acestora |
myrescue
|
V:0.3, I:2.3 | 83 | recuperează date de pe discuri dure deteriorate |
extundelete
|
V:0.6, I:7.9 | 152 | instrument pentru recuperarea fișierelor șterse din sistemul de fișiere ext3/4 |
ext4magic
|
V:0.4, I:3.8 | 235 | instrument pentru recuperarea fișierelor șterse din sistemul de fișiere ext3/4 |
ext3grep
|
V:0.3, I:2.2 | 299 | instrument pentru recuperarea fișierelor șterse din sistemul de fișiere ext3 |
scrounge-ntfs
|
V:0.2, I:1.8 | 49 | program de recuperare a datelor pentru sisteme de fișiere NTFS |
gzrt
|
V:0.04, I:0.50 | 33 | set de instrumente de recuperare gzip |
sleuthkit
|
V:2, I:24 | 1119 | instrumente pentru analiza tehnico-criminalistică. (Sleuthkit -- Kit de detectiv) |
autopsy
|
V:0.2, I:1.4 | 1026 | interfață grafică pentru SleuthKit |
foremost
|
V:0.5, I:4.4 | 102 | aplicație tehnico-criminalistică pentru recuperarea datelor |
guymager
|
V:0.22, I:0.93 | 1049 | instrument de procesare a imaginilor de fișiere tehnico-criminalistică bazat pe Qt |
dcfldd
|
V:0.4, I:3.0 | 113 | versiune îmbunătățită a dd pentru analiză
tehnico-criminalistică și securitate |
|
Indicație |
|---|---|
|
Puteți recupera fișierele șterse din sistemul de fișiere ext2 folosind
comenzile |
Când un fișier este prea mare pentru a fi copiat ca un singur fișier, puteți copia conținutul acestuia după ce îl împărțiți în bucăți de, de exemplu, 2000 Mio și apoi puteți reuni aceste bucăți în fișierul original.
$ split -b 2000m large_file $ cat x* >large_file
|
Atenție |
|---|---|
|
Asigurați-vă că nu aveți fișiere care încep cu „ |
Pentru a șterge conținutul unui fișier, cum ar fi un fișier jurnal, nu
utilizați rm(1) pentru a șterge fișierul și apoi creați
un fișier gol nou, deoarece fișierul poate fi accesat în intervalul dintre
comenzi. Următoarea este metoda sigură de a șterge conținutul fișierului.
$ :>file_to_be_cleared
Următoarele comenzi creează fișiere fictive sau goale.
$ 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
Ar trebui să găsiți următoarele fișiere.
„5kb.file” ce conține 5 Ko de zerouri.
„7mb.file” ce conține 7 Mo de date aleatorii.
"zero.file" poate fi un fișier de 0 octeți. Dacă a
existat, mtime este actualizat, în timp ce conținutul și
lungimea acestuia sunt păstrate.
"alwayszero.file" este întotdeauna un fișier de 0
octeți. Dacă exista, mtime este actualizat și conținutul
său este reinițializat.
Există mai multe modalități de a șterge complet datele de pe un dispozitiv
precum un disc dur, de exemplu, un stick de
memorie USB la „/dev/sda”.
|
Atenție |
|---|---|
|
Verificați mai întâi locația stick-ului de
memorie USB cu |
Ștergeți tot conținutul discului punând datele la 0 cu următoarea comandă.
# dd if=/dev/zero of=/dev/sda
Ștergeți totul suprascriind cu date aleatorii, ca mai jos.
# dd if=/dev/urandom of=/dev/sda
Ștergeți totul suprascriind cu date aleatorii în mod foarte eficient, în felul următor.
# shred -v -n 1 /dev/sda
Alternativ, puteți utiliza badblocks(8) cu opțiunea
-t random.
Deoarece dd(1) este disponibil din shell-ul multor CD-uri
Linux care pot fi pornite, cum ar fi CD-ul de instalare Debian, puteți
șterge complet sistemul instalat executând o comandă de ștergere de pe un
astfel de suport pe discul dur al sistemului, de exemplu,
„/dev/sda”, „/dev/sda” etc.
Zona neutilizată de pe un disc dur (sau stick
de memorie USB), de exemplu „/dev/sdb1”, poate
conține încă date șterse, deoarece acestea sunt doar deconectate de la
sistemul de fișiere. Acestea pot fi șterse prin suprascriere.
# 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
|
Avertisment |
|---|---|
|
De obicei, acest lucru este suficient pentru stick-ul de memorie USB. Dar nu este perfect. Majoritatea părților din numele fișierelor șterse și atributele acestora pot fi ascunse și pot rămâne în sistemul de fișiere. |
Chiar dacă ați șters accidental un fișier, atâta timp cât acel fișier este încă utilizat de o aplicație (în modul citire sau scriere), este posibil să recuperați un astfel de fișier.
De exemplu, încercați următoarele
$ 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
Executați pe un alt terminal (când aveți pachetul lsof
instalat) următoarele.
$ 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
Fișierele cu legături dure pot fi identificate prin „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
Atât „baz” cât și „foo” au un număr de
legături de „2” (>1), ceea ce arată că au legături dure. Numărul lor de
nod-i este comune „2738404”. Aceasta înseamnă
că sunt același fișier legat dur. Dacă nu găsiți toate fișierele legate dur
din întâmplare, le puteți căuta după nodul-i,
de exemplu „2738404”, în felul următor.
# find /path/to/mount/point -xdev -inum 2738404
Având acces fizic la calculatorul dvs., oricine poate obține cu ușurință privilegii de root și acces la toate fișierele de pe calculatorul dvs. (consultați Secțiune 4.6.4, „Securizarea parolei root”). Aceasta înseamnă că sistemul de parole de autentificare nu poate proteja datele dvs. private și sensibile împotriva unui eventual furt al calculatorului. Pentru a face acest lucru, trebuie să implementați tehnologia de criptare a datelor. Deși GNU privacy guard (a se vedea Secțiune 10.3, „Infrastructura de securitate a datelor”) poate cripta fișiere, acest lucru necesită eforturi din partea utilizatorului.
Dm-crypt facilitează criptarea automată a datelor prin intermediul modulelor native ale nucleului Linux, cu eforturi minime din partea utilizatorului, utilizând device-mapper.
Tabel 9.25. Lista instrumentelor de criptare a datelor
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
cryptsetup
|
V:35, I:81 | 465 | instrumente pentru dispozitivul de blocuri criptat (dm-crypt / LUKS) |
cryptmount
|
V:2.2, I:2.8 | 231 | instrumente pentru dispozitivul de blocuri criptat (dm-crypt / LUKS) cu accent pe montarea/demontarea de către utilizatorii normali |
fscrypt
|
V:0.4, I:1.1 | 6471 | instrumente pentru criptarea sistemelor de fișiere Linux (fscrypt) |
libpam-fscrypt
|
V:0.27, I:0.33 | 5589 | modul PAM pentru criptarea sistemului de fișiere Linux (fscrypt) |
|
Atenție |
|---|---|
|
Criptarea datelor costă timp CPU etc. Datele criptate devin inaccesibile în cazul în care parola lor este pierdută. Vă rugăm să evaluați beneficiile și costurile. |
|
Notă |
|---|---|
|
Întregul sistem Debian poate fi instalat pe un disc criptat de debian-installer (lenny sau mai nou) folosind dm-crypt/LUKS și initramfs. |
|
Indicație |
|---|---|
|
Consultați Secțiune 10.3, „Infrastructura de securitate a datelor” pentru instrumentul utilitar de criptare a spațiului utilizatorului: GNU Privacy Guard. |
Puteți cripta conținutul dispozitivelor de mare volum amovibile, de exemplu
un stick de memorie USB pe
„/dev/sdx”, utilizând dm-crypt/LUKS. Pur și
simplu îl formatați după cum urmează.
# 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
Apoi, acesta poate fi montat la fel ca unul normal pe
„/media/username/disk_label”, cu
excepția solicitării parolei (a se vedea Secțiune 10.1.7, „Dispozitive de stocare amovibile (detașabile)”) în mediul grafic de birou modern
utilizând pachetul udisks2. Diferența este că toate
datele scrise pe acesta sunt criptate. Introducerea parolei poate fi
automatizată folosind «keyring» (a se vedea Secțiune 10.3.6, „Inel de chei pentru parole”).
În mod alternativ, puteți formata suportul în alt tip de sistem de fișiere,
de exemplu, ext4 cu „mkfs.ext4 /dev/mapper/sdx1”. Dacă
se utilizează în schimb btrfs, trebuie instalat pachetul
udisks2-btrfs. Pentru aceste sisteme de fișiere, este
posibil să fie necesară configurarea drepturilor de proprietate și a
permisiunilor pentru fișiere.
De exemplu, o partiție de disc criptată creată cu dm-crypt/LUKS pe
„/dev/sdc5” de către programul de instalare Debian poate
fi montată pe „/mnt” astfel:
$ 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 distribuie Nucleul Linux modularizat ca pachete pentru arhitecturile acceptate.
Dacă citiți această documentație, probabil că nu trebuie să compilați singur nucleul Linux.
Multe caracteristici Linux sunt configurabile prin intermediul parametrilor nucleului, după cum urmează.
Parametrii nucleului inițializați de încărcătorul de pornire (a se vedea Secțiune 3.1.2, „Etapa 2: încărcătorul de pornire”)
Parametrii nucleului modificați de sysctl(8) în timpul
execuției pentru cei accesibili prin sysfs (a se vedea Secțiune 1.2.12, „procfs și sysfs”)
Parametrii modulului stabiliți prin argumentele lui
modprobe(8) atunci când un modul este activat (a se vedea
Secțiune 9.7.3, „Montarea fișierului imagine disc”)
Consultați „The Linux kernel user’s and administrator’s guide » The kernel’s command-line parameters" pentru detalii.
Majoritatea programelor normale nu au
nevoie de antete ale nucleului și, de fapt, se pot întrerupe dacă le
utilizați direct pentru compilare. Acestea ar trebui compilate pe baza
antetelor din „/usr/include/linux” și
„/usr/include/asm” furnizate de pachetul
libc6-dev (creat din pachetul sursă
glibc) pe sistemul Debian.
|
Notă |
|---|---|
|
Pentru compilarea unor programe specifice nucleului, cum ar fi modulele
nucleului din sursă externă și demonul automounter ( |
Debian are propria sa metodă de compilare a nucleului și a modulelor aferente.
Tabel 9.26. Lista pachetelor cheie care trebuie instalate pentru recompilarea nucleului pe sistemul Debian
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
build-essential
|
V:17, I:508 | 17 | pachete esențiale pentru construirea pachetelor Debian:
make, gcc, … |
bzip2
|
V:170, I:972 | 114 | instrumente de comprimare și decomprimare pentru fișiere bz2 |
libncurses5-dev
|
I:41 | 6 | biblioteci pentru dezvoltatori și documente pentru ncurses |
git
|
V:387, I:602 | 50972 | git: sistem distribuit de control al reviziei utilizat de nucleul Linux |
fakeroot
|
V:32, I:511 | 225 | furnizează mediul fakeroot pentru construirea pachetului ca non-root |
initramfs-tools
|
V:486, I:989 | 52 | instrument pentru a construi un initramfs (specific Debian) |
dkms
|
V:80, I:147 | 235 | dynamic kernel module support (DKMS) (generic) |
module-assistant
|
V:1, I:14 | 391 | instrument de ajutor pentru crearea pachetului de module (specific Debian) |
devscripts
|
V:6, I:34 | 2770 | scripturi de ajutor pentru un întreținător de pachete Debian (specific Debian) |
Dacă utilizați initrd în Secțiune 3.1.2, „Etapa 2: încărcătorul de pornire”, asigurați-vă că citiți informațiile
aferente în initramfs-tools(8),
update-initramfs(8), mkinitramfs(8) și
initramfs.conf(5).
|
Avertisment |
|---|---|
|
Nu puneți legături simbolice către directoarele din arborele sursă (de
exemplu, „ |
|
Notă |
|---|---|
|
La compilarea celui mai recent nucleu Linux pe sistemul Debian
dynamic kernel module support (DKMS) este un nou cadru independent de distribuție conceput pentru a permite actualizarea modulelor individuale ale nucleului fără schimbarea întregului nucleu. Acest lucru este utilizat pentru întreținerea modulelor din afara arborelui. De asemenea, acest lucru facilitează foarte mult reconstruirea modulelor pe măsură ce actualizați nucleele. |
Pentru a construi pachete binare de nucleu personalizate din sursa de nucleu
din amonte, trebuie să utilizați ținta „deb-pkg”
furnizată de acesta.
$ 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
|
Indicație |
|---|---|
|
Pachetul linux-source-version furnizează sursa
nucleului Linux cu plasturi(corecții) Debian ca
„ |
Pentru a construi pachete binare specifice din pachetul sursă al nucleului
Debian, trebuie să utilizați obiectivele
„binary-arch_architecture_featureset_flavour”
din „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
Mai multe informații:
Debian Wiki: KernelFAQ
Debian Wiki: DebianKernel
Debian Linux Kernel Handbook: https://kernel-handbook.debian.net
Controlorul hardware este codul care rulează pe CPU-urile principale ale
sistemului țintă. Majoritatea controlorilor hardware sunt disponibili acum
ca software liber și sunt incluși în pachetele normale de nucleu Debian în
zona main.
Firmware-ul este codul sau datele încărcate pe dispozitivul atașat sistemului țintă (de exemplu, microcode CPU, codul de redare care rulează pe GPU sau FPGA / CPLD date, ...). Unele pachete firmware sunt disponibile ca software gratuit, dar multe pachete firmware nu sunt disponibile ca software gratuit deoarece conțin date binare fără sursă. Instalarea acestor date de firmware este esențială pentru ca dispozitivul să funcționeze conform așteptărilor.
Pachetele de date firmware care conțin date încărcate în memoria volatilă a dispozitivului țintă.
firmware-linux-free (main)
firmware-linux-nonfree (non-free-firmware)
firmware-linux-* (non-free-firmware)
*-firmware (non-free-firmware)
intel-microcode (non-free-firmware)
amd64-microcode (non-free-firmware)
Pachetele de programe de actualizare a firmware-ului care actualizează datele din memoria nevolatilă a dispozitivului țintă.
fwupd (main): Demon de
actualizare a firmware-ului care descarcă datele firmware de la Linux Vendor Firmware Service.
gnome-firmware (main): interfață grafică GTK pentru
«fwupd»
plasma-discover-backend-fwupd (main): interfață grafică
Qt pentru «fwupd»
Vă rugăm să rețineți că accesul la pachetele
non-free-firmware sunt furnizate de mediile de instalare
oficiale pentru a oferi utilizatorului o experiență de instalare funcțională
începând cu Debian 12 Bookworm. Zona non-free-firmware
este descrisă în Secțiune 2.1.5, „Noțiuni de bază despre arhiva Debian”.
Vă rugăm să rețineți, de asemenea, că datele firmware descărcate de fwupd de la Linux Vendor Firmware Service și
încărcate în nucleul Linux care rulează pot fi non-free.
Utilizarea sistemului virtualizat ne permite să rulăm mai multe instanțe ale sistemului simultan pe un singur hardware.
|
Indicație |
|---|---|
|
Consultați Debian wiki on SystemVirtualization. |
Există mai multe platforme de virtualizare și instrumente de emulare.
Pachete complete de emulare a hardware-ului „hardware emulation” precum cele instalate de metapachetul games-emulator
În principal emulație la nivel de CPU cu unele emulări de dispozitive de In/Ieș, cum ar fi QEMU
În principal virtualizare la nivel de CPU cu unele emulări de dispozitive de In/Ieș, cum ar fi Kernel-based Virtual Machine (KVM)
Virtualizarea containerelor la nivel de sistem de operare cu suport la nivel
de nucleu, cum ar fi LXC (Linux
Containers), Docker,
systemd-nspawn(1), ...
Virtualizarea accesului la sistemul de fișiere la nivel de sistem de operare cu suprascrierea apelului bibliotecii de sistem pe ruta fișierului, cum ar fi chroot
Virtualizarea accesului la sistemul de fișiere la nivel de sistem de operare cu suprascrierea apelului bibliotecii de sistem privind proprietatea asupra fișierului, cum ar fi fakeroot
Emularea API a sistemului de operare, cum ar fi Wine
Virtualizarea la nivel de interpret cu selectarea executabilului și suprascrierea bibliotecilor în timp de execuție, cum ar fi virtualenv și venv pentru Python
Virtualizarea containerelor utilizează Secțiune 4.7.5, „Caracteristici de securitate Linux” și este tehnologia de bază a Secțiune 7.7, „Cutia cu nisip (sandbox)”.
Iată câteva pachete care vă vor ajuta să configurați sistemul virtualizat.
Tabel 9.27. Lista instrumentelor de virtualizare
| pachet | popcon(popularitate) | dimensiune | descriere |
|---|---|---|---|
coreutils
|
V:897, I:1000 | 17994 | Instrumente GNU de bază care conțin chroot(8) |
util-linux
|
V:902, I:1000 | 4384 | utiități de sistem diverse care conțin unshare(1) |
systemd-container
|
V:74, I:77 | 2458 | instrumente systemd container/nspawn care conțin
systemd-nspawn(1) |
schroot
|
V:5.6, I:7.2 | 2222 | instrument specializat pentru executarea pachetelor binare Debian în chroot |
sbuild
|
V:1.3, I:4.4 | 157 | instrument pentru construirea de pachete binare Debian din surse Debian |
debootstrap
|
V:5, I:46 | 330 | creează și pornește un sistem Debian de bază (scris în sh) |
mmdebstrap
|
V:6, I:11 | 574 | creează și pornește un sistem Debian (scris în Perl) |
cdebootstrap
|
V:0.1, I:1.4 | 114 | creează și pornește un sistem Debian (scris în C) |
cloud-image-utils
|
V:1, I:15 | 66 | utilități de gestionare a imaginilor în cloud |
cloud-guest-utils
|
V:4, I:19 | 71 | utilități pentru invitați în cloud |
virt-manager
|
V:13, I:50 | 2310 | Gestionar mașină virtuală: aplicație de mediu grafic de birou pentru gestionarea mașinilor virtuale |
libvirt-clients
|
V:50, I:72 | 1155 | programe pentru biblioteca libvirt |
docker.io
|
V:46, I:49 | 98998 | docker: mediu de execuție de containere Linux |
podman
|
V:27, I:30 | 81828 | podman: motor pentru a rula containere bazate pe OCI în Pods |
podman-docker
|
V:2.3, I:2.8 | 275 | motor pentru a rula containere bazate pe OCI în Pods - învăluitor pentru docker |
incus
|
V:0.7, I:2.6 | 21 | Incus: container de sistem și gestionar de mașini virtuale |
games-emulator
|
I:0.20 | 21 | games-emulator: emulatoare Debian pentru jocuri |
bochs
|
V:0.06, I:0.74 | 8180 | Bochs: emulator PC IA-32 |
qemu-system
|
I:22 | 80 | QEMU: binare de emulare completă a sistemului |
qemu-user
|
V:5.5, I:9.2 | 464225 | QEMU: binare de emulare în modul utilizator |
qemu-utils
|
V:14, I:110 | 12157 | QEMU: utilități |
qemu-system-x86
|
V:54, I:94 | 67511 | KVM: virtualizare completă pe hardware x86 cu hardware-assisted virtualization |
virtualbox
|
V:3.9, I:4.7 | 151525 | VirtualBox: soluție de virtualizare x86 pe i386 și amd64 |
gnome-boxes
|
V:1.4, I:7.1 | 6847 | Boxes: aplicație GNOME simplă pentru accesarea sistemelor virtuale |
xen-tools
|
V:0.1, I:1.6 | 719 | instrumente pentru gestionarea serverului virtual debian XEN |
wine
|
V:14, I:58 | 204 | Wine: implementarea API Windows (suita standard) |
dosbox
|
V:2, I:13 | 2697 | DOSBox: emulator x86 cu grafică Tandy/Herc/CGA/EGA/VGA/SVGA, sunet și DOS |
lxc
|
V:10, I:12 | 1627 | Linux containers user space tools |
python3-venv
|
V:9, I:139 | 6 | venv pentru crearea de medii virtuale python (biblioteca de sistem) |
python3-virtualenv
|
V:8, I:42 | 417 | virtualenv pentru crearea de medii python virtuale izolate |
pipx
|
V:7, I:44 | 3613 | pipx pentru instalarea aplicațiilor python în medii izolate |
Consultați articolul Wikipedia Compararea platformelor de mașini virtuale pentru o comparație detaliată a diferitelor soluții de virtualizare a platformelor.
|
Notă |
|---|---|
|
Nucleele Debian implicite acceptă KVM de la
|
Fluxul de lucru tipic pentru virtualizare implică mai multe etape.
Creați un sistem de fișiere gol (un arbore de fișiere sau o imagine de disc).
Arborele de fișiere poate fi creat prin „mkdir -p
/ruta/la/chroot”.
Fișierul imagine de disc brut poate fi creat cu dd(1) (a
se vedea Secțiune 9.7.1, „Crearea fișierului imagine de disc” și Secțiune 9.7.5, „Crearea fișierului imagine de disc gol”).
qemu-img(1) poate fi utilizat pentru a crea și converti
fișiere imagine de disc acceptate de QEMU.
Formatul de fișier brut și VMDK poate fi utilizat ca format comun între instrumentele de virtualizare.
Montați imaginea discului cu mount(8) pe sistemul de
fișiere (opțional).
Pentru fișierul imagine de disc brut, montați-l ca dispozitiv loop device sau dispozitiv device mapper (a se vedea Secțiune 9.7.3, „Montarea fișierului imagine disc”).
Pentru imaginile de disc acceptate de QEMU, montați-le ca network block device (vedeți Secțiune 9.11.3, „Montarea fișierului imagine al discului virtual”).
Populați sistemul de fișiere țintă cu datele de sistem necesare.
Utilizarea unor programe precum debootstrap și
cdebootstrap ajută la acest proces (a se vedea Secțiune 9.11.4, „Sistemul chroot”).
Utilizați programe de instalare ale sistemelor de operare sub emulația sistemului complet.
Rulați un program într-un mediu virtualizat.
chroot oferă un mediu virtualizat de bază suficient pentru a compila programe, a rula aplicații de consolă și a rula demoni în el.
QEMU oferă emulare CPU multi-platformă.
QEMU cu KVM oferă emulare completă a sistemului prin virtualizare asistată de hardware hardware-assisted virtualization.
VirtualBox oferă emulare completă a sistemului pe i386 și amd64 cu sau fără virtualizare asistată de hardware hardware-assisted virtualization.
Pentru fișierul imagine de disc brut, vedeți Secțiune 9.7, „Imaginea discului”.
Pentru alte fișiere imagine de disc virtual, puteți utiliza
qemu-nbd(8) pentru a le exporta utilizând protocolul
network block device (dispozitiv
de blocuri din rețea) și a le monta utilizând modulul nucleului
nbd.
qemu-nbd(8) acceptă formatele de disc acceptate de QEMU: raw, qcow2,
qcow, vmdk, vdi, bochs, cow (user-mode
Linux copy-on-write), parallels, dmg, cloop, vpc, vvfat (VFAT virtual) și host_device.
Dispozitivul network block device
poate accepta partiții în același mod ca dispozitivul loop device (consultați Secțiune 9.7.3, „Montarea fișierului imagine disc”). Puteți monta prima partiție din
„disk.img” după cum urmează.
# modprobe nbd max_part=16 # qemu-nbd -v -c /dev/nbd0 disk.img ... # mkdir /mnt/part1 # mount /dev/nbd0p1 /mnt/part1
|
Indicație |
|---|---|
|
Puteți exporta numai prima partiție din „ |
Dacă doriți să încercați un nou mediu Debian de la o consolă terminal, vă
recomand să utilizați chroot. Acest lucru vă
permite să rulați aplicații de consolă Debian unstable și
testing fără riscurile obișnuite asociate și fără
repornire. chroot(8) este cea mai de bază modalitate.
|
Atenție |
|---|---|
|
Exemplele de mai jos presupun că atât sistemul părinte, cât și sistemul
chroot au aceeași arhitectură CPU |
Deși puteți crea manual un mediu chroot(8) utilizând
debootstrap(1), acest lucru necesită eforturi netriviale.
Pachetul sbuild pentru a construi pachete
Debian din sursă utilizează mediul chroot gestionat de pachetul schroot. Acesta vine cu scriptul ajutător
sbuild-createchroot(1). Să învățăm cum funcționează
executându-l după cum urmează.
$ sudo mkdir -p /srv/chroot $ sudo sbuild-createchroot -v --include=eatmydata,ccache unstable /srv/chroot/unstable-amd64-sbuild http://deb.debian.org/debian ...
Vedeți cum debootstrap(8) completează datele sistemului
pentru mediul unstable sub
„/srv/chroot/unstable-amd64-sbuild” pentru un sistem de
compilare minim.
Vă puteți conecta la acest mediu utilizând schroot(1).
$ sudo schroot -v -c chroot:unstable-amd64-sbuild
Vedeți cum este creat un shell de sistem care rulează în mediul
unstable.
|
Notă |
|---|---|
|
Fișierul „ |
|
Notă |
|---|---|
|
Unele programe sub chroot pot necesita acces la mai multe fișiere din
sistemul părinte pentru a funcționa decât oferă
|
|
Indicație |
|---|---|
|
Pachetul |
|
Indicație |
|---|---|
|
Comanda |
Dacă doriți să încercați un nou mediu grafic de birou al oricărui sistem de
operare, vă recomand să utilizați QEMU sau
KVM pe un sistem Debian stable
pentru a rula mai multe sisteme de mediu de birou în siguranță utilizând
virtualizare. Acestea vă permit să
rulați orice aplicații de mediu de birou, inclusiv cele din Debian
unstable și testing, fără riscurile
obișnuite asociate cu acestea și fără repornire.
Deoarece QEMU pur este foarte lent, se recomandă accelerarea acestuia cu KVM atunci când sistemul gazdă îl acceptă.
Gestionarul de mașini virtuale
cunoscut și ca virt-manager este un instrument cu
interfață grafică, convenabil pentru gestionarea mașinilor virtuale KVM prin
libvirt.
Imaginea discului virtual „virtdisk.qcow2” care conține
un sistem Debian pentru QEMU poate fi creată
utilizând debian-installer: Small
CDs după cum urmează.
$ 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 ...
|
Indicație |
|---|---|
|
Rularea altor distribuții GNU/Linux precum Ubuntu și Fedora sub virtualizare este o modalitate excelentă de a învăța sfaturi de configurare. Alte sisteme de operare proprietare pot fi rulate foarte bine și sub această virtualizare GNU/Linux. |
Vedeți mai multe sfaturi la Debian wiki: SystemVirtualization.
[2] Exemple de personalizare mai elaborate: „Vim Galore”, „sensible.vim”, ...
[3] vim-pathogen a fost popular.