Este post surge después de la lectura de un mensaje (con chincheta) que Cobac dejó en la sección de hardware: programas imprescindibles para el control-trabajo-... con el hardware de un Pc.
Me pareció una idea muy interesante: ya sabéis que soy un fanático de compartir aplicaciones que sean útiles para trabajar/incrementar la potencialidad de nuestros ordenadores
.Pero también me pareció un poco injusto e ingenuo que no apareciese ninguna aplicación gnu para el sistema del pingüino, ya que la potencia de Linux en este aspecto es enormeee, y resulta bastante desconocida para la mayoría de la gente.
Así que me puse en contacto con Cobac: Él me sugirió que independizase mi mensaje del que él había escrito (dado que soy proclive a alargarme en mis explicaciones
) y que lo colgase en esta sección del foro para que la gente pudiera opinar, aumentar información, sugerir,... Así que aquí os entrego al niño, o mejor dicho, la primera parte del "niño". No ando muy sobrado de tiempo y escribir estas líneas me lleva "su ración de minutos".Os dejo pues la primera parte del mensaje: juzgar, añadir... a discrección. Es un esquema que desarrollaré. El miércoles espero entregar lo que resta, pero no aseguro nada:
1. Herramientas hardware en GnuLinux...
- Parto de un hecho que creo que es incuestionable: en general, no solemos asociar este tema a Linux. Vemos este SO como la mejor solución (un poco compleja en ocasiones) para trastear con soft, para crear soft, para experimentar cosas, para probar otras, para divertirnos... pero siempre a nivel de aplicaciones, no a nivel físico.
- ¿Posible razón de esta entelequia? Pienso que el problema radica en que en windows existen muchísimos programas con estupendas GUIs (propietarios, share y freeware) que aportan información o nos permiten trastear en aspectos muy concretos de nuestro Pc. De hecho, la mayoría de las páginas de overclock que he visitado, en su sección de descargas, prácticamente no implementan soluciones *NIX. Linux está, aparentemente, menos presente en esto "círculos". Tal vez porque se deja la faceta creativa-investigadora a la manipulación de los componentes y se espera que las soluciones soft ofrezcan un volcado inmediato de información o un control sencillo de todo lo que antes se ha realizado.
- No obstante, GnuLinux tiene un montón de cosas que aportar en este campo. De hecho, resulta muy sencillo el control y la información de todos los elementos hard que integran nuestra máquina... Y si nos movemos a nivel de shell, la facilidad, rapidez y comodidad de trabajo es sencillamente fantástica.
- ¿Por qué esta sencillez? La razón estriba en que el núcleo de Linux proporciona un mecanismo para acceder a sus estructuras de datos internas y también para cambiar sus opciones "en caliente" a través del sistema de ficheros /proc.
... - Unas pequeñas aclaraciones-avisos antes de empezar el meollo del asunto. Este mini manual está orientado hacia la arquitectura Intel x86 (sistema en el que trabajo). Del resto de arquitecturas puedo decir poco, ya que no he tenido oportunidad de "trastear con ellas" (algo con AMD, pero los resultados son idénticos).
1. Comentario-Introducción sobre el sistema de archivos /proc.
2. Aplicaciones "gráficas": gkrellm, kpm, slmon, otras...
3. shell: comandos y directorio /proc en detalle (base del soft anterior)[/list]
2. "Hablemos de /proc". Introducción
- Vamos a empezar con una breve definición: /proc es un Sistema de Ficheros Virtual.
- /proc es un mecanismo utilizado por el núcleo y por los módulos del núcleo para enviar información a los PROCESOS generados por las distintas aplicaciones que rulan en nuestro Pc (Nota: de ahí el nombre /proc... PROCesos).
- ¿Qué le hace tan importante? Nos permite interactuar con las estructuras de datos internas del núcleo, obteniendo información útil acerca de los procesos y pudiendo modificar "en caliente" (sobre la marcha) parámetros de ejecución, de configuración,... del núcleo e incluso de nuestro hardware. Mostrar todas las posibilidades que nos ofrece llevaría bastante espacio... Os invito a que investiguéis sobre las "modificaciones" que se pueden hacer en el directorio /proc/net
- Una característica especial y única de /proc: este directorio se almacena en memoria frente al resto de los sistemas de ficheros, que son almacenados en disco. ¿Razón? /proc está controlado directamente por el núcleo (ver arriba), y no tiene un dispositivo (CD, HD,...) detrás de él. Debido a que principalmente contiene información de estado controlada por el núcleo, el lugar más lógico donde almacenar la información es en la memoria controlada por el núcleo.
- No voy a comentar más aspectos. Sobre este tema volveré más adelante, al tratar el tema de los comandos.
(nota: me voy a ceñir a dar una breve descripción de cada utilidad. Os invito a que experimentéis y trasteéis con ellas
)3.1 Gkrellm:
GKrellM es una barra que traza gráficas (ampliables gracias a plugins) que nos informa sobre:
- uso de la CPU (soporta SMP),
- discos,
- carga del sistema,
- interfaces de red y conexiones a Internet (http, ftp...) Muestra el estado actual de las conexiones de los puertos y eventos de hasta dos días de antiguedad
- memoria y swap,
- sistemas de archivos con opción de montar/desmontar,
- reloj/calendario,
- medidor de batería,
- temperaturas de CPU, ventiladores y voltaje, si los sensores están soportados por el kernel y la placa base (requiere tener instalado lm_sensors)
- también dispone de leds para los monitores de red y un botón on/off y tiempo de conexión para conexiones ppp.
- el Hostname / systemname
- cada monitor del sensor tiene una alarma y una advertencia configurables.
- puede correr en modo cliente y recoger datos de un servidor (gkrellmd) en una máquina remota.
- y lo mejor de todo: utiliza poca CPU (2-3%) para monitorear

