HP Mini 5102 + Debian GNU/Linux

hp_mini_5102_debian

El netbook HP Mini 5102, que ya traté aquí, dispone de un amplio soporte hardware para sistemas GNU/Linux, buena muestra de ello reside en el modelo VQ670EA, que viene equipado de fábrica con una distribución SUSE Linux Enterprise 11 con todos los módulos, servicios y aplicaciones necesarios para dar soporte a los distintos recursos de este netbook.

A pesar de que este modelo disponía de una distribución GNU/Linux preinstalada, quería instalar Debian, que es la distribución que vengo utilizando desde hace unos años, entre otros motivos por su gran flexibilidad, capacidad de adaptación a la mayoría de entornos y compromiso con el software libre. Muchas distribuciones amigables o user-friendly, como Ubuntu y sus distintos sabores, OpenSUSE, Mandriva, etc, ofrecen un conjunto predefinido de paquetes y de entornos de escritorio, lo que facilita en gran medida la instalación y configuración a los usuarios menos experimentados, pero que restan de la flexibilidad que muchas veces se necesita.

Consideraciones iniciales.

El proceso de instalación de Debian es bastante intuitivo y presenta los pasos habituales, tales como el establecimiento del idioma, teclado, particionamiento de disco duro, etc, sin embargo existen varios aspectos que conviene destacar antes de empezar:

  • Versión de pruebas, que ofrecerá un repertorio de paquetes lo suficientemente actualizados en comparación con la versión estable. Una vez instalada Debian Testing o de pruebas, podremos decidir si actualizarnos a Debian Sid o inestable, lo que nos proporcionará las últimas versiones de los paquetes, aunque eso si, a expensas de sacrificar en estabilidad ante un eventual problema tras una actualización.
  • Instalación en red, que nos permitirá instalar el sistema descargando los paquetes de los repositorios, evintando así tener que descargar las imágenes ISO de los CDs o DVDs oficiales de Debian, que aunque no sean necesarios todos para la mayoría de instalaciones, si que podrían exceder los 2 GB para los tres primeros CDs y los 4 GB para el primer DVD, frente a los escasos 200 MB que ocupa la imagen ISO de la netinst.
  • Instalación minimalista, a través de la cual instalaremos el sistema base de Debian junto a un número reducido de aplicaciones de sistema, que serán suficientes para arrancar el sistema operativo e iniciar sesión con nuestro usuario. Llegado ese momento, empezaremos ha instalar aquellos paquetes que necesitemos, lo cual puede resultar tedioso al principio, sin embargo esto nos permitirá ajustar el sistema a nuestras preferencias, algo que puede resultar mas dificil si seleccionamos durante la instalación un conjunto predefinido de paquetes.
  • Datos Cifrados, algo muy importante dada la naturaleza portable de un netbook, ya que no resulta muy descabellado pensar que nuestro ultraportatil podría resultar extraviado o robado, por lo que al perjuicio ocasionado por la pérdida del aparato, habría que sumarle el hecho de que nuestros datos personales estarían circulando libremente a la vista de todo el mundo. Para resolver este problema haremos uso de particiones de disco cifradas mediante el soporte ofrecido por el kernel Linux 2.6 a través de dm-crypt.
  • Gestión de Volúmenes Lógicos, organizando nuestro almacenamiento en disco en volúmenes lógicos, pertenecientes a un grupo de volúmenes que hará uso del volumen físico cifrado. Para ello haremos uso de LVM2 proporcionado por el kernel Linux 2.6.
  • Sistema Operativo Único, prescindiendo así del arranque dual con sistemas operativos Windows, ya que Debian permitirá satisfacer nuestras necesidades en el trabajo del dia a dia, por lo que cualquier rastro en el disco duro de los sistemas operativos de Microsoft acabaría siendo un desperdicio de espacio. En el caso hipotético de verse forzado a trabajar con una aplicación únicamente soportada bajo Windows, el uso de wine o de máquinas virtuales como VirtualBox, QEmu o VMware representa una buena solución. Sin embargo, siempre es posible que alguien se siga resistiendo al hecho de prescindir completamente de Windows, en ese caso no habría problema en seguir con la instalación de Debian adoptando las medidas adecuadas en el particionamiento de disco, algo que no voy ha explicar aquí.

Preparativos

Antes de comenzar con el proceso de instalación necesitaremos lo siguiente:

  • Llave USB, este netbook como es habitual en la mayoría, no dispone de unidad reproductora de CD/DVD, por lo que a no ser que dispongamos de una unidad externa, será necesario crear una llave USB arrancable con la netinst de Debian, algo que explico aquí.
  • Conexión a Internet, algo bastante obvio al instalar Debian utilizando la variante de instalación por red.
  • Cable directo de red Ethernet, necesario para la conexión a internet requerida en la instalación por red, debido a que durante el proceso de instalación no tendremos soporte para la tarjeta inalámbrica. Conectaremos el cable entre los puertos RJ-45 de la tarjeta de red del netbook y nuestro switch/router/cable modem.
  • Configuración de la BIOS, para poder arrancar desde la llave USB debemos cambiar el orden de arranque de dispositivos, de manera que los discos duros USB sean los mas prioritarios, tal como se muestra aquí.
Comenzando Instalación

Una vez realizados los preparativos previos estaremos en disposición de comenzar con el proceso de instalación que se presenta en dos variantes, modo texto y gráfica. A continuación vamos ha detallar el conjunto de pasos necesarios para realizar la instalación y que se basan en los supuestos iniciales antes expuestos. La galería de imágenes completa del proceso de instalación se encuentra aquí

hp5102_arranque_netinst

Idioma, Ubicación y Teclado.

Introducimos el idioma y la ubicación que nos permitirán establecer las locales y la zona horaría.

hp5102_debian_netinst_01 hp5102_debian_netinst_02
hp5102_debian_netinst_03

Interfaz de Red

El instalador detecta las interfaces de red Ethernet y Wi-Fi, sin embargo, a pesar de que el kernel Linux 2.6.32 dispone del módulo b43 que da soporte al dispositivo BCM4312 entre otros, no podemos utilizar la interfaz wlan0 por no disponer del firmware propietario de Broadcom, ya que Debian no incorpora firmware propietario por defecto, teniendo que añadir los repositorios contrib/non-free e instalar los paquetes pertinentes. Además, aunque el dispositivo Wi-Fi se encontrase soportado, solamente podríamos conectarnos a redes inalámbricas abiertas o cifradas WEP, ya que no disponemos de wpa_supplicant para redes cifradas WPA/WPA2.

hp5102_debian_netinst_05

Teniendo en cuenta lo anterior, seleccionamos a eth0 como interfaz de red por defecto, ya que el soporte de la interfaz de red Wi-Fi será algo de lo que nos ocuparemos despues de finalizar la instalación. Se asignará una dirección IP dinámica mediante DHCP, en caso de no disponer de un servidor DHCP en la red (algo implementado por la mayoría de routers o puntos de acceso inalámbricos) podemos configurar la interfaz manualmente asignandole una dirección IP estática junto a una mascara de red y puerta de enlace correctas.

hp5102_debian_netinst_06 hp5102_debian_netinst_07

Asignamos un nombre a la máquina y un dominio. En la mayoría de casos, salvo quizas en entornos empresariales o grandes corporaciones, nuestra máquina no dispondrá de un nombre de dominio que será resuelto por un servidor DNS de nuestra red, sin embargo aunque no se de el caso, es buena práctica asignar a todas las máquinas de nuestra red a un dominio. Por ejemplo, si a nuestro netbook le asignamos el nombre r2d2 y el dominio odyssey.net, el nombre de dominio será r2d2.odyssey.net, que a pesar de no disponer de un servidor DNS, podrá ser resuelto al igual que todos los nombres de dominio especificados en el fichero /etc/hosts de nuestra máquina.

