Linux: Cum fac...?


In this regularly but rarely updated article, which is without doubt the most comprehensive list of Linux distributions' problems on the entire Internet, we only discuss their main problems and shortcomings (which may be the reason why some people say Linux distros are not ready for the desktop) while everyone should keep in mind that there are areas where Linux has excelled other OSes: excellent package management within one distro, multiple platforms and architectures support out of the box, usually excellent stability, no widely circulating viruses or malware, complete system reinstallation is almost never required, besides, Linux is extremely customizable, easily scripted and it's free as in beer.
 
Linux pe diverse hardware-uri.
Cum fac sa obtin un raport despre hardware-ul sistemului: device-uri, drivere in uz, porturi, USB tree, grafica, senzorii de temperatura, etc., un fel de Device Manager din Windows, in modul "Devices by connection" care sa arate ce componente sunt in sistem si cum sunt conectate?

Stiu ca exista lspci, lsusb, lsi2c, blkid, etc. Dar as vrea ceva care sa le uneasca pe toate intr-un singur loc.
Mi-ar fi util sa afiseze si capabilitatile procesorului: accelerare crypto, codec-uri, RNG, etc.
 
Probabil hwinfo e cel mai apropiat de ce vrei, cu versiunea --short obții câte ceva digerabil, iar dacă vrei chestii complexe se poate și asta
Code:
  processor     : 1
  vendor_id     : GenuineIntel
  cpu family    : 6
  model         : 158
  model name    : Intel(R) Core(TM) i9-9880H CPU @ 2.30GHz
  stepping      : 13
  microcode     : 0xde
  cpu MHz               : 2304.002
  cache size    : 16384 KB
  physical id   : 0
  siblings      : 4
  core id               : 1
  cpu cores     : 4
  apicid                : 1
  initial apicid        : 1
  fpu           : yes
  fpu_exception : yes
  cpuid level   : 22
  wp            : yes
  flags         : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqd
q ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch ssbd ibrs ibpb stibp ibrs_enhanced fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap x
saveopt arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
  bogomips      : 4608.00
  clflush size  : 64
  cache_alignment       : 64
  address sizes : 42 bits physical, 48 bits virtual

ai și un fel de tree pe ioports
Code:
    0376-0376 : 0000:00:07.1
      0376-0376 : ata_piix
    03c0-03df : vga+
    03f6-03f6 : 0000:00:07.1
      03f6-03f6 : ata_piix
    04d0-04d1 : PNP0001:00
    0cf0-0cf1 : pnp 00:00
  0cf8-0cff : PCI conf1
  0d00-feff : PCI Bus 0000:00
    1000-103f : 0000:00:07.3
      1000-1003 : ACPI PM1a_EVT_BLK
      1004-1005 : ACPI PM1a_CNT_BLK
      1008-100b : ACPI PM_TMR
      100c-100f : ACPI GPE0_BLK
      1010-1015 : ACPI CPU throttle
    1040-104f : 0000:00:07.3
      1040-104f : pnp 00:00
    1060-106f : 0000:00:07.1
      1060-106f : ata_piix
 
Încearcă și inxi:
❯ inxi -C -x
CPU:
Info: 6-Core model: Intel Core i7-8850H bits: 64 type: MT MCP
arch: Kaby Lake note: check rev: A L2 cache: 9 MiB
flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
bogomips: 62431
Speed: 800 MHz min/max: 800/4300 MHz Core speeds (MHz): 1: 800 2: 800
3: 800 4: 800 5: 800 6: 800 7: 800 8: 800 9: 800 10: 800 11: 800 12: 800

Modulele de kernel le vezi cu lsmod.
 
Construiesc un OpenWRT din git/master branch. OpenWRT are "make menuconfig" pentru selectat componentele imaginii, inclusiv modulele kernelului, dar mai are si "make kernel_menuconfig" care configureaza kernelul direct. Interactiunea intre cele doua cam lasa de dorit. De obicei nu pot selecta acelasi driver in ambele parti, ca nu se mai compileaza, iar in anumite situatii, daca selectez din kernel_menuconfig, nu din menuconfig-ul openwrt, driverul "se pierde" pe drum si nu mai ajunge in imaginea OpenWRT finala.

Cum fac sa verific daca kernelul contine sau nu un anumit driver?
M-am gandit la /proc/config.gz, dar parca as prefera ceva mai "hardcode", sa-i verific prezenta efectiv.

PS: este vorba de driver inclus in kernel, nu modul. (BTW, menuconfig nu permite includerea driverului in kernel; bifatul cu steluta inseamna sa includa modulul in imagine.)
 
2)
Am inclus in kernel accelerarea XOR pentru procesorul routerului. Vad in /sys si in kernel log ca xor este detectat:

mv_xor f1060900.xor: Marvell shared XOR driver
mv_xor f1060900.xor: Marvell XOR (Registers Mode): ( xor cpy intr )
mv_xor f10f0900.xor: Marvell shared XOR driver
mv_xor f10f0900.xor: Marvell XOR (Registers Mode): ( xor cpy intr )

dar mai jos imi apare:

xor: measuring software checksum speed
arm4regs : 1201 MB/sec
8regs : 823 MB/sec
32regs : 1067 MB/sec
xor: using function: arm4regs (1201 MB/sec)