-Última versión: 2.2.4
-Requiere gtk 2.0, gdk 2.0, glib 2.0 (+ enlace debian)
-En GnuLinux lee los datos desde el sistema de ficheros /proc
-Existen paquetes para debian, Mandrake 9.0-9.2 (RPMS. Pueden rular en 8.2) y 10.0 (RPMS), RedHat Linux (i386)... RPMs, Slackware 9.1 (también funcionan en la 9.0) y SuSE 8.2 - 9.1 (RPMs)
- Aunque hay una versión para win2, según distintos foros su compilación es problemática
http://www.redbog.com/products/gkrellm.html
3.2 KPM
- Se trata de una herramienta de administración de procesos (soportada por las librerías qt frente a gkrellm que soporta las gtk).
- Muestra información sobre
- los procesos de la computadora.
- los procesos que están corriendo (de forma detallada)
- estado de los recursos de la RAM (utilizada y libre),
- tamaño de la memoria de intercambio (swap),
- utilización que los procesos hacen de la CPU
- matar o terminar procesos (kill) y modificar su prioridad.

- Su localización en KDE: Utilidades -> Gestión de Procesos
- Es menos potente que su hermana mayor
3.3 Slmon (S-Lang System Monitor)
-Se trata de otra herramienta que trabaja **en consola** para monitorizar el sistema.
-Muestra información sobre:
- Carga de la CPU (soporta también SMP)
- Memoria (incluida swap)
- calendario/reloj
- Número de usuarios logeados por el sistema
- Interfaces de red
- Procesos corriendo

-Útima versión: 0.5.13
-Requiere glibtop 1.0.0 y libslang 1.2.2 (+ enlace debian)
-Existen paquetes para debian (las tres ramas), fedora core 2 y Red Hat 7.2 y 7.3 (versiones antiguas)
3.4 Otras utilidades:
- GTOP (kde-gnome)... La menos documentada de todas las aplicaciones
- KSYSGUARD (KDE). Podéis encontrar un fantástico manual en el siguiente site:
- Centros de control gnome - kde...
-Se trata de un daemon que controla dinámicamente la frecuencia del procesador dependiendo de la carga.
-Es un programa sencillo que puede ser usado siempre (con o sin baterías) en un portátil para bajar el consumo y la temperatura de la CPU, afectando lo mínimo posible al rendimiento.
-El programa necesite que el cpufreq del kernel esté compilado y en marcha (es decir, debe existir el fichero /proc/cpufreq)
-Hay tres parámetros básicos:
- -i N (N es un número entero) define el periodo de ejecución del daemon en décimas de segundo.
- -p UP DOWN (UP y DOWN son flotantes entre 0.0 y 1.0). UP define la relación "libre:ocupado" para subir la frecuencia del procesador (o pasar a modo "performance"), por ejemplo 0.5 indica que si en el último período de control la CPU estuve un 50% del tiempo libre, hay que subir la frecuencia. DOWN define la misma relación pero para bajar la frecuencia (o pasar a modo "powersave"), 0.95 indica que hay que bajar la frecuencia si la CPU estuvo libre el 95% del tiempo.
- -d Indica que el cpusysd debe ejecutarse en modo daemon.
-Existen paquetes para debian (apt-get), gentoo (emerge) y mandrake (urpmi)
-Soporta procesadores Intel SpeedStep, Pentium 4 Mobile, PowerPC, AMD y Transmeta LongRun (además de cualquiera que esté implementado por el driver cpufreq del núcleo de Linux)
4. El control desde la shell (comandos). Análisis de los directorio en /proc
Son varios los comandos que nos permiten extraer informaciones muy interesantes directamente del directorio /proc o de éste a través de la librería libproc.
Voy a procurar mostraros los más interesantes, así como un ejemplo de su utilización, para que podáis comprobar "su potencia"...
(Nota: Os comento que estoy escribiendo este mensaje desde una knoppix STD en un Pc de la uni... Una partición, poca memoria, etc, etc)
4.1 fdisk -l
Este comando, desde una consola como root, nos ofrece información muy detallada sobre las distintas particiones y HD presentes en nuestro Pc. Os pongo una captura de mi consola para que os hagáis una idea...
Citar
root@ttyp0[knoppix]# fdisk -l
Disco /dev/hda: 40.0 GB, 40020664320 bytes
255 cabezas, 63 sectores/pista, 4865 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Boot Start End Blocks Id System
/dev/hda1 * 1 4865 39078081 7 HPFS/NTFS
Disco /dev/hda: 40.0 GB, 40020664320 bytes
255 cabezas, 63 sectores/pista, 4865 cilindros
Unidades = cilindros de 16065 * 512 = 8225280 bytes
Disposit. Boot Start End Blocks Id System
/dev/hda1 * 1 4865 39078081 7 HPFS/NTFS
4.2 mount
Algo parecido hace el comando mount. Sin añadir ningún tipo de parámetro nos ofrece info más detallada (aunque menos legible, en principio) que el comando anteriormente mencionado.
Dos apuntes:
(a) para correr este comando, no necesitamos permisos de root.
(b) si tipeamos cat /etc/fstab obtenemos el mismo resultado.
Otra pequeña captura para descubrir su "potencial":
Citar
knoppix@ttyp0[knoppix]$ mount
/dev/root on / type ext2 (rw)
/dev/scd0 on /cdrom type iso9660 (ro)
/dev/cloop on /KNOPPIX type iso9660 (ro)
/ramdisk on /ramdisk type tmpfs (rw,size=173120k)
/proc/bus/usb on /proc/bus/usb type usbdevfs (rw,devmode=0666)
automount(pid458) on /mnt/auto type autofs (rw,fd=4,pgrp=458,minproto=2,maxproto=4)
/dev/root on / type ext2 (rw)
/dev/scd0 on /cdrom type iso9660 (ro)
/dev/cloop on /KNOPPIX type iso9660 (ro)
/ramdisk on /ramdisk type tmpfs (rw,size=173120k)
/proc/bus/usb on /proc/bus/usb type usbdevfs (rw,devmode=0666)
automount(pid458) on /mnt/auto type autofs (rw,fd=4,pgrp=458,minproto=2,maxproto=4)
Podéis completar esta información con el comando df, el cual os mostrará el tamaño libre y usado de cada una de las particiones... Lo dicho, una captura vale más que mil palabras:
Citar
knoppix@ttyp0[knoppix]$ df -h
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/root 3,4M 1,3M 2,2M 36% /
/dev/scd0 689M 689M 0 100% /cdrom
/dev/cloop 1,9G 1,9G 0 100% /KNOPPIX
/ramdisk 170M 5,4M 164M 4% /ramdisk
S.ficheros Tamaño Usado Disp Uso% Montado en
/dev/root 3,4M 1,3M 2,2M 36% /
/dev/scd0 689M 689M 0 100% /cdrom
/dev/cloop 1,9G 1,9G 0 100% /KNOPPIX
/ramdisk 170M 5,4M 164M 4% /ramdisk
(Nota: añado el argumento -h para que la información nos salga en Mb, en lugar de en k, que es la salida estándar de este comando)
4.3 ifconfig
Otra "pequeña gran" utilidad que nos muestra múltiple e interesante información sobre nuestra/s tarjeta/s de red. No es esta la única utilidad de este interesante comando, ya que además permite configurar la tarjeta y múltiples posibilidades más. Sólo tenéis que pasaros por las páginas man o info de vuestra distro y veréis todo lo que se puede conseguir.
(Nota: en caso de que vuestra tarjeta sea wireless, no hay problema: el comando alternativo es iwconfig).
Como siempre, una pequeña muestra:
Citar
knoppix@ttyp0[knoppix]$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:07:95:C2:CC:8A
inet addr:192.168.123.20 Bcast:192.168.123.255 Mask:255.255.255.0
inet6 addr: fe80::207:95ff:fec2:cc8a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:636 errors:0 dropped:0 overruns:0 frame:0
TX packets:530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:399310 (389.9 KiB) TX bytes:100109 (97.7 KiB)
Interrupt:5 Base address:0xbf00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
eth0 Link encap:Ethernet HWaddr 00:07:95:C2:CC:8A
inet addr:192.168.123.20 Bcast:192.168.123.255 Mask:255.255.255.0
inet6 addr: fe80::207:95ff:fec2:cc8a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:636 errors:0 dropped:0 overruns:0 frame:0
TX packets:530 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:399310 (389.9 KiB) TX bytes:100109 (97.7 KiB)
Interrupt:5 Base address:0xbf00
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
4.4 PCI Utilities package (lspci y setpci)
En esta ocasión os presento dos pequeñas "maravillas". Con el primer comando, lspci, y siempre trabajando como root podemos obtener un listado detalladísimo de todos los periféricos conectados al bus PCI. Sencillamente brutal.
Una pequeña muestra:
Citar
root@ttyp0[knoppix]# lspci
0000:00:00.0 Host bridge: VIA Technologies, Inc. P4M266 Host Bridge
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [apoyo Pro266 AGP]
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:11.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.4 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 30)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 70)
0000:01:00.0 VGA compatible controller: S3 Inc. VT8375 [ProSavage8 KM266/KL
0000:00:00.0 Host bridge: VIA Technologies, Inc. P4M266 Host Bridge
0000:00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [apoyo Pro266 AGP]
0000:00:11.0 ISA bridge: VIA Technologies, Inc. VT8233 PCI to ISA Bridge
0000:00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:11.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.4 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1b)
0000:00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 30)
0000:00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 70)
0000:01:00.0 VGA compatible controller: S3 Inc. VT8375 [ProSavage8 KM266/KL
El otro comando, setpci, nos permite trastear con esos periféricos. Existe un proyecto, Athcool, que en el caso de procesadores Athlon en chipset VIA (no todos, un listado más detallado y en castellano lo podéis encontrar en http://libertonia.escomposlinux.org/story/2002/8/17/155758/556) puede llegar a bajar la temperatura hasta 15ºC. Os aviso que sobre este particular hay mucha controversia en la red: la mayoría dicen que sí les ha funcionado, otros afirman que no les ha pasado nada y un buen puñado se lamentan porque han acabado con la vida de su chipset... En fin. En el enlace anterior tenéis más info.
4.5 dmesg
Este utilísimo comando muestra todos los mensajes mostrados en pantalla durante el proceso de arranque. ¡Pues vaya estupidez! Diréis algunos... Bueno, si consideráis que durante el arranque se reconoce todo el hard del Pc, la cosa aquiere mayor relevancia. Y si por medio de tuberías encauzáis la info con el comando grep, la cosa adquiere un potencial estremecedor...
Un ejemplo de lo que digo: ¿Queréis saber qué HD tenéis instalados en el Pc? No hay problema.
Citar
knoppix@ttyp0[knoppix]$ dmesg | grep hda*
ide0: BM-DMA at 0xfc00-0xfc07, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xfc08-0xfc0f, BIOS settings: hdc:DMA, hdd:pio
hda: ST340014A, ATA DISK drive
hdc: SAMSUNG CD-ROM SC-152C, ATAPI CD/DVD-ROM drive
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 78165360 sectors (40021 MB) w/2048KiB Cache, CHS=4865/255/63
hda: hda1
hdc: attached ide-scsi driver.
Bueno, bueno... ¿y qué hay de la CPU?ide0: BM-DMA at 0xfc00-0xfc07, BIOS settings: hda:DMA, hdb:pio
ide1: BM-DMA at 0xfc08-0xfc0f, BIOS settings: hdc:DMA, hdd:pio
hda: ST340014A, ATA DISK drive
hdc: SAMSUNG CD-ROM SC-152C, ATAPI CD/DVD-ROM drive
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 78165360 sectors (40021 MB) w/2048KiB Cache, CHS=4865/255/63
hda: hda1
hdc: attached ide-scsi driver.
Citar
knoppix@ttyp0[knoppix]$ dmesg | grep CPU
Initializing CPU#0
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Hyper-Threading is disabled
CPU: After generic, caps: bfebf9ff 00000000 00000000 00000000
CPU: Common caps: bfebf9ff 00000000 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Hyper-Threading is disabled
CPU: After generic, caps: bfebf9ff 00000000 00000000 00000000
CPU: Common caps: bfebf9ff 00000000 00000000 00000000
CPU0: Intel(R) Pentium(R) 4 CPU 1.80GHz stepping 07
per-CPU timeslice cutoff: 1462.18 usecs.
ACPI: Processor [CPU1] (supports C1, 16 throttling state
Creo que las capturas lo dicen todo. Sin palabras...Initializing CPU#0
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Hyper-Threading is disabled
CPU: After generic, caps: bfebf9ff 00000000 00000000 00000000
CPU: Common caps: bfebf9ff 00000000 00000000 00000000
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU: Hyper-Threading is disabled
CPU: After generic, caps: bfebf9ff 00000000 00000000 00000000
CPU: Common caps: bfebf9ff 00000000 00000000 00000000
CPU0: Intel(R) Pentium(R) 4 CPU 1.80GHz stepping 07
per-CPU timeslice cutoff: 1462.18 usecs.
ACPI: Processor [CPU1] (supports C1, 16 throttling state
4.6 Trasteando en el directorio /proc
Bueno... Ya llegamos a la maravilla de las maravillas. Este directorio y su biblioteca asociada (libproc) permiten realizar maravillas a nivel hard. No voy a indicaros mucho: simplemente os invito a que miréis los siguientes ficheros:
/cpuinfo ($>cat /proc/cpuinfo)
/devices ($>cat /proc/devices)
/interrupts ($>cat /proc/interrupts)
/iomem ($>cat /proc/iomem)
/ioports ($>cat /proc/ioports)
/meminfo ($>cat /proc/meminfo)
/mounts ($>cat /proc/mounts)
Pensad que no sólo podréis leer la información de vuestro sistema, sino que, como root, podréis alterar también esos valores... Estremecedor y catastrófico si no se sabe lo que se hace.
En fin. Con esto he acabado. Podia haberme extendido algo más, hablar del hackeo del kernel y del sistema modificando la librería libproc, comentar algo más los comandos y los ficheros-directorios de /proc... Pero sobre eso hay abundante información por toda la red. Sólo he intentado meteros "el gusanillo" en el cuerpo para que si estáis interesados sepáis por donde tirar...
Espero que os sirva de ayuda;)










Autor




En línea




