User Tools

Site Tools


linux-admin:capitole:capitol-11

11. Investigarea sistemului, hardware

Din rațiuni precum documentare, monitorizare, depanare, informare statistică ne propunem să investigăm un sistem din punct de vedere hardware.

Alte tipuri de investigații folosite până la acest curs au fost:

  • investigarea proceselor (ps, top)
  • investigarea sistemului de fișiere
  • investigarea sistemului de operare (kernel, distribuție) (uname, /etc/issue)

Subiecte abordate

  • Investigarea hardware-ului și a resurselor consumate

Utilitare folosite

  • /dev, /proc/cpuinfo, /proc/meminfo, lscpu, free, uptime, pidstat, mpstat, vmstat, iostat, iotop, lspci, lshw, inxi, lsusb, dstat, lsblk, /dev, /dev/disk/by-...

Bune practici

  • Utlitare de afișare și utilitare/fișiere care pot fi prelucrate
  • Investigarea este un mijloc, nu un obiectiv

Exerciții

Demo-uri

  1. Intrați în /dev și faceți un long listing a conținutului:
    cd /dev/ ; ls -la
  2. Observați informațiile prezentate și identificați ce este diferit față de un fișier normal.
    • tipul fișierului este 'c' sau 'b' (în loc de '-' sau 'd')
    • în loc de mărimea fișerului aveți o pereche de numere (numite număr major și număr minor)
  3. Listați în format lung toate dispozitivele de tipul tty, apoi toate dispozitive de tip harddisk sau partiție
    alexj@hathor /dev $ ls -la tty*
    crw--w---- 1 root tty     4,  0 Mar 16 18:27 tty0
    crw-rw---- 1 root tty     4,  1 Mar 16 18:27 tty1
    crw--w---- 1 root tty     4, 10 Mar 16 18:27 tty10
    crw--w---- 1 root tty     4, 11 Mar 16 18:27 tty11
    crw--w---- 1 root tty     4, 12 Mar 16 18:27 tty12
    crw--w---- 1 root tty     4, 13 Mar 16 18:27 tty13
    [...]
    alexj@hathor /dev $ ls -la [sh]d*
    brw-rw---- 1 root disk 8,  0 Mar 22 17:48 sda
    brw-rw---- 1 root disk 8,  1 Mar 16 18:27 sda1
    brw-rw---- 1 root disk 8,  2 Mar 22 12:21 sda2
    brw-rw---- 1 root disk 8,  5 Mar 16 18:27 sda5
    brw-rw---- 1 root disk 8, 16 Mar 22 12:21 sdb
    brw-rw---- 1 root disk 8, 17 Mar 16 18:27 sdb1
    • Observați faptul că fiecare intrare care aparține aceluiași hardware are acelasi număr major, dar fiecare are un număr minor diferit.
  4. Listați conținutul lui /dev/random
    cat /dev/random
    • Folosiți ctrl-c pentru a opri procesul cat.
  5. Încercați să scrieți un text în fișierul /dev/full.
    echo "test">/dev/full
    • Observați mesajul de eroare. Pseudodispozitivul simulează un dispozitiv ce nu mai poate accepta date pentru că este umplut.
  6. Folosind utilitarul dd, creați un fișier de 1KB ce conține doar zerouri (nu caracterul '0' ci caracterul cu codul ASCII 0).
    dd if=/dev/zero of=~/zeros bs=1KB count=1
    • Folosiți utilitarul hexdump sau xxd pentru a vizualiza conținutul fișierului zeros.
  7. Intrați în /proc, listați conținutul direcorului și observați fișierele și directoarele disponibile.
  8. Vizualizați conținutul fișierelor /proc/cpuinfo, /proc/meminfo, /proc/interrupts și /proc/ioports.
    • Fișierele conțin informații despre procesor, memoria fizică, întreruperile hardware din sistem și porturile IO pentru dispozitive.
  9. Folosiți comanda strace pentru a vizualiza apelurile de sistem “open” făcute de comanda uptime. Izolați doar deschiderile de fisiere din /proc. Vizualizati apoi conținutul fișerelor din /proc găsite.
    alexj@hathor ~ $ strace -e open uptime 2>&1 |grep "/proc"
    open("/proc/uptime", O_RDONLY)          = 3
    open("/proc/loadavg", O_RDONLY)         = 4
  10. Intrați în directorul din /proc corespunzător procesului bash în care sunteți și listați conținutul.
    cd /proc/$$; ls -la
    • vizualizați conțintul fișierului status
    • vizualizati conținutul fisierului cmdline
    • vizulizati folosind long listing conținutul directorului fd
  11. Folosiți comenzile lspci și lsusb pentru a lista dispozitivele de tip PCI și USB din sistem.

Exerciții de investigare hardware

  1. Listați toate fișierele ce reprezintă discurile de tip ATA (adică cele al căror nume începe cu hd) sau SATA (adică cele al căror nume începe cu sd) din sistem (Indiciu: /dev, grep).
  2. Listați toate fișierele ce reprezintă partitiile discului sda.
  3. Listați toate dispozitivele de tip bloc din sistem (Indiciu: /dev, grep, ^b, cut).
  4. Listați toate dispozitivele de tip caracter din sistem (Indiciu: /dev, grep, ^c, cut).
  5. Găsiți tipul procesorului din sistem.
  6. Afșați informații despre tipurile de dispozitive din sistem, folosind fișiereul /proc/devices.
  7. Aflați care este tipul plăcii de rețea și tipul plăcii video.
  8. Deschideți folosind vim fișierul /etc/passwd.
    • Găsiți pid-ul procesului nou deschis și intrați în directorul din /proc corespunzător.
    • Gasiti fișierul ce conține comanda cu care a fost deschis procesul.
    • Găsiți fișierele deschise de proces (Indiciu: fd sau lsof).
  9. Folosiți comanda lsmod pentru a lista modulele de nucleu inserate.
    • Folosind strace pe comanda precedentă, aflați din ce fișier din /proc obține lsmod informațiile.

Exerciții de investigare hardware suplimentare

Afișați informații despre utilizarea resurselor sistemului:

  • câți utilizatori sunt online
  • câte procese sunt active
  • cât spațiu este ocupat pe fiecare din partițiile sistemului
  • cât procesor este ocupat
  • câtă memorie este ocupată
  • cât spațiu de swap este ocupat
  • ce trafic este curent pe placa de rețea (hint: nethogs, iptraf)

Pentru a afișa într-un format simplu informații despre monitorizarea sistemului puteți folosi utilitarul dstat.

Afișați informații despre sistem precum:

  • dacă procesorul are suport de virtualizare
  • care este dimensiunea memoriei cache
  • ce sistem de fișiere se găsește pe fiecare partiție
  • care este viteza maximă de lucru pentru HDD (hint: hdparm)

Din fișierul de aici dorim să extragem partea care începe de la offset-ul 0x13000 (în hexazecimal) până la sfârșit. Puneți conținutul într-un alt fișier. Afișați conținutul primilor 16 octeți din fișier în format hexazecimal; output-ul trebuie să fie de forma 0080 b67f 6a01 7900 1180 0000 b57f b57f.

Pentru a extrage o parte dintr-un fișier folosiți comanda dd. Folosiți opțiunea skip a dd.

Pentru că operați pe octeți, nu pe blocuri, va trebui să configurați pentru dd dimensiunea blocului la 1 folosind opțiunea bs.

linux-admin/capitole/capitol-11.txt · Last modified: 2016/10/09 21:49 by mihaic