hp5102_debian_netinst_08 hp5102_debian_netinst_09

Cuenta de Usuario

Introducimos la contraseña del superusuario, así como los datos para crear nuestra cuenta de usuario en el sistema.

hp5102_debian_netinst_10 hp5102_debian_netinst_11
hp5102_debian_netinst_12 hp5102_debian_netinst_13

Particionado de discos

Este es uno de los puntos mas críticos de la instalación y al que hay que dedicar un mínimo de planificación, a fin de evitar que una mala organización de las particiones de disco produzca a largo plazo limitaciones en el espacio libre, sobre todo en aquellas particiones que albergan partes del sistema operativo. Esta y otras cuestiones ya fueron mencionadas en las consideraciones iniciales, donde se planteaba el uso de LVM que permite organizar el almacenamiento en disco en grupos de volúmenes que contendrán volúmenes lógicos, donde a su vez cada grupo de volumenes utiliza uno o mas volúmenes físicos, que serán particiones primarias/lógicas del disco duro cuyo identificador de partición haga que sean reconocidas como del tipo “Linux LVM”.

La otra cuestión que atañe al particionado es la seguridad de los datos, que obtenemos con el uso de volúmenes cifrados a través de dm-crypt el cual cifra las escrituras en disco y descifra las lecturas, para lo que utiliza el algoritmo de cifrado simétrico AES con una clave de 256 bits por defecto. Precisamente, el volumen cifrado será el que utilizará LVM como volumen físico para su grupo de volumenes, lo que constituirá el nexo de unión entre entre dm-crypt y LVM permitiendo así una gestión del almacenamiento de disco en volúmenes lógicos cifrados favoreciendo así la flexibilidad y seguridad frente a un esquema de particiones tradicional.

Lógicamente, necesitaremos realizar un particionado manual para tener el control total sobre todo lo que hacemos. El gestor de particiones del instalador realiza una busqueda de los dispositivos de bloques conectados al sistema, encontrando dos discos SCSI, el disco duro sda y la llave USB sdb. Aunque no es lo habitual, de no existir una tabla de particiones en el disco, el instalador preguntará al usuario si desea crear una, a lo que se responderá afirmativamente, sin embargo lo frecuente será encontrar una tabla de particiones con varias particiones primárias/lógicas ya creadas, las cuales procederemos a eliminar de una en una hasta dejar todo el espacio de disco como libre.

hp5102_debian_netinst_15 hp5102_debian_netinst_16

Creamos una partición primaría de 100 MB con el sistema de archivos EXT4 para /boot, que contendrá partes del gestor de arranque GRUB y las imágenes del kernel Linux y el disco RAM inicial o initrd. La partición /boot será la única en quedarse fuera de LVM, ya que si fuera creada como un volumen lógico no podría leerse el cargador de arranque y por tanto no podríamos cargar el kernel en memoría para iniciar el sistema.

hp5102_debian_netinst_21

Creamos un volumen cifrado que utilice todo el espacio de disco no asignado.

hp5102_debian_netinst_22
hp5102_debian_netinst_23 hp5102_debian_netinst_24
hp5102_debian_netinst_25 hp5102_debian_netinst_26

Confirmamos la creación del volumen cifrado, a continuación podemos sobrescribir dicho volumen con datos aleatorios para eliminar cualquier posibilidad de recuperar datos del espacio libre del volumen, un proceso que resulta extremadamente lento, aunque puede cancelarse en cualquier momento y seguir adelante.

hp5102_debian_netinst_28 hp5102_debian_netinst_29
hp5102_debian_netinst_30

Introducimos la clave de cifrado, tratando de seguir dentro de lo posible las recomendaciones sobre claves entorno a longitud, alternancia de mayusculas/minúsculas, signos especiales, números, etc. Necesitaremos introducir esta clave en cada arranque del sistema para poder utilizar el volumen cifrado, el cual es utilizado como volumen físico por LVM, cuyos volúmenes lógicos forman las particiones de sistema, por lo que sin la clave no solamente no tendremos acceso a los datos, sino que tampoco podremos arrancar el sistema.

hp5102_debian_netinst_31

Iniciamos la configuración del gestor de volúmenes lógicos LVM.

hp5102_debian_netinst_32 hp5102_debian_netinst_33

Tenemos que crear los siguientes elementos organizados de forma jerárquica:

  • Grupo de Volúmenes : vg0
    • Volumenes Lógicos :
      • root : 20G
      • swap : 4G
      • home : 100G

Creamos el grupo de volúmenes vg0 que hará uso del volúmen físico /dev/sda5_crypt, es decir, del volumen cifrado.

hp5102_debian_netinst_35 hp5102_debian_netinst_36
hp5102_debian_netinst_37

Creamos los volúmenes lógicos root, swap y home de 20, 4 y 100 Gigabytes respectivamente, siendo todos pertenecientes al grupo de volúmenes vg0, y dejando el resto de la capacidad libre del grupo de volúmenes para la futura creación de otros volúmenes lógicos o la extensión de los ya existentes si fuera necesario..

hp5102_debian_netinst_43
hp5102_debian_netinst_44 hp5102_debian_netinst_45

Concluimos la configuración de LVM.

hp5102_debian_netinst_50

Asignamos a los volúmenes lógicos root y home los puntos de montaje / y /home respectivamente usando el sistema de archivos EXT4, mientras que el volúmen lógico swap lo utilizamos como area de intercambio.

hp5102_debian_netinst_51 hp5102_debian_netinst_52
hp5102_debian_netinst_53 hp5102_debian_netinst_54
hp5102_debian_netinst_55

Aplicamos los cambios en el disco duro.

hp5102_debian_netinst_56

Gestor de Paquetes

Seleccionamos la réplica de los repositorios de Debian, que aunque vaya contra el pensamiento lógico, no tiene que ser necesariamente la mas próxima geográficamente, por ejemplo para este caso particular, los repositorios fineses o alemanes se comportan bastante mejor que los españoles.

hp5102_debian_netinst_59
hp5102_debian_netinst_60 hp5102_debian_netinst_61

Dependiendo de nuestro nivel de implicación y/o paranoia podemos elegir o no participar en la encuesta de uso de paquetes, cuyos datos son enviados anonimamente todas las semanas y pueden ser consultados aquí.

hp5102_debian_netinst_64

Selección de Paquetes

Una vez instalado el sistema base y tratando de cumplir el objetivo de instalación minimalista que nos marcamos en las consideraciones iniciales, nos limitaremos ha instalar las utilidades estándar del sistema, que nos proveerán el punto de partida a través del cual podremos instalar aquellas aplicaciones que necesitemos mas adelante.

hp5102_debian_netinst_65 hp5102_debian_netinst_66

Finalizando Instalación

Instalamos el gestor de arranque GRUB en el MBR, finalizando con esto la instalación y reiniciando, antes de lo cual desconectaremos la llave USB para arrancar desde el disco duro.

hp5102_debian_netinst_67 hp5102_debian_netinst_68
hp5102_debian_netinst_70

Primer Arranque

Una vez cargado el gestor de arranque GRUB, iniciamos el sistema a través del kernel Linux 2.6.32 instalado por defecto, que tras ser cargado en memoría junto a initrd, el sistema solicitará la clave secreta para abrir el volumen cifrado /dev/sda5_crypt, que recordemos actua como volumen físico para el grupo de volúmenes vg0 al que pertenecen todos los volúmenes lógicos que forman las particiones de sistema, por lo que será imprescindible introducir la clave para iniciar el sistema.