Eu ce sa inteleg, ca nu este in uz? Cum verific?
Idem pentru accelerarea crypto / aes. Cum verific daca este in uz?
 
Accelerarea crypto se verifica din openssl (sau alt ssl). Exista "openssl engine -c -t" si "openssl speed".
XOR n-am mai testat, ca practic nu-mi trebuie la nimic acolo.

-------------
Alta:
Vreau sa aflu care device-uri suporta power management. Statusul este in "/sys/<directoare diverse>/power/runtime_status". Fisierul "runtime_status" trebuie sa contina altceva decat "unsupported". Cum fac sa obtin o lista?
PS: "find -exec ..." nu-i disponibil (busybox).
 
Am doua monitoare. By default, consola apare in duplicat in timp ce X se lungeste pe ambele ecrane. Vreau sa imi apara pe primul ecran consolele (tty0-4), schimband intre ele ca si pana acum cu ctrl+alt+f1-4 iar pe al doilea ecran sa apara X, cand e pornit.
Cand comut pe consola (oricare), X sa ramana vizibil pe al doilea ecran.
Cand comut pe X, consola (ultima folosita) sa ramana vizibila pe primul ecran.

Cum fac?
 
Nimeni?
------

Alta:
Am un Linux pe un stick. Booteaza cu LILO. Partitia boot e separata. Am facut o clona 1:1 a acelui stick. Vreau sa mentin clona actualizata.

Doresc:
- Sincronizarea unidirectionala: original -> clona.
- Fisierele noi care exista pe clona sa fie sterse.
- Sa fie sincronizate permisiunile, owner-ul, symlink-urile, etc.
- Sa fie sincronizate ambele partitii.

Preferabil, dar nu obligatoriu:
- Sa sincronizeze la nivel de sector - adica sa rezulte o copie perfecta 1:1 dupa sincronizare. Adica sa rezulte un stick bootabil dupa ce fac un update de kernel.
- Pe cat posibil independent de alte utilitare sau X.

Exista vreo varianta mai buna decat rsync?
Multumesc!
 
Last edited:
Păi suntem vreo 3 care-ți tot răspundem, n-a avut nimeni nevoie de așa ceva deci de unde? Cu google poți și tu :smile:.

Pentru asta nouă... continui cu dd? Că dacă e unidirecțional nu înțeleg de ce te-ai complica altfel (ok, că nu vrei să rescrii toată clona, dar funcționează).
 
Sunt convins că rsync are toate opțiunile de care ai nevoie. Cât timp nu schimbi structura tabelei de partiții (iar un update de kernel nu o schimbă) nu ai nevoie de sincronizare la nivel de sector. Nu știu ce distribuție sau ce setup custom ai tu acolo cu LILO, dar, dacă după un update totul e ok si bootează de pe stick-ul original, după un rsync cu opțiunile de care ai nevoie va boota și clona.
 
dd BS=4M
E lent. Incepe voiniceste, dar pe masura ce citeste rapid si scrie lent, memoria se umple si viteza scade. Intr-un final ajunge sub 1 MB/s. Nu stiu motivul, ca stick-ul ar trebui sa fie mai rapid de atat.

rsync -vaxH --inplace --preallocate --delete --delete-before --force --progress
Dureaza un veac pana scaneaza sursa. Cred ca se poate scapa de asta daca renunt la --delete-before. Apoi dureaza un veac pana parcurge fiecare fisier, desi nu transfera mare lucru. Per total e mai lent decat dd.

savepart (Partition Saving) din Windows
Copiaza cu maximul posibil, vreo 10-12 MB/s, dar din motive de Windows / fisiere deschise / etc. nu intotdeauna vrea sa porneasca. Din cauza ca stick-ul destinatie este uuuun piiiic mai mic decat sursa, nu merge copiat discul intreg, ci doar partitiile una cate una si MBR-ul separat, desi spatiul in plus e spatiu liber, nepartitionat. Enervant.

savepart din Linux
Aceeasi viteza nasoala la scriere. Aceeasi limitare la copiat tot discul. Dar macar nu se plange ca sunt fisiere deschise.

Pot sa mai optimizez ceva la rsync ala?
 
Last edited:
grep -r intr-un director oarecare. Citeste, citeste, si la un moment dat nu mai citeste. Pur si simplu sta. Nu termina niciodata. In htop apare cu "S" (sleeping).
De ce? Ce-i fac sa mearga mai departe?
 
Când e sleeping înseamnă că așteaptă input. Vezi să nu ai vreun link către vreun generator blocant gen /dev/random pe acolo, sau vreun disc montat dubios/care nu e accesibil/care e groaznic de lent. Joacă-te cu lsof să vezi ce fișiere are deschise.
 
Paaaai... n-am lsof, ca e LibreELEC. La aia ma gandisem si eu. Nici componenta de audit din kernel nu exista, ca sa mearga lsof.
Directorul contine mai special doar niste containere docker, in rest numai fisiere de configurare ale LE / Kodi.

Exista bineinteles varianta in care scot cardul si il grep-uiesc pe alt calc, dar am fost oarecum surprins ca se blocheaza in loc sa dea vreo eroare sau ceva. Ma interesa mai mult cauza, nu neaparat solutia.
 
Păi aia e cauza, ceva din tree îl pune să aștepte. Docker-ul face tot felul de chestii prin directoarele lui, pot fi pipe-uri, sockets sau alte prostii...
 
Back
Top