Algunas notas sueltas sobre la configuración del Laptop Dell Vostro 1500 en Gentoo. Seguramente aplicable tanto a otros Linux como a otros portátiles Dell (p.e: Insiron 1520) o con el mismo hardware.
No pretende ser una guía completa sobre como configurar el hardware, solo un resumen de ciertos pasos por si algún día tengo que repetirlos.
Hardware
Para los que vienen de google :)
La configuración completa del Kernel está adjuntada al final de esta entrada, por si alguien la quiere usar como base o por si he olvidado mencionar alguna opción en las siguientes secciones.
make.conf
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe -msse3"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j3"
FEATURES="parallel-fetch unmerge-orphans"Controlador SATA
IDE interface: Intel Corporation Mobile SATA Controller IDE (rev 02)
Device Drivers ---> <*> Serial ATA (prod) and Parallel ATA (experimental) drivers ---> <*> Intel ESB, ICH, PIIX3, PIIX4 PATA/SATA support
Controlador IDE
IDE interface: Intel Corporation Mobile IDE Controller (rev 02)
Lo necesitamos para el CD-ROM
Device Drivers --->
<*> ATA/ATAPI/MFM/RLL support --->
[*] Generic PCI bus-master DMA support
<*> Intel PIIXn chipsets supportACPI y ahorro de energía
Poco que explicar, la guía oficial de Gentoo es bastante completa. Lo único a destacar es que si decides usar laptop-mode-tools estudia a fondo su archivo de configuración /etc/laptop-mode/laptop-mode.conf, que está muy bien documentado y permite ajustar muy bien el control de ahorro de energía en bastantes aspectos.
Tarjeta de sonido
Audio device: Intel Corporation HD Audio Controller (rev 02)
Instalar una versión de ALSA >=1.0.14-r1 (Actualización: El kernel v2.6.24 ya incluye la última versión del driver y la nueva política de Gentoo es recomendar el uso de la versión del kernel) y en /etc/modules.d/alsa poner
options snd_hda_intel model=laptop-eapd power_save=300
Eliminar ruidos de alta frecuencia
El Vostro 1500, como otros muchos portátiles Core 2 Duo, emite unos sonidos de alta frecuencia. Usando los altavoces integrados a penas se aprecian pero usando altavoces externos o auriculares son bastante molestos. Los ruidos son debidos a los estados de ahorro de energía del procesador, parte de ACPI.
Existen varios estados de ahorro de energía C0,C1,C2,.... Cuanto más alto es el número que identifica al estado, mayor es el grado de ahorro de energía. Normalmente los ruidos solo se producen a partir del estado C3 o C4.
Para eliminar los ruidos tendremos que prescindir de los estados "ruidosos", algo en principio no recomendado cuando usamos baterías, ya que se incrementa el consumo.
Si solo quieres prescindir de los estados ruidosos cuando el ruido moleste (escuchando música, viendo una película,...) se puede cambiar el máximo estado de ahorro en tiempo de ejecución con el siguiente comando:
Para averiguar el primer estado en el que nuestro procesador empieza a emitir ruido ejecutar:
En mi caso, el estado ruidoso es el C4. Como no quiero anular de forma permanente ese estado de ahorro de energía, cada vez que me molesta el ruido fijo C3 como máximo estado de ahorro de energía ejecutando el comando
pero si quisiese anularlo definitivamente, otra opcion es indicar la siguiente opción al módulo del kernel que controla los estados ACPI del procesador.
Trajeta de red
Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)
Device Drivers --->
Network device support --->
Network device support --->
Ethernet (10 or 100Mbit) --->
[*] Ethernet (10 or 100Mbit)
[*] EISA, VLB, PCI and on board controllers
<M> Broadcom 4400 ethernet supportLas nuevas versiones de UDEV cargan todas las interfaces que esten configuradas en /etc/conf.d/net, por lo que no es necesario añadir su script de inicio a ningún runlevel
Para que la interfaz cableada se incie solo cuando haya un cable conectado, instalar el siguiente programa (no es necesario hacer nada más):
Parte relevante de /etc/conf.d/net
config_eth0=( "192.168.0.3 netmask 255.255.255.0 brd 192.168.0.255" ) routes_eth0=( "default via 192.168.0.1" )
Tarjeta Wi-Fi
(Obsolteto, consultar información sobre iwlwifi un poco más abajo)
Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
Networking --->
Wireless --->
<M> Generic IEEE 802.11 Networking Stack
<M> IEEE 802.11 WEP encryption (802.1x)
<M> IEEE 802.11i CCMP support
<M> IEEE 802.11i TKIP encryption
Device Drivers --->
Network device support --->
Wireless LAN ->
[*] Wireless LAN (IEEE 802.11)
Para evitar que UDEV no la inicie al arrancar y así ahorrar energía poner en /etc/conf.d/rc :
RC_PLUG_SERVICES="!ipw3945d !net.eth1"
Además, el módulo ipw3945 da problemas para hibernar, ya que hemos quitado ipw3945d y net.eth1 no necesitamos el módulo
Parte relevante de /etc/conf.d/net
modules=( "wpa_supplicant" )
wpa_supplicant_eth1="-w -D wext"
config_eth1=( "192.168.0.33 netmask 255.255.255.0 brd 192.168.0.255" )
routes_eth1=( "default via 192.168.0.1" )
#dhcp_eth1="nontp nonis -t 10" # para que no se sobreescriba el resolv.conf añadir -R
depend_eth1() {
need ipw3945d
}Parte relevante de /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
update_config=0
fast_reauth=1
network={
ssid="mi_ssid"
#psk sacado con el comando 'wpa_passphrase mi_ssid mi_clave', así no se guarda la clave en texto plano en este archivo
psk=7987979879873924792374987329794732984792374923749237497234798
pairwise=TKIP
group=TKIP
priority=5
}
Tarjeta Wi-Fi
Actualización: El kernel v2.6.24 ya incluye la última versión del driver iwlwifi que resulta mucho más estable.
Configuración del kernel:
Networking --->
Wireless --->
{M} Improved wireless configuration API
[*] nl80211 new netlink interface support
-*- Wireless extensions
<M> Generic IEEE 802.11 Networking Stack (mac80211)
Device Drivers --->
Network device support --->
Wireless LAN ->
[*] Wireless LAN (IEEE 802.11)
[*] Intel Wireless WiFi Link Drivers
[*] Enable Sensitivity Calibration in iwlwifi drivers
[*] Enable Spectrum Measurement in iwlwifi drivers
<M> Intel PRO/Wireless 3945ABG/BG Network ConnectionEste driver requiere la instalación del paquete de firmware de Intel
De nuevo, si queremos que UDEV no inicie la tarjeta al arrancar y así ahorrar energía poner en /etc/conf.d/rc :
RC_PLUG_SERVICES="!net.wlan0"
Las configuraciones relativas a /etc/conf.d/net y /etc/wpa_supplicant/wpa_supplicant.conf explicadas para el driver ipw3945 sirven también para este driver teniendo en cuenta las pequeñas modificaciones triviales que implica que la tarjeta Wi-Fi ahora se llama wlan0 en vez de eth1.
Framebuffer y Splash
Usar el driver vesafb con el parámetro de arranque vga=0x0369
Parte relevante de /boot/grub/grub.conf
title=Gentoo 2.6.22-r2 root (hd0,1) kernel /boot/bzImage-2.6.22-r2 root=/dev/sda2 video=vesa:ywrap,mtrr vga=0x0369 splash=silent,fadein,theme:livecd-2007.0 quiet CONSOLE=/dev/tty1 fbcon=scrollback:12 initrd /boot/splash-livecd-2007.0-1680x1050
Si prefieres usaruvesafb, puedes pasar el parámetro video=uvesafb:1680x1050-32,mtrr:3,ywrap
Faltaría añadir el soporte para resume2
Touchpad
Dispositivos de entrada en /etc/make.conf
INPUT_DEVICES="evdev keyboard mouse synaptics"
Device Drivers --->
Input device support --->
--- Mouse interface
<M> Event interface
[*] Mice
<M> PS/2 mouseParte relevante de /etc/X11/xorg.conf
Section "ServerLayout" ... InputDevice "TouchPad" "CorePointer" InputDevice "Logitech MX500 evdev" "SendCoreEvents" ... EndSection Section "InputDevice" Driver "synaptics" Identifier "TouchPad" Option "SendCoreEvents" Option "Protocol" "auto-dev" Option "SHMConfig" "on" EndSection
Para desactivar el tocuhpad mientras se pulsa una tecla (salvo SHIFT,CONTROL y similares) y así evitar pulsaciones involuntarias mientras se escribe, edita /etc/conf.d/syndaemon:
SYNDAEMON_OPTS="-k"
y luego
A mi me falla el script de inicio de syndaemon, así que he añadido el siguiente comando en ~/.xinitrc:
/usr/bin/syndaemon -k
Ranura de expansión ExpressCard
No tengo ninguna tarjeta para probar, consultar el Wiki.
Lector de tarjetas
Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 22)
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Device Drivers --->
<M> MMC/SD Card support -->
<M> MMC block device driver
[*] Use bounce buffer for simple hosts
<M> Secure Digital Host Controller Interface support (EXPERIMENTAL)
<M> Ricoh MMC Controller Disabler (EXPERIMENTAL)
File systems --->
DOS/FAT/NT Filesystems --->
<M> MSDOS fs support
<M> VFAT (Windows-95) fs supportLos dispositivos que se crean al insertar la tarjeta son /dev/mmcblk0*
Teclas multimedia
En general, el kernel asigna a cada tecla un código llamado "raw scancode" (en hexadecimal). En el entorno X, el teclado funciona de forma algo distinta: los "raw scancode" son traducidos a unos códigos propios llamados "keycode" (en decimal). Por tanto, para que una tecla funcione en X tiene que tener un "keycode" asociado. Para ver si una tecla tiene un "keycode" asociado ejecutar el comando
y pulsar la tecla en cuestión. Si la salida es parecida a esta
es que la tecla tiene un "keycode" (en este caso el 160). En caso contrario tenemos que averiguar si al menos tiene un "raw scancode". Para ello ejecutar
y pulsar la tecla en cuestión. Si la salida es parecida a esta
es que la tecla tiene un "raw scancode" (en este caso el e012). En caso contrario, el kernel no reconoce la tecla y por tanto no la podemos usar.
Para asignar un "raw scancode" a un "keycode" se usa el comando
El valor de "keycode" no puede ser un valor cualquiera. Tiene que estar entre el máximo valor de "keycode" de nuestro esquema de teclado y 127. En mi caso, uso el esquema de teclado español, cuya definición está en el archivo /usr/share/keymaps/i386/qwerty/es.map.gz. Mirando dicho archivo se aprecia que el último "keycode" usado es el 97.
Los cambios hechos con setkeycodes se pierden al apagar el equipo. Para evitarlo, podemos poner los comandos en /etc/conf.d/local.start
Una vez que todas las tecla que queremos usar tengan un "keycode" asignado podemos
-asignarles un comando (usando el programa xbindkeys )
-asignarles una tecla o combinación de teclas (usando el programa xvkbd invocado desde xbindkeys )
Crear el fichero ~/.xbindkeysr y asegúrate que el script de inicio de tu gestor de ventanas u escritorio ejecuta xbindkeys.
Este es mi ~/.xbindkeys
#El botón 6 del ratón cambia de aplicación (Alt+Tab)
"xvkbd -text "\[Alt_L]\[Tab]""
b:6
#El botón 7 del ratón cierra la aplicación (Alt+F4)
"xvkbd -text "\[Alt_L]\[F4]""
b:7
#El botón 8 del ratón lanza la calculadora
"kcalc"
b:8
#El botón 9 del ratón lanza el editor de texto
"kate -u"
b:9
#La tecla con keycode 160 silencia la tarjeta de sonido (Mute) ('amixer set Master mute' no me funciona)
"amixer -q set Master 0"
m:0x10 + c:160
#La tecla con keycode 174 baja el volumen
"amixer -q set Master 2-"
m:0x10 + c:174
#La tecla con keycode 176 sube el volumen
"amixer -q set Master 2+"
m:0x10 + c:176
#La tecla con keycode 162 reproduce/pausa en Amarok/Kaffeine
"dcop amarok player playPause ; dcop kaffeine KaffeineIface pause"
m:0x10 + c:162
#La tecla con keycode 144 retrocede una pista en Amarok/Kaffeine
"dcop amarok player prev ; dcop kaffeine KaffeineIface prev"
m:0x10 + c:144
#La tecla con keycode 153 avanza una pista en Amarok/Kaffeine
"dcop amarok player next ; dcop kaffeine KaffeineIface next"
m:0x10 + c:153
#La tecla con keycode 164 detiene la reproducción en Amarok/Kaffeine
"dcop amarok player stop ; dcop kaffeine KaffeineIface stop"
m:0x10 + c:164Runleveles
acpid | battery default
alsasound | boot
bootmisc | boot
checkfs | boot
checkroot | boot
clock | boot
consolefont | boot
hald | battery default
hibernate-cleanup | boot
hostname | boot
keymaps | boot
laptop_mode | battery
lcd4linux | default
local | battery default nonetwork
localmount | boot
modules | boot
net.lo | boot
rmnologin | boot
syslog-ng | default
urandom | boot
vixie-cron | default
xdm | battery default| Adjunto | Tamaño |
|---|---|
| xorg.conf | 5.67 KB |
| linux-2.6.26.config | 45.55 KB |