hp5102_debian_netinst_71 hp5102_debian_netinst_73

Iniciamos sesión con nuestra cuenta de usuario con lo que ya disponemos de Debian GNU/Linux funcionando.

hp5102_debian_netinst_72

Versión y Repositorios

En este momento disponemos del sistema base de Debian Wheezy o Testing junto a un conjunto a aplicaciones básicas del sistema, por lo que es el mejor momento para plantearnos la posibilidad de promocionar a la versión Debian Sid o Unstable, ya que el número de paquetes por actualizar será mucho menor que si hubiera muchos paquetes instalados de la rama Testing.

Debian Sid es la versión utilizada por los desarrolladores de Debian con lo que dispondremos de las últimas versiones de los paquetes, sin embargo no se garantiza nada en cuanto a estabilidad, ya que entra dentro de lo posible que tras una actualización se produzcan problemas de dependencias de paquetes, conflictos de versiones, falta de librerias, etc, esto hace que no sea la versión ideal para utilizar en máquinas en producción, pero si para quien quiera estar a la última.

Debian Testing es generada automáticamente a partir de los paquetes de Debian Sid que han cumplido con ciertas condiciones de estabilidad y número de fallos durante un periodo de tiempo, pasando en ese momento de la rama Sid a la Testing. Con el paso del tiempo, se dice que Debian Testing será congelada, por lo que no se añadirán nuevos paquetes y se trabajará en la depuración de fallos de los que ya hay para dar lugar a la versión estable, esto paso por última vez en febrero de este año 2011 con la liberación de Debian Squeeze.

La decisión de promocionar a Sid o permanecer en Testing es algo que depende de la situación y las preferencias de cada uno. Actualicemos o no a Debian Sid, será necesario añadir a la rama main de los repositorios las ramas contrib y non-free, necesarias para satisfacer algunas dependencias de paquetes que necesitaremos mas adelante, cuya diferencia con respecto a los paquetes de la rama main es que no satisfacen todas las Directrices del Software Libre de Debian o DFSG.

A continuación se muestran los pasos a seguir tanto para quien ha decidido actualizar versión como para quien no. (Nota: Para editar los ficheros podemos utilizar los editores vi o nano al estar instalados por defecto)
a) Actualizar de Testing a Sid

  • Editar como superusuario el fichero /etc/apt/sources.list para que su contenido sea:
    deb http://ftp.fi.debian.org/debian/ sid main contrib non-free
    deb-src http://ftp.fi.debian.org/debian/ sid main contrib non-free
    
    ## deb http://security.debian.org/ wheezy/updates main
    ## deb-src http://security.debian.org/ wheezy/updates main
    
  • Sincronizar las cabeceras de los repositorios:
    root@r2d2:/home/j2sg# aptitude update
    
  • Actualizamos los paquetes tratando de no borrar o instalar otros:
    root@r2d2:/home/j2sg# aptitude safe-upgrade
    
  • Actualizamos completamente los paquetes aunque haya que borrar o instalar otros:
    root@r2d2:/home/j2sg# aptitude full-upgrade
    
  • Reiniciamos el sistema:
    root@r2d2:/home/j2sg# shutdown -r now
    

b) Permanecer en Testing

  • Editar como superusuario el fichero /etc/apt/sources.list para que su contenido sea:
    deb http://ftp.fi.debian.org/debian/ wheezy main contrib non-free
    deb-src http://ftp.fi.debian.org/debian/ wheezy main contrib non-free
    
    deb http://security.debian.org/ wheezy/updates main contrib non-free
    deb-src http://security.debian.org/ wheezy/updates main contrib non-free
    
  • Sincronizar las cabeceras de los repositorios:
    root@r2d2:/home/j2sg# aptitude update
    
  • Actualizamos los paquetes:
    root@r2d2:/home/j2sg# aptitude safe-upgrade
    
  • Reiniciamos el sistema:
    root@r2d2:/home/j2sg# shutdown -r now
    

Finalmente, mi elección personal ha sido la de optar por actualizar a Debian Sid, que permite disponer de las últimas versiones de los paquetes y que a pesar de todo lo dicho respecto a la estabilidad, por mi experiencia, esta no es necesariamente menor que la ofrecida por otros sistemas operativos ampliamente utilizados. Independientemente de que hayamos optado por una u otra opción no afectará a los pasos de a continuación.

Reconociendo el Hardware

La tabla de a continuación muestra los distintos elementos que componen el netbook junto a su grado de soporte por parte del kernel Linux.

Elemento Características Soportado
Procesador Intel® Atom™ N450 (1,66 GHz, 512 KB L2 de caché, FSB de 667 MHz) Si
Chipset Intel® NM10 Express Si
Memoría 1 GB SDRAM DDR2 800 MHz en ranura SODIMM ampliable a 2 GB Si
Gráfica Intel® Graphics Media Accelerator 3150 Si
Pantalla LED WSVGA 10,1” con 1024 x 600 de resolución máxima Si
Disco Duro Western Digital SATA 160 GB 7200 rpm (WD1600BEKT-60V5T1) Si
Ethernet Marvell Ethernet PCI (10/100/1000 NIC) Si
Wi-Fi Broadcom 4312G 802.11b/g Si (*)
Bluetooth Broadcom 2070 Bluetooth 2.1 con Adaptador Combo EDR Si
Sonido Intel High Definition Audio Si
Teclado Teclado con 95% de tamaño normal Si
Touchpad Touchpad con zona de desplazamiento Si
Cámara Webcam de 2 MP Si
Puertos USB 2.0 x 3
Ethernet RJ-45 x 1
Salida VGA
Salida auriculares estéreo
Entrada micrófono estéreo
Entrada alimentación CA
Si
Ranuras Tarjeta de Memoría SD/MMC x 1 Si

(*) : Requiere de una instalación manual al no estar soportado directamente por el kernel Linux.

Kernel

Identificamos la versión del kernel:

root@r2d2:/home/j2sg# uname -a
Linux r2d2 2.6.38-2-686 #1 SMP Thu Apr 7 05:24:21 UTC 2011 i686 GNU/Linux

Correspondiendose con la versión 2.6.38 precompilada para la arquitectura 686 en la versión de Debian:

root@r2d2:/home/j2sg# cat /etc/debian_version
wheezy/sid
Procesador

Los procesadores Intel Atom soportan la tecnología Hyper-Threading, por lo que reconocemos dos procesadores lógicos:

root@r2d2:/home/j2sg# cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 28
model name	: Intel(R) Atom(TM) CPU N450   @ 1.66GHz
stepping	: 10
cpu MHz		: 1000.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm dts
bogomips	: 3325.04
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 28
model name	: Intel(R) Atom(TM) CPU N450   @ 1.66GHz
stepping	: 10
cpu MHz		: 1000.000
cache size	: 512 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 1
apicid		: 1
initial apicid	: 1
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 10
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts aperfmperf pni dtes64 monitor ds_cpl est tm2 ssse3 cx16 xtpr pdcm movbe lahf_lm dts
bogomips	: 3324.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 32 bits physical, 48 bits virtual
power management:

Memoria

Mostramos información sobre la memoria física:

root@r2d2:/home/j2sg# cat /proc/meminfo
MemTotal:        2060284 kB
MemFree:         1494060 kB
Buffers:           35968 kB
Cached:           358152 kB
SwapCached:            0 kB
Active:           219856 kB
Inactive:         303840 kB
Active(anon):     142276 kB
Inactive(anon):    40556 kB
Active(file):      77580 kB
Inactive(file):   263284 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:       1173624 kB
HighFree:         674516 kB
LowTotal:         886660 kB
LowFree:          819544 kB
SwapTotal:       3903484 kB
SwapFree:        3903484 kB
Dirty:               632 kB
Writeback:             0 kB
AnonPages:        129516 kB
Mapped:            69816 kB
Shmem:             53264 kB
Slab:              24152 kB
SReclaimable:      11508 kB
SUnreclaim:        12644 kB
KernelStack:        1784 kB
PageTables:         2960 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4933624 kB
Committed_AS:     498424 kB
VmallocTotal:     122880 kB
VmallocUsed:       15964 kB
VmallocChunk:     101592 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       16376 kB
DirectMap4M:      892928 kB

Mostramos la memoria física y de intercambio utilizada por el sistema en un determinado momento:

root@r2d2:/home/j2sg# free -m
             total       used       free     shared    buffers     cached
Mem:          2011        247       1764          0         17        181
-/+ buffers/cache:         48       1963
Swap:         3811          0       3811
Gráfica

Comprobamos el reconocimiento del kernel sobre la gráfica Intel GMA3150:

root@r2d2:/home/j2sg# dmesg |grep agpgart
[    1.518284] Linux agpgart interface v0.103
[    1.518501] agpgart-intel 0000:00:00.0: Intel GMA3150 Chipset
[    1.518908] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable
[    1.519363] agpgart-intel 0000:00:00.0: detected 8192K stolen memory
[    1.519593] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0x80000000

La gráfica obtiene soporte del módulo i915:

root@r2d2:/home/j2sg# lsmod |grep i915
i915                  276436  1 
drm_kms_helper         26501  1 i915
drm                   128416  2 i915,drm_kms_helper
i2c_algo_bit           12706  1 i915
i2c_core               18989  5 i915,drm_kms_helper,drm,videodev,i2c_algo_bit
button                 12866  1 i915
video                  17345  1 i915
Pantalla

Instalamos la herramienta hwinfo que nos permitirá obtener información detallada de los dispositivos:

root@r2d2:/home/j2sg# aptitude install hwinfo

Obtenemos información sobre la pantalla:

root@r2d2:/home/j2sg# hwinfo --monitor
26: None 00.0: 10002 LCD Monitor
  [Created at monitor.95]
  Unique ID: rdCR.Vy0aNwK06sE
  Hardware Class: monitor
  Model: "AUO LCD Monitor"
  Vendor: AUO "AUO"
  Device: eisa 0x31d2 
  Resolution: 1024x600@60Hz
  Size: 223x125 mm
  Detailed Timings #0:
     Resolution: 1024x600
     Horizontal: 1024 1048 1184 1438 (+24 +160 +414) -hsync
       Vertical:  600  603  604  628 (+3 +4 +28) -vsync
    Frequencies: 54.20 MHz, 37.69 kHz, 60.02 Hz
  Config Status: cfg=new, avail=yes, need=no, active=unknown
Disco Duro

Comprobamos el reconocimiento del kernel sobre el disco duro SATA como un dispositivo SCSI:

root@r2d2:/home/j2sg# dmesg |grep sd
[    3.125930] sd 0:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[    3.126143] sd 0:0:0:0: [sda] Write Protect is off
[    3.126155] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    3.126242] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    3.164087]  sda: sda1 sda2 < sda5 >
[    3.164971] sd 0:0:0:0: [sda] Attached SCSI disk
[   32.823491] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)

Instalamos la herramienta hdparm:

root@r2d2:/home/j2sg# aptitude install hdparm

Obtenemos información sobre el disco duro:

root@r2d2:/home/j2sg# hdparm -i /dev/sda

/dev/sda:

 Model=WDC WD1600BEKT-60V5T1, FwRev=12.01A12, SerialNo=WD-WX41A2064437
 Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=50
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=312581808
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio3 pio4 
 DMA modes:  mdma0 mdma1 mdma2 
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-1,2,3,4,5,6,7

 * signifies the current active mode

Comprobamos los parámetros de configuración por defecto del disco duro:

root@r2d2:/home/j2sg# hdparm /dev/sda

/dev/sda:
 multcount     = 16 (on)
 IO_support    =  1 (32-bit)
 readonly      =  0 (off)
 readahead     = 256 (on)
 geometry      = 19457/255/63, sectors = 312581808, start = 0

Podemos hacer una prueba de rendimiento obteniendo los tiempos de lectura a disco y lectura a la cache de disco:

root@r2d2:/home/j2sg# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   1652 MB in  2.00 seconds = 826.50 MB/sec
 Timing buffered disk reads: 244 MB in  3.02 seconds =  80.92 MB/sec
Ethernet

Comprobamos el reconocimiento del kernel sobre la Ethernet Marvell:

root@r2d2:/home/j2sg# dmesg |grep eth
[    2.112339] sky2 0000:43:00.0: eth0: addr d8:d3:85:10:0e:d4
[   33.841355] sky2 0000:43:00.0: eth0: enabling interface
[   33.841981] ADDRCONF(NETDEV_UP): eth0: link is not ready
[   35.562421] sky2 0000:43:00.0: eth0: Link is up at 100 Mbps, full duplex, flow control both
[   35.562550] sky2 0000:43:00.0: eth0: Link is up at 100 Mbps, full duplex, flow control both
[   35.563190] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   46.320049] eth0: no IPv6 routers present

La tarjeta Ethernet obtiene soporte del módulo sky2:

root@r2d2:/home/j2sg# lsmod |grep sky2
sky2                   39890  0 

Comprobamos las interfaces de red:

root@r2d2:/home/j2sg# ifconfig
eth0      Link encap:Ethernet  HWaddr d8:d3:85:10:0e:d4  
          inet6 addr: fe80::dad3:85ff:fe10:ed4/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4694 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2268 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6304848 (6.0 MiB)  TX bytes:160135 (156.3 KiB)
          Interrupt:19 

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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Wi-Fi

Comprobamos el reconocimiento del kernel sobre la inalámbrica BCM4312:

root@r2d2:/home/j2sg# dmesg |grep -i wlan
[   30.641199] b43-phy0: Broadcom 4312 WLAN found (core revision 15)

La inalámbrica BCM4312, al igual que otros modelos de Broadcom, se encuentra soportada tanto por el driver propietario Broadcom STA, como por el driver b43, realizado mediante ingeniería inversa e incorporado al kernel Linux desde su versión 2.6.24, siendo este el utilizado por defecto en Debian y encontrándose ya cargado:

root@r2d2:/home/j2sg# lsmod |grep b43
b43                   256374  0 
rng_core               12550  1 b43
mac80211              160285  1 b43
cfg80211              106889  2 b43,mac80211
ssb                    38626  1 b43
mmc_core               52605  2 b43,ssb
pcmcia                 32024  2 b43,ssb

Sin embargo, para el caso concreto de la inalámbrica BCM4312 el soporte ofrecido por el driver b43 no es de momento completo ni tampoco estable, habiendo desconexiones frecuentes y conflictos con ACPI que producen errores eventuales. En vista de lo cual y hasta que sucesivas versiones resuelvan estos problemas, utilizaremos el driver Broadcom STA que funciona correctamente, no obstante al contrario que el b43, este no dispone de soporte para “modo monitor” e “inyección de paquetes”.

A continuación se muestran los pasos necesarios para utilizar tanto el driver b43 como el Broadcom STA, que como ya hemos mencionado será este último la alternativa que utilicemos hasta que el driver b43 no de problemas con el modelo BCM4312:

  • Instalamos el paquete wireless-tools para trabajar con redes inalámbricas:
    root@r2d2:/home/j2sg# aptitude install wireless-tools
    
  • Instalamos el driver:
    • b43
      • Instalamos la versión 4 del firmware de Broadcom, que al ser propietario no se incluye en la instalación de Debian, siendo necesario añadirlo a través del paquete firmware-b43-lpphy-installer:

        root@r2d2:/home/j2sg# aptitude install firmware-b43-lpphy-installer
        
    • Broadcom STA
      • Instalamos el paquete module-assistant para la construcción del paquete .deb que incluye el módulo wl parar nuestro kernel:

        root@r2d2:/home/j2sg# aptitude install module-assistant
        
      • Construimos e instalamos el paquete broadcom-sta-modules-*:
        root@r2d2:/home/j2sg# m-a a-i broadcom-sta
        
      • Descargamos el módulo b43 por entrar este en conflicto con el módulo wl:
        root@r2d2:/home/j2sg# modprobe -r b43 ssb
        
      • Cargamos el módulo wl:
        root@r2d2:/home/j2sg# modprobe wl
        
  • Comprobamos las interfaces inalámbricas, entre la que se encontrará la interfaz correspondiente la tarjeta inalámbrica, llamada wlan0 por el módulo b43 y eth1 por el módulo wl.
    root@r2d2:/home/j2sg# iwconfig
    lo        no wireless extensions.
    
    eth0      no wireless extensions.
    
    wlan0     IEEE 802.11bg  ESSID:off/any  
              Mode:Managed  Access Point: Not-Associated   Tx-Power=20 dBm   
              Retry  long limit:7   RTS thr:off   Fragment thr:off
              Encryption key:off
              Power Management:off
    
    
  • Levantamos la interfaz inalámbrica wlan0 (eth1 si utilizamos el módulo wl):
    root@r2d2:/home/j2sg# ifconfig wlan0 up
    
  • Podemos escanear para detectar redes inalámbricas cercanas:
    root@r2d2:/home/j2sg# iwlist wlan0 scanning
    wlan0     Scan completed :
              Cell 01 - Address: 00:1A:2B:2B:62:82
                        Channel:3
                        Frequency:2.422 GHz (Channel 3)
                        Quality=44/70  Signal level=-66 dBm  
                        Encryption key:on
    ...
    ...
              Cell 02 - Address: 00:80:5A:5C:C9:9E
                        Channel:6
                        Frequency:2.437 GHz (Channel 6)
                        Quality=55/70  Signal level=-55 dBm  
                        Encryption key:on
    ...
    ...
    
Bluetooth

Comprobamos el reconocimiento del kernel sobre el dispositivo Bluetooth:

root@r2d2:/home/j2sg# dmesg |grep -i blue
[   29.474909] Bluetooth: Core ver 2.15
[   29.474984] Bluetooth: HCI device and connection manager initialized
[   29.474992] Bluetooth: HCI socket layer initialized
[   29.551207] Bluetooth: Generic Bluetooth USB driver ver 0.6

El dispositivo Bluetooth obtiene soporte del módulo bluetooth:

root@r2d2:/home/j2sg# lsmod |grep bluetooth
bluetooth              50119  1 btusb
rfkill                 18510  3 hp_wmi,cfg80211,bluetooth
Sonido

Comprobamos el reconocimiento del kernel sobre la tarjeta de sonido Intel HDA:

root@r2d2:/home/j2sg# dmesg |grep -i hda
[   30.697330] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0
[   30.697350] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0
[   30.697369] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19
[   30.697505] HDA Intel 0000:00:1b.0: irq 46 for MSI/MSI-X
[   30.697568] HDA Intel 0000:00:1b.0: setting latency timer to 64
[   30.758533] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input10
[   30.772474] input: HDA Intel Mic at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11
[   30.773631] input: HDA Intel HP Out at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12

La tarjeta de sonido integrada obtiene soporte del módulo snd_hda_intel:

root@r2d2:/home/j2sg# lsmod |grep hda
snd_hda_codec_idt      44443  1 
snd_hda_intel          21529  0 
snd_hda_codec          57563  2 snd_hda_codec_idt,snd_hda_intel
snd_hwdep              12906  1 snd_hda_codec
snd_pcm                52774  2 snd_hda_intel,snd_hda_codec
snd                    38153  6 snd_hda_codec_idt,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
snd_page_alloc         12841  2 snd_hda_intel,snd_pcm
Teclado

Obtenemos información acerca del teclado:

root@r2d2:/home/j2sg# hwinfo --keyboard
23: PS/2 00.0: 10800 Keyboard
  [Created at input.161]
  UDI: /org/freedesktop/Hal/devices/platform_i8042_i8042_KBD_port_logicaldev_input
  Unique ID: nLyy.+49ps10DtUF
  Hardware Class: keyboard
  Model: "AT Translated Set 2 keyboard"
  Vendor: 0x0001 
  Device: 0x0001 "AT Translated Set 2 keyboard"
  Compatible to: int 0x0211 0x0001
  Device File: /dev/input/event0
  Device Files: /dev/input/event0, /dev/input/by-path/platform-i8042-serio-0-event-kbd
  Device Number: char 13:64
  Driver Info #0:
    XkbRules: xfree86
    XkbModel: pc104
  Config Status: cfg=new, avail=yes, need=no, active=unknown
Touchpad

Comprobamos el reconocimiento del kernel sobre el touchpad:

root@r2d2:/home/j2sg# dmesg |grep mouse
[    0.944935] mice: PS/2 mouse device common for all mice

El touchpad obtiene soporte mediante el módulo psmouse:

root@r2d2:/home/j2sg# lsmod |grep mouse
psmouse                45863  0 
Webcam

Comprobamos el reconocimiento del kernel sobre el webcam:

root@r2d2:/home/j2sg# dmesg |grep video
[    0.578458] pci 0000:00:02.0: Boot video device
[   29.869149] Linux video capture interface: v2.00
[   30.106572] uvcvideo: Found UVC 1.00 device CNF8243 (04f2:b159)
[   30.164935] usbcore: registered new interface driver uvcvideo

La webcam obtiene soporte mediante el módudo uvcvideo:

root@r2d2:/home/j2sg# lsmod |grep uvcvideo
uvcvideo               52490  0 
videodev               48418  1 uvcvideo
usbcore                99058  5 uvcvideo,btusb,uhci_hcd,ehci_hcd
Visión General

Reconocemos los dispositivos conectados al sistema:

root@r2d2:/home/j2sg# lspci
00:00.0 Host bridge: Intel Corporation N10 Family DMI Bridge
00:02.0 VGA compatible controller: Intel Corporation N10 Family Integrated Graphics Controller
00:02.1 Display controller: Intel Corporation N10 Family Integrated Graphics Controller
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02)
00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02)
00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation NM10 Family LPC Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation N10/ICH7 Family SATA AHCI Controller (rev 02)
01:00.0 Network controller: Broadcom Corporation BCM4312 802.11b/g LP-PHY (rev 01)
43:00.0 Ethernet controller: Marvell Technology Group Ltd. Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] (rev 11)

Reconocemos los dispositivos conectados al bus USB:

root@r2d2:/home/j2sg# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 003: ID 04f2:b159 Chicony Electronics Co., Ltd 
Bus 002 Device 002: ID 03f0:231d Hewlett-Packard 
Instalación de paquetes

En este momento, tan solo contamos con el sistema base junto a un reducido número de herramientas de sistema, por lo que ha llegado el momento de empezar ha instalar aquellos paquetes que necesitemos. Hasta que dispongamos del entorno gráfico, necesitaremos realizar ciertas tareas comunes para los que podemos utilizar las siguientes herramientas en modo texto:

  • Editor : Debian viene con nano y vi preinstalados, aunque quizas prefiramos otros editores como joe, emacs o vim, siendo nano y joe los mas sencillos de utilizar.
  • Gestor de ficheros : Con Midnight Commander podemos navagar por la estructura de directorios o editar ficheros con su editor mcedit.
  • Gestor de paquetes : Con aptitude que aparte del comando dispone de una interfaz ncurses que permite la instalación, desinstalación y búsqueda de paquetes de modo interactivo.
  • Otras : De uso poco habitual frente a sus equivalentes gráficos, pero que pueden ayudarnos sino disponemos de interfaz gráfica en un determinado momento, como por ejemplo navegadores web como w3m, lynx o elinks, clientes de mensajería instantanea como mcabber para jabber o centerim que es multiprotocolo, clientes de correo electrónico como mutt, etc.

Aunque no lo necesitemos por ahora, puede que mas adelante usemos las herramientas de desarrollo, por lo que instalamos el paquete build-essential:

root@r2d2:/home/j2sg# aptitude install build-essential
Comunicaciones
  • Instalamos el cliente para redes inalámbricas cifradas WPA/WPA2 a través del paquete wpasupplicant:

    root@r2d2:/home/j2sg# aptitude install wpasupplicant
    
  • Instalamos un gestor de redes, pudiendo elegir entre NetworkManager y wicd, disponiendo ambos de un daemon que gestiona en segundo plano las interfaces y redes disponibles, y un frontend que interacciona con el usuario y que instalaremos mas adelante para un entorno de escritorio concreto.Al instalar un gestor de redes se comentarán automáticamente las lineas del fichero de /etc/network/interfaces al no ser ya necesario para la configuración de las interfaces de red.
    • NetworkManager:
      root@r2d2:/home/j2sg# aptitude install network-manager network-manager-openvpn network-manager-pptp network-manager-vpnc
      
    • wicd:
      root@r2d2:/home/j2sg# aptitude install wicd
      
  • Instalamos el soporte para bluetooth asi como el demonio y herramientas:
    root@r2d2:/home/j2sg# aptitude install bluetooth bluez bluez-utils
    
  • Vemos la configuración del dispositivo bluetooth:
    root@r2d2:/home/j2sg# hciconfig
    hci0:	Type: BR/EDR  Bus: USB
    	BD Address: 00:27:13:8B:40:4C  ACL MTU: 1021:8  SCO MTU: 64:1
    	UP RUNNING PSCAN ISCAN 
    	RX bytes:4934 acl:11 sco:0 events:108 errors:0
    	TX bytes:2154 acl:11 sco:0 commands:89 errors:0
    
    
  • Si tenemos un dispositivo con bluetooth activado, como por ejemplo un teléfono móvil, podemos intentar detectarlo:
    j2sg@r2d2:~$ hcitool scan
    Scanning ...
    	EC:9B:5B:A1:8E:11	Nokia 5230
    
  • Una vez instalado el entorno gráfico, si utilizamos los entornos de escritorio KDE o GNOME instalaremos bluedevil o gnome-bluetooth respectivamente. En caso de no disponer de ninguno de estos dos escritorios podemos utilizar bluetooth-agent.
Sistema de sonido
  • Instalamos el sistema de sonido ALSA:
    root@r2d2:/home/j2sg# aptitude install alsa-base alsa-oss alsa-utils
    
  • Comprobamos las tarjetas de sonido detectadas:
    root@r2d2:/home/j2sg# cat /proc/asound/cards
     0 [Intel          ]: HDA-Intel - HDA Intel
                          HDA Intel at 0x94500000 irq 46
    
  • Con alsamixer podemos regular y/o silenciar los caneles de audio del dispositivo Intel HDA, por ejemplo podemos silenciar el canal Beep que se corresponde con el zumbador del sistema y que puede resultar bastante molesto cuando en la terminal usamos el autocompletado con el tabulador.
    root@r2d2:/home/j2sg# alsamixer
    

    alsamixer

  • Podemos probar la tarjeta de sonido reproduciendo un fichero de audio con aplay:
    j2sg@r2d2:~$ wget -c http://www.wav-sounds.com/various/applause.wav
    ...
    ...
    j2sg@r2d2:~$ aplay applause.wav 
    Playing WAVE 'applause.wav' : Unsigned 8 bit, Rate 8000 Hz, Mono
    
Gestión de Energía

El kernel Linux dispone de soporte ACPI para gestión de energía, la cual es manejada por Debian a través del paquete acpi presente en el sistema base, al igual que acpid que implementa un daemon para el tratamientos de eventos ACPI tales como la pulsación del boton de encendido, apertura/cierre de la pantalla, conexión de la toma de corriente, etc.

Cada evento ACPI se encuentra definido por un fichero ubicado en el directorio /etc/acpi/events, cuando el daemon acpid captura un evento, este efectua la acción especificada en su definición, tipicamente la ejecución de un script encargado de manejar dicho evento, por ejemplo, el paquete acpi-support-base, el cual se encuentra en el sistema base, define el evento de la pulsación del boton de encendido en el fichero /etc/acpi/events/powerbtn-acpi-support, manejando dicho evento con el script /etc/acpi/powerbtn-acpi-support.sh que inicia el proceso de apagado del sistema. Con los pasos siguientes vamos ha extender el número de eventos ACPI tratados, además de añadir soporte para la suspensión en RAM y la hibernación en disco:

  • Instalamos el paquete acpi-support que añade nuevos scripts para el tratamiento de eventos:
    root@r2d2:/home/j2sg# aptitude install acpi-support
    
  • Instalamos el paquete pm-utils que incorpora herramientas y scripts para la gestión de energía, ademas de soporte para la suspensión e hibernación, todo ello haciendo uso de la capa de abstracción hardware o HAL que es proporcionada por el paquete hal. El uso pm-utils convierte a los paquetes acpi-* anteriores en opcionales, sin embargo HAL hará uso de acpid para la gestión de eventos al encontrarse este ya instalado:
    root@r2d2:/home/j2sg# aptitude install pm-utils hal
    
  • Con los scripts proporcionados por pm-utils podemos:
    • Suspender en RAM:
      root@r2d2:/home/j2sg# pm-suspend
      
    • Hibernar en disco:
      root@r2d2:/home/j2sg# pm-hibernate
      
  • Instalamos el paquete uswsusp que es opcional pero recomendado para trabajar con pm-utils, el cual hará uso preferentemente de uswsusp si este se cuentra instalado en el sistema:
    root@r2d2:/home/j2sg# aptitude install uswsusp
    
  • Podemos realizar la suspensión/hibernación a través de uswsusp con los comandos:
    • Suspender en RAM:
      root@r2d2:/home/j2sg# s2ram
      
    • Hibernar en disco:
      root@r2d2:/home/j2sg# s2disk
      

Cuando instalamos el paquete acpi-support se añadió entre otros soporte para el evento de cierre de la pantalla definido en el fichero /etc/acpi/events/lidbtn cuyo contenido es el siguiente:

# /etc/acpi/events/lidbtn
# Called when the user closes or opens the lid

event=button[ /]lid
action=/etc/acpi/lid.sh

El evento será manejado por el script /etc/acpi/lid.sh que suspenderá en RAM al netbook siendo su contenido el siguiente:

#!/bin/sh

grep -q open /proc/acpi/button/lid/LID/state && exit 0
pm-suspend

Puede que prefiramos que al cerrar la pantalla del netbook este en vez de suspenderse entre en hibernación en disco, para lo que tan solo debemos sustituir la linea 4 del script anterior por la siguiente:

pm-hibernate
Escalado de Frecuencia

Para maximizar el ahorro de batería podemos utilizar el escalado de frecuencia, que consiste en la modificación dinámica de la frecuencia de trabajo de la CPU, la cual varia según la política del “governor” que la controla. Para usar el escalado de frecuencia en Debian seguimos los pasos siguientes:

  • instalamos el paquete cpufrequtils que al arranque del sistema cargará el módulo genérico acpi-cpufreq junto a los módulos de los “governors”:

    root@r2d2:/home/j2sg# aptitude install cpufrequtils
    
  • Podemos obtener los “governors” disponibles invocando:
    root@r2d2:/home/j2sg# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
    powersave conservative userspace ondemand performance 
    
  • Obtenemos información sobre el escalado actual invocando:
    root@r2d2:/home/j2sg# cpufreq-info
    cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
    Report errors and bugs to cpufreq@vger.kernel.org, please.
    analyzing CPU 0:
      driver: acpi-cpufreq
      CPUs which run at the same hardware frequency: 0 1
      CPUs which need to have their frequency coordinated by software: 0
      maximum transition latency: 10.0 us.
      hardware limits: 1000 MHz - 1.67 GHz
      available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
      available cpufreq governors: powersave, conservative, userspace, ondemand, performance
      current policy: frequency should be within 1000 MHz and 1.33 GHz.
                      The governor "ondemand" may decide which speed to use
                      within this range.
      current CPU frequency is 1000 MHz.
      cpufreq stats: 1.67 GHz:0,00%, 1.33 GHz:13,47%, 1000 MHz:86,53%  (1484)
    analyzing CPU 1:
      driver: acpi-cpufreq
      CPUs which run at the same hardware frequency: 0 1
      CPUs which need to have their frequency coordinated by software: 1
      maximum transition latency: 10.0 us.
      hardware limits: 1000 MHz - 1.67 GHz
      available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
      available cpufreq governors: powersave, conservative, userspace, ondemand, performance
      current policy: frequency should be within 1000 MHz and 1.33 GHz.
                      The governor "ondemand" may decide which speed to use
                      within this range.
      current CPU frequency is 1.33 GHz.
      cpufreq stats: 1.67 GHz:0,00%, 1.33 GHz:7,67%, 1000 MHz:92,33%  (445)
    
  • Podemos cambiar el “governor” asignado invocando:
    root@r2d2:/home/j2sg# cpufreq-set -g powersave
    
Optimización de Batería

Para conseguir reducir el consumo de energia alargando así la vida de la batería instalamos Laptop Mode Tools (en adelante LMT), el cual según estemos conectados a la red eléctrica o consumiendo la batería, activará/desactivará dispositivos y/o establecerá perfiles de configuración sobre diversos parámetros del sistema. Instalamos LMT a través del paquete laptop-mode-tools:

root@r2d2:/home/j2sg# aptitude install laptop-mode-tools

La configuración por defecto de LMT es la apropiada en general, salvo quizas en la cuestión de la gestión de energía del disco duro, ya que cuando estamos en modo batería, el disco duro deja de girar cuando este se encuentra inactivo, algo que puede llegar a ahorrar bastante batería, pero que personalmente no considero recomendable para la vida del disco duro por los continuos arranques y paradas.

LMT controla la gestión de energía de disco cuando este se encuentra en modo batería a través del parámetro BATT_HD_POWERMGMT del fichero de configuración /etc/laptop-mode/laptop-mode.conf. El valor de este parámetro se corresponde con un entero entre 1 y 255 que es pasado al comando hdparm -B y que determina el balance entre el ahorro energético y el rendimiento del disco, donde los valores mas bajos implican un mayor ahorro, mientras que los mas altos favorecen al rendimiento.

La configuración por defecto de LMT establece el parámetro BATT_HD_POWERMGMT a 1, representando el modo de ahorro mas agresivo, que incluye la parada del disco cuando este se encuentra inactivo, lo cual se sigue cumpliendo para valores desde 1 hasta 127. Para valores entre 128 y 254 seguimos jugando con los factores de ahorro y rendimiento pero sin que se produzca la parada del disco duro, siendo el valor 254 el establecido cuando estemos conectados a la red electrica (si establecemos el valor a 255 inhabilitamos la gestión de energía para el disco duro). Teniendo en cuenta todo lo anterior y con el fin de ahorrar energía protegiendo la vida del disco vamos ha establecer el parámetro BATT_HD_POWERMGMT a 128, para lo que editamos la linea correspondiente del fichero de configuración /etc/laptop-mode/laptop-mode.conf.

BATT_HD_POWERMGMT=128

Tambien podemos activar el control sobre el dispositivo Bluetooth, el cual se inhabilitará al entrar en modo batería, para ello modificamos las lineas correspondientes al fichero /etc/laptop-mode/conf.d/bluetooth.conf:

CONTROL_BLUETOOTH=1
BATT_ENABLE_BLUETOOTH=0
AC_ENABLE_BLUETOOTH=1

Por último, activamos el control sobre el nivel de brillo de la pantalla, para lo que editamos las lineas correspondientes del fichero /etc/laptop-mode/conf.d/lcd-brightness.conf:

CONTROL_BRIGHTNESS=1
BATT_BRIGHTNESS_COMMAND="echo 10"
LM_AC_BRIGHTNESS_COMMAND="echo 24"
NOLM_AC_BRIGHTNESS_COMMAND="echo 24"
BRIGHTNESS_OUTPUT="/sys/class/backlight/acpi_video0/brightness"

Los números hacen referencia al nivel de brillo de la pantalla, que oscilan entre 0 y el valor máximo que podemos consultar en el fichero /sys/class/backlight/acpi_video0/max_brightness, en este caso he establecido un nivel de brillo 10 para el modo batería y 24 para cuando estamos conectados a la red eléctrica o LMT no está en ejecución. Para aplicar los cambios reiniciamos LMT:

root@r2d2:/home/j2sg# /etc/init.d/laptop-mode restart
Disabling laptop mode...done (disabled, not active
Activating Runtime PM for device type PCI
Activating Runtime PM for device type SPI
Activating Runtime PM for device type i2c).
Enabling laptop mode...done (enabled, active
Activating Runtime PM for device type PCI
Activating Runtime PM for device type SPI
Activating Runtime PM for device type i2c).
Monitorización
  • Instalamos el paquete lm-sensors para poder leer los sensores de temperatura de la CPU y la placa base:
    root@r2d2:/home/j2sg# aptitude install lm-sensors
    
  • Ejecutamos sensors-detect para detectar los sensores en el sistema y cargar los módulos necesarios:
    root@r2d2:/home/j2sg# sensors-detect
    # sensors-detect revision 5946 (2011-03-23 11:54:44 +0100)
    # System: Hewlett-Packard HP Mini 5102 (laptop)
    # Board: Hewlett-Packard 3653
    
    This program will help you determine which kernel modules you need
    to load to use lm_sensors most effectively. It is generally safe
    and recommended to accept the default answers to all questions,
    unless you know what you're doing.
    
    Some south bridges, CPUs or memory controllers contain embedded sensors.
    Do you want to scan for them? This is totally safe. (YES/no): yes
    Module cpuid loaded successfully.
    Silicon Integrated Systems SIS5595...                       No
    VIA VT82C686 Integrated Sensors...                          No
    VIA VT8231 Integrated Sensors...                            No
    AMD K8 thermal sensors...                                   No
    AMD Family 10h thermal sensors...                           No
    AMD Family 11h thermal sensors...                           No
    AMD Family 12h and 14h thermal sensors...                   No
    Intel digital thermal sensor...                             Success!
        (driver `coretemp')
    Intel AMB FB-DIMM thermal sensor...                         No
    VIA C7 thermal sensor...                                    No
    VIA Nano thermal sensor...                                  No
    
    Some Super I/O chips contain embedded sensors. We have to write to
    standard I/O ports to probe them. This is usually safe.
    Do you want to scan for Super I/O sensors? (YES/no): yes
    Probing for Super-I/O at 0x2e/0x2f
    Trying family `National Semiconductor'...                   No
    Trying family `SMSC'...                                     Yes
    Found `SMSC FDC37B72x Super IO'                             
        (no hardware monitoring capabilities)
    Probing for Super-I/O at 0x4e/0x4f
    Trying family `National Semiconductor'...                   No
    Trying family `SMSC'...                                     No
    Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
    Trying family `ITE'...                                      No
    
    Some hardware monitoring chips are accessible through the ISA I/O ports.
    We have to write to arbitrary I/O ports to probe them. This is usually
    safe though. Yes, you do have ISA I/O ports even if you do not have any
    ISA slots! Do you want to scan the ISA I/O ports? (YES/no): yes
    Probing for `National Semiconductor LM78' at 0x290...       No
    Probing for `National Semiconductor LM79' at 0x290...       No
    Probing for `Winbond W83781D' at 0x290...                   No
    Probing for `Winbond W83782D' at 0x290...                   No
    
    Lastly, we can probe the I2C/SMBus adapters for connected hardware
    monitoring devices. This is the most risky part, and while it works
    reasonably well on most systems, it has been reported to cause trouble
    on some systems.
    Do you want to probe the I2C/SMBus adapters now? (YES/no): no
    Now follows a summary of the probes I have just done.
    Just press ENTER to continue: 
    
    Driver `coretemp':
      * Chip `Intel digital thermal sensor' (confidence: 9)
    
    To load everything that is needed, add this to /etc/modules:
    #----cut here----
    # Chip drivers
    coretemp
    #----cut here----
    If you have some drivers built into your kernel, the list above will
    contain too many modules. Skip the appropriate ones!
    
    Do you want to add these lines automatically to /etc/modules? (yes/NO)yes
    Successful!
    
    Monitoring programs won't work until the needed modules are
    loaded. You may want to run '/etc/init.d/module-init-tools start'
    to load them.
    
    Unloading cpuid... OK
    
    
  • Cargamos los módulos necesarios:
    root@r2d2:/home/j2sg# /etc/init.d/module-init-tools start
    Loading kernel modules...done.
    
  • Leemos los sensores detectados:
    root@r2d2:/home/j2sg# sensors
    acpitz-virtual-0
    Adapter: Virtual device
    temp1:        +38.0°C  (crit = +105.0°C)
    temp2:        +53.0°C  (crit = +103.0°C)
    temp3:        +49.0°C  (crit = +78.0°C)
    temp4:        +33.3°C  (crit = +103.0°C)
    temp5:        +70.0°C  (crit = +110.0°C)
    
    coretemp-isa-0000
    Adapter: ISA adapter
    Core 0:       +48.0°C  (crit = +100.0°C)
    
  • Instalamos el paquete hddtemp para monitorizar la temperatura del disco duro:
    root@r2d2:/home/j2sg# aptitude install hddtemp
    
  • Leemos la temperatura del disco duro:
    root@r2d2:/home/j2sg# hddtemp /dev/sda
    /dev/sda: WDC WD1600BEKT-60V5T1: 35°C
    
  • Modificamos la configuración del paquete hddtemp estableciendo el bit SUID de /usr/sbin/hddtemp a “1” para no necesitar privilegios de superusuario:
    root@r2d2:/home/j2sg# dpkg-reconfigure hddtemp
    
Entorno Gráfico
  • Instalamos el servidor X de X.Org:
    root@r2d2:/home/j2sg# aptitude install xserver-xorg xutils xfonts-100dpi xfonts-75dpi xfonts-100dpi-transcoded xfonts-75dpi-transcoded
    

    La gráfica Intel GMA3150 utiliza el driver X.Org intel, el cual obtenemos a través del paquete xserver-xorg-video-intel que ha sido instalado anteriormente como dependencia. Dicho driver requiere la activación de KMS (que viene habilitado por defecto en el kernel precompilado por Debian). Desde las últimas versiones del servidor X.Org, se ha introducido una característica denominada “input hotplugging” que permite la gestión automática de la configuración del servidor gráfico a través de HAL y D-Bus, lo que ha convertido en opcional el uso del clásico fichero de configuración /etc/X11/xorg.conf.

  • A continuación instalamos el gestor de sesiones, debiendo elegir entre xdm, gdm y kdm. Aunque no tiene porqué, la elección de uno u otro debería estar condicionada al entorno de escritorio que vamos ha utilizar mas adelante, siendo lógico instalar kdm si utilizamos KDE y gdm si utilizamos GNOME u otros entornos.
    • kdm :

      root@r2d2:/home/j2sg# aptitude install kdm
      
    • gdm :
      root@r2d2:/home/j2sg# aptitude install gdm3
      
    • xdm :
      root@r2d2:/home/j2sg# aptitude install xdm
      
  • A continuación elegimos un entorno de escritorio, algo que depende enteramente de las preferencias de cada uno, por lo que según el escritorio elegido instalamos:
    • GNOME :
      root@r2d2:/home/j2sg# aptitude install gnome
      
    • KDE :
      root@r2d2:/home/j2sg# aptitude install kde kde-l10n-es
      
    • Xfce :
      root@r2d2:/home/j2sg# aptitude install xfce4 thunar
      
    • LXDE :
      root@r2d2:/home/j2sg# aptitude install lxde pcmanfm
      
    • Otros entornos ligeros como fluxbox, icewm, etc.
  • Reiniciamos el servidor gráfico (sustituir kdm por gdm o xdm según proceda):
    root@r2d2:/home/j2sg# /etc/init.d/kdm restart
    
  • Una vez iniciada sesión, abrimos una terminal e instalamos el paquete mesa-utils:
    root@r2d2:/home/j2sg# aptitude install mesa-utils
    
  • Comprobamos si disponemos de aceleración gráfica:
    j2sg@r2d2:~$ glxinfo |grep direct
    direct rendering: Yes
    
  • Evaluamos el rendimiento de la gráfica con glxgears para obtener el número de FPS

    glxgears

Una vez disponemos de nuestro entorno de escritorio favorito, podemos instalar los frontends para gestión de redes, bluetooth, sonido, etc, que dependerán del escritorio concreto:

  • Para KDE 4, el gestor de redes wicd y el gestor bluetooth bluedevil instalamos:
    root@r2d2:/home/j2sg# aptitude install wicd-kde bluedevil
    

    En caso de haber utilizado el gestor de redes network-manager, en lugar de wicd-kde habriamos instalado el paquete network-manager-kde.

  • Para GNOME, el gestor de redes wicd y el gestor bluetooth gnome-bluetooth instalamos:
    root@r2d2:/home/j2sg# aptitude install wicd-gtk gnome-bluetooth
    

    En caso de haber utilizado el gestor de redes network-manager, en lugar de wicd-gtk habriamos instalado el paquete network-manager-gnome.

Llegados a este punto solo resta instalar nuestras aplicaciones favoritas como navegadores web, clientes de correo, paquetes ofimáticos, etc, tras lo cual tendremos nuestro netbook listo para trabajar.

hp5102_debian_kde4

Anuncios

Un comentario sobre “HP Mini 5102 + Debian GNU/Linux

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s