SynPS/2 Synaptics TouchPad es que tengo instalado. Para que lo detecte bien las xorg, nos bajamos el paquete Synaptics.
Desempaquetamos, make y copiamos synaptics_drv.so a /usr/xorg/lib/X11/modules/input
Ahora lo configuramos /etc/X11/xorg.conf:
Section "ServerLayout"
...
InputDevice "Synaptics Mouse" "AlwaysCore"
...
EndSection
Section "Module"
...
Load "synaptics"
...
EndSection
Section "InputDevice"
Identifier "Synaptics Mouse"
Driver "synaptics"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection
Además del driver se han creado dos ejecutables, synclient y syndaemon. Con syndaemon podemos deshabilitar el touchpad cuando estamos escribiendo: syndaemon -i 1 -d.
sábado, diciembre 16, 2006
viernes, diciembre 15, 2006
USB
Nos vamos al kernel:
Device Drivers -> SCSI device support ->
<M> SCSI device support
[*] legacy /proc/scsi/ support
<M> SCSI disk support
Device Drivers -> USB support ->
<M> Support for Host-side USB
[ ] USB verbose debug messages
[*] USB device filesystem
<M> EHCI HCD (USB 2.0) support
<M> UHCI HCD (most Intel and VIA) support
<M> USB Mass Storage support
[ ] USB Mass Storage verbose debug
[*] Datafab Compact Flash Reader support (EXPERIMENTAL)
[*] Freecom USB/ATAPI Bridge support
[*] ISD-200 USB/ATA Bridge support
[*] Microtech/ZiO! CompactFlash/SmartMedia support
[*] USBAT/USBAT02-based storage support (EXPERIMENTAL)
[*] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[*] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
[*] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
[*] Olympus MAUSB-10/Fuji DPC-R1 support (EXPERIMENTAL)
[ ] The shared table of common (or usual) storage devices
<M> USB Human Interface Device (full HID) support
[*] HID input layer support
Ahora vamos cargando los módulos principales: usbcore, uhci_hcd
Para pen drive necesitamos cargar, usb_storage, scsi_mod y sd_mod, la enganchar el pen drive se reará un dispositivo scsi, que puede ser sda, sdb. Para verlo dmesg.
Ya sólo falta montar el dispositivo: mount /dev/sda1 /mnt/pendriver
NOTA: Los pendriver normalmente están con un sistema de fichero FAT.
Device Drivers -> SCSI device support ->
<M> SCSI device support
[*] legacy /proc/scsi/ support
<M> SCSI disk support
Device Drivers -> USB support ->
<M> Support for Host-side USB
[ ] USB verbose debug messages
[*] USB device filesystem
<M> EHCI HCD (USB 2.0) support
<M> UHCI HCD (most Intel and VIA) support
<M> USB Mass Storage support
[ ] USB Mass Storage verbose debug
[*] Datafab Compact Flash Reader support (EXPERIMENTAL)
[*] Freecom USB/ATAPI Bridge support
[*] ISD-200 USB/ATA Bridge support
[*] Microtech/ZiO! CompactFlash/SmartMedia support
[*] USBAT/USBAT02-based storage support (EXPERIMENTAL)
[*] SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[*] SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)
[*] Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)
[*] Olympus MAUSB-10/Fuji DPC-R1 support (EXPERIMENTAL)
[ ] The shared table of common (or usual) storage devices
<M> USB Human Interface Device (full HID) support
[*] HID input layer support
Ahora vamos cargando los módulos principales: usbcore, uhci_hcd
Para pen drive necesitamos cargar, usb_storage, scsi_mod y sd_mod, la enganchar el pen drive se reará un dispositivo scsi, que puede ser sda, sdb. Para verlo dmesg.
Ya sólo falta montar el dispositivo: mount /dev/sda1 /mnt/pendriver
NOTA: Los pendriver normalmente están con un sistema de fichero FAT.
jueves, diciembre 14, 2006
AIGLX + beryl
Vamos a instalar beryl un gestor de ventana OpenGL. Para ello nos bajamos los fuentes beryl, nos bajamos todos los ficheros svn:
svn co svn://svn.beryl-project.org/beryl/trunk beryl/
* beryl-core-svn, tiene dependencias de startup-notification, libxcomposite, libxdamage, libgl, libpng, glib2, gconf. Libxcomposite y Libxdamage ya está instalados con el xorg. Es importante que esten los fuentes de beryl-mesa en el directorio ../beryl-mesa.
* beryl-plugins-svn, depende librsvg, aquí realmente no obliga a instalar GTK2
* beryl-manager-svn, depende GTK2.
* beryl-dbus-svn, depende dbus.
* beryl-settings-svn, depende GTK2.
* emerald-svn, depende libwnck.
* emerald-themes-svn.
Con esto ya tendríamos el systema montado, si queremos una integración con kde instalaramos aquamarine-svn, si es con gnome heliodor-svn
Para compilar tenemos que hacer hacerlo por orden (ver arriba) y... ./autogen.sh --prefix=/usr/local/beryl-svn
Como no tengo instalado las dependencias en /usr, sino directorios diferentes tengo que decirselo a la utilidad aclocal:
export ACLOCAL="aclocal -I /usr/local/pkgconfig/share/aclocal -I /usr/local/gtk2/share/aclocal -I /usr/local/gnome/share/aclocal"
Una vez terminado de compilar modificamos el .xinitrc:
export PATH=$PATH:/usr/local/beryl-svn/bin:/usr/local/gnome/bin:/usr/local/gtk2/bin
emerald &
beryl-manager &
beryl --indirect-rendering --strict-binding dbus settings &
xterm
Para integrarlo con xfce:
xrdb $HOME/.Xresources
# start beryl and beryl-manager
emerald &
beryl --indirect-rendering --strict-binding &
beryl-manager &
startxfce4
svn co svn://svn.beryl-project.org/beryl/trunk beryl/
* beryl-core-svn, tiene dependencias de startup-notification, libxcomposite, libxdamage, libgl, libpng, glib2, gconf. Libxcomposite y Libxdamage ya está instalados con el xorg. Es importante que esten los fuentes de beryl-mesa en el directorio ../beryl-mesa.
* beryl-plugins-svn, depende librsvg, aquí realmente no obliga a instalar GTK2
* beryl-manager-svn, depende GTK2.
* beryl-dbus-svn, depende dbus.
* beryl-settings-svn, depende GTK2.
* emerald-svn, depende libwnck.
* emerald-themes-svn.
Con esto ya tendríamos el systema montado, si queremos una integración con kde instalaramos aquamarine-svn, si es con gnome heliodor-svn
Para compilar tenemos que hacer hacerlo por orden (ver arriba) y... ./autogen.sh --prefix=/usr/local/beryl-svn
Como no tengo instalado las dependencias en /usr, sino directorios diferentes tengo que decirselo a la utilidad aclocal:
export ACLOCAL="aclocal -I /usr/local/pkgconfig/share/aclocal -I /usr/local/gtk2/share/aclocal -I /usr/local/gnome/share/aclocal"
Una vez terminado de compilar modificamos el .xinitrc:
export PATH=$PATH:/usr/local/beryl-svn/bin:/usr/local/gnome/bin:/usr/local/gtk2/bin
emerald &
beryl-manager &
beryl --indirect-rendering --strict-binding dbus settings &
xterm
Para integrarlo con xfce:
xrdb $HOME/.Xresources
# start beryl and beryl-manager
emerald &
beryl --indirect-rendering --strict-binding &
beryl-manager &
startxfce4
miércoles, diciembre 13, 2006
módulo ipw2200
El siguiente paso es hacer funcionar el USB, concretamente un pen driver (genérico), un mp3 (creative) y el ratón usb.
Como voy a estar compilado continuamente el kernel y no quiero estar instalando el módulo de la tarjeta wireless, muevo el directorio wireless de /lib/modules/2.6.18.3/kernel/driver/net a /lib/modules/2.6.18.3/net
Como voy a estar compilado continuamente el kernel y no quiero estar instalando el módulo de la tarjeta wireless, muevo el directorio wireless de /lib/modules/2.6.18.3/kernel/driver/net a /lib/modules/2.6.18.3/net
lunes, diciembre 11, 2006
X Window: DRI
Compilamos los módulos del kernel:
Device Drivers -> Character devices ->
<*> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<M> Intel 830M, 845G, 852GM, 855GM, 865G
<M> i915 driver
En /etc/X11/xorg.conf añadimos en la sección "Device": Option "DRI" "True", en "Module": Load "dri", y añadimos la sección
Section "DRI"
Group "video"
Mode 0660
EndSection
Device Drivers -> Character devices ->
<*> /dev/agpgart (AGP Support)
<M> Intel 440LX/BX/GX, I8xx and E7x05 chipset support
<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<M> Intel 830M, 845G, 852GM, 855GM, 865G
<M> i915 driver
En /etc/X11/xorg.conf añadimos en la sección "Device": Option "DRI" "True", en "Module": Load "dri", y añadimos la sección
Section "DRI"
Group "video"
Mode 0660
EndSection
X Window
Ya tengo todo instalado para xorg 7.1, sólo me falta los drivers. Me bajo todos y iré compiladon uno a uno lo que necesite.
El touchpad es:
Synaptics Touchpad, model: 1, fw: 5.9, id: 0x256eb1, caps: 0x804713/0x0
input: SynPS/2 Synaptics TouchPad as /class/input/input1
Input: keyboard, mouse (para el touchpad).
Video: Para nuestra Intel Corporation 82852/855GM Integrated Graphics Device el driver es i810.
Section "Device"
Identifier "Card0"
Driver "i810"
VendorName "Intel Corporation"
BoardName "82852/855GM Integrated Graphics Device"
EndSection
Ok, startx y funciona. El touchpad funciona pero habrá que instalar un driver más especifico.
Pero tenemos un problema direct rendering está Disabled, intentaremos solucionarlo.
El touchpad es:
Synaptics Touchpad, model: 1, fw: 5.9, id: 0x256eb1, caps: 0x804713/0x0
input: SynPS/2 Synaptics TouchPad as /class/input/input1
Input: keyboard, mouse (para el touchpad).
Video: Para nuestra Intel Corporation 82852/855GM Integrated Graphics Device el driver es i810.
Section "Device"
Identifier "Card0"
Driver "i810"
VendorName "Intel Corporation"
BoardName "82852/855GM Integrated Graphics Device"
EndSection
Ok, startx y funciona. El touchpad funciona pero habrá que instalar un driver más especifico.
Pero tenemos un problema direct rendering está Disabled, intentaremos solucionarlo.
sábado, diciembre 09, 2006
Administración de la energía IV: Suspensión II
Ok, ya lo he conseguido...
echo 524288000 > /sys/power/image_size
/usr/local/vbetool/sbin/vbetool vbestate save > /delme
sync ; echo -n platform > /sys/power/disk; echo -n mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool vbetool post
/usr/local/vbetool/sbin/vbetool vbestate restore < /delme
rm /delme
/etc/rc.d/init.d/console start
Puede que necesites pulsar alguna tecla porque habrá saltado el protector de pantalla.
echo 524288000 > /sys/power/image_size
/usr/local/vbetool/sbin/vbetool vbestate save > /delme
sync ; echo -n platform > /sys/power/disk; echo -n mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool vbetool post
/usr/local/vbetool/sbin/vbetool vbestate restore < /delme
rm /delme
/etc/rc.d/init.d/console start
Puede que necesites pulsar alguna tecla porque habrá saltado el protector de pantalla.
viernes, diciembre 08, 2006
RAMDISK
Para hacer más rápidas la compilaciones vamos a realizar un ramdisk, que no es otra cosa que un disco virtual en memoria.
Activamos la opción del kernel Device Drivers -> Block devices -> <M> RAM disk support
Como voy a utilizar ext2 para el ramdisk, la reiserfs utiliza 33 Mb para empezar: File systems -> <M> Second extended fs support
Ahora cargarmos el módulo, como quiero más de 4 Mb pongo la opción rd_size=100000, es decir, unos 100 Mb: modprobe rd rd_size=100000, y el módulo ext2.
Ahora tengo que formatear la "disco" voy a formatearlo en ext2, , mke2fs /dev/ram0, luego lo monto mount /dev/ram0 sources -t ext2
Activamos la opción del kernel Device Drivers -> Block devices -> <M> RAM disk support
Como voy a utilizar ext2 para el ramdisk, la reiserfs utiliza 33 Mb para empezar: File systems -> <M> Second extended fs support
Ahora cargarmos el módulo, como quiero más de 4 Mb pongo la opción rd_size=100000, es decir, unos 100 Mb: modprobe rd rd_size=100000, y el módulo ext2.
Ahora tengo que formatear la "disco" voy a formatearlo en ext2, , mke2fs /dev/ram0, luego lo monto mount /dev/ram0 sources -t ext2
Y ahora el sonido...
Volvamos a las fuentes del kernel...
Device Drivers->
Sound ->
<M> Sound card support
Advanced Linux Sound Architecture ->
<M> Advanced Linux Sound Architecture
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API - Include plugin system
<M> RTC Timer support
[*] Support old ALSA API
[*] Verbose procfs contents
[*] Verbose printk
PCI devices --->
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
Compilamos, instalamos los módulos (hay que volver a reinstalar los driver de la wifi) y ahora a cargar el módulo snd_intel8x0 vemos la salida de dmesg
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
PCI: Setting latency timer of device 0000:00:1f.5 to 64
intel8x0_measure_ac97_clock: measured 59491 usecs
intel8x0: clocking to 48000
Para tener compatibilidad OSS cargamos los módulos snd-mixer-oss y snd-pcm-oss
Sólo nos queda instalar ALSA para probar el sonido...
Device Drivers->
Sound ->
<M> Sound card support
Advanced Linux Sound Architecture ->
<M> Advanced Linux Sound Architecture
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API - Include plugin system
<M> RTC Timer support
[*] Support old ALSA API
[*] Verbose procfs contents
[*] Verbose printk
PCI devices --->
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
Compilamos, instalamos los módulos (hay que volver a reinstalar los driver de la wifi) y ahora a cargar el módulo snd_intel8x0 vemos la salida de dmesg
ACPI: PCI Interrupt 0000:00:1f.5[B] -> Link [LNKB] -> GSI 5 (level, low) -> IRQ 5
PCI: Setting latency timer of device 0000:00:1f.5 to 64
intel8x0_measure_ac97_clock: measured 59491 usecs
intel8x0: clocking to 48000
Para tener compatibilidad OSS cargamos los módulos snd-mixer-oss y snd-pcm-oss
Sólo nos queda instalar ALSA para probar el sonido...
Seguimos con el ahorro: El disco duro
Para activar el ahorro de energia en el disco necesitamos hdparm:
make
make binprefix=/usr/local/ manprefix=/usr/local/ install
Probemos hdparm -I /dev/hda
/dev/hda:
ATA device, with non-removable media
Model Number: FUJITSU MHV2040AT
Serial Number: NS9CT5925NAG
Firmware Revision: 00000096
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 3a
Supported: 6 5 4
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 78140160
device size with M = 1024*1024: 38154 MBytes
device size with M = 1000*1000: 40007 MBytes (40 GB)
Capabilities:
LBA, IORDY(cannot be disabled)
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = ?
Advanced power management level: 128 (0x80)
Recommended acoustic management value: 254, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_MAX security extension
* Automatic Acoustic Management feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* SMART error logging
* SMART self-test
* IDLE_IMMEDIATE with UNLOAD
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
40min for SECURITY ERASE UNIT.
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct
Y ahora hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1412 MB in 2.00 seconds = 706.00 MB/sec
Timing buffered disk reads: 80 MB in 3.02 seconds = 26.53 MB/sec
Aplicamos hdparm -d1 -c3 -m16 -M128 /dev/hda
Volvemos hacer hdparm -Tt /dev/hda
Timing cached reads: 1484 MB in 2.00 seconds = 741.98 MB/sec
Timing buffered disk reads: 80 MB in 3.01 seconds = 26.56 MB/sec
Realmente no se nota el cambio. Pero el hdparm nos sistema para suspender el disco duro con la opción -Sn, donde n * 5 de segundos de inactividad para suspender el disco.
make
make binprefix=/usr/local/ manprefix=/usr/local/ install
Probemos hdparm -I /dev/hda
/dev/hda:
ATA device, with non-removable media
Model Number: FUJITSU MHV2040AT
Serial Number: NS9CT5925NAG
Firmware Revision: 00000096
Standards:
Used: ATA/ATAPI-6 T13 1410D revision 3a
Supported: 6 5 4
Configuration:
Logical max current
cylinders 16383 16383
heads 16 16
sectors/track 63 63
--
CHS current addressable sectors: 16514064
LBA user addressable sectors: 78140160
device size with M = 1024*1024: 38154 MBytes
device size with M = 1000*1000: 40007 MBytes (40 GB)
Capabilities:
LBA, IORDY(cannot be disabled)
Standby timer values: spec'd by Standard, no device specific minimum
R/W multiple sector transfer: Max = 16 Current = ?
Advanced power management level: 128 (0x80)
Recommended acoustic management value: 254, current value: 254
DMA: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 udma4 *udma5
Cycle time: min=120ns recommended=120ns
PIO: pio0 pio1 pio2 pio3 pio4
Cycle time: no flow control=240ns IORDY flow control=120ns
Commands/features:
Enabled Supported:
* SMART feature set
Security Mode feature set
* Power Management feature set
* Write cache
* Look-ahead
* Host Protected Area feature set
* WRITE_BUFFER command
* READ_BUFFER command
* DOWNLOAD_MICROCODE
* Advanced Power Management feature set
Power-Up In Standby feature set
* SET_MAX security extension
* Automatic Acoustic Management feature set
* Device Configuration Overlay feature set
* Mandatory FLUSH_CACHE
* SMART error logging
* SMART self-test
* IDLE_IMMEDIATE with UNLOAD
* SMART Command Transport (SCT) feature set
* SCT LBA Segment Access (AC2)
* SCT Error Recovery Control (AC3)
* SCT Features Control (AC4)
* SCT Data Tables (AC5)
Security:
Master password revision code = 65534
supported
not enabled
not locked
frozen
not expired: security count
not supported: enhanced erase
40min for SECURITY ERASE UNIT.
HW reset results:
CBLID- above Vih
Device num = 0 determined by the jumper
Checksum: correct
Y ahora hdparm -Tt /dev/hda
/dev/hda:
Timing cached reads: 1412 MB in 2.00 seconds = 706.00 MB/sec
Timing buffered disk reads: 80 MB in 3.02 seconds = 26.53 MB/sec
Aplicamos hdparm -d1 -c3 -m16 -M128 /dev/hda
Volvemos hacer hdparm -Tt /dev/hda
Timing cached reads: 1484 MB in 2.00 seconds = 741.98 MB/sec
Timing buffered disk reads: 80 MB in 3.01 seconds = 26.56 MB/sec
Realmente no se nota el cambio. Pero el hdparm nos sistema para suspender el disco duro con la opción -Sn, donde n * 5 de segundos de inactividad para suspender el disco.
Administración de la energía IV: Suspensión
Para suspender:
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
El Q25 suspender se suspender, pero al despertarlo no se enviende la pantalla. Buscado por he encontrado una utilizadad vbetool que permite encender y apagar la pantalla.
Para compilar vbetool necesitamos las PCI Utils:
sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh
make PREFIX=/usr/local/pciutils
make PREFIX=/usr/local/pciutils install
install -v -m 755 -d /usr/local/pciutils/include/pci
install -v -m 755 -d /usr/local/pciutils/lib
install -v -m 644 lib/libpci.a /usr/local/pciutils/lib
install -v -m 644 lib/*.h /usr/local/pciutils/include/pci
Para el update-pciids.sh, que actuliza la base de datos de lspci, necesitamos wget (ya lo tenemos) y which:
cat > /usr/local/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/local/bin/which
chown -v root:root /usr/local/bin/which
Actualizamos la base de datos: /usr/local/pciutils/sbin/update-pciids
Ahora instalamos vbetool:
./configure --prefix=/usr/local/vbetool
Editamos el Makefile: y en CPPFLAGS añadimos -I/usr/local/pciutils/include y buscamos todos lo sitios donde ponga $(libdir)/libpci.a lo reemplazamos por /usr/local/pciutils/lib/libpci.a
make
make install
Probamos...
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool dpms on
Pero no funciona :-(
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
El Q25 suspender se suspender, pero al despertarlo no se enviende la pantalla. Buscado por he encontrado una utilizadad vbetool que permite encender y apagar la pantalla.
Para compilar vbetool necesitamos las PCI Utils:
sed -i 's/null ;/null 2>\&1 ;/' update-pciids.sh
make PREFIX=/usr/local/pciutils
make PREFIX=/usr/local/pciutils install
install -v -m 755 -d /usr/local/pciutils/include/pci
install -v -m 755 -d /usr/local/pciutils/lib
install -v -m 644 lib/libpci.a /usr/local/pciutils/lib
install -v -m 644 lib/*.h /usr/local/pciutils/include/pci
Para el update-pciids.sh, que actuliza la base de datos de lspci, necesitamos wget (ya lo tenemos) y which:
cat > /usr/local/bin/which << "EOF"
#!/bin/bash
type -pa "$@" | head -n 1 ; exit ${PIPESTATUS[0]}
EOF
chmod -v 755 /usr/local/bin/which
chown -v root:root /usr/local/bin/which
Actualizamos la base de datos: /usr/local/pciutils/sbin/update-pciids
Ahora instalamos vbetool:
./configure --prefix=/usr/local/vbetool
Editamos el Makefile: y en CPPFLAGS añadimos -I/usr/local/pciutils/include y buscamos todos lo sitios donde ponga $(libdir)/libpci.a lo reemplazamos por /usr/local/pciutils/lib/libpci.a
make
make install
Probamos...
sync ; echo platform > /sys/power/disk; echo mem > /sys/power/state
/usr/local/vbetool/sbin/vbetool dpms on
Pero no funciona :-(
Administración de la energía IV: Hibernación
Para hibernar el Q25 hay que hacer:
#Amplio la imagen a mis 1,25 Gbytes: (1024 + 256) * 1024 * 1024
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
Para que al arrancar vaya al swap para recuperar, editar /boot/grub/menu.lst y en la opciones kernel añadir resume=/dev/hda3 (mi partición swap). Así es como quedaría:
kernel (hd0,1)/boot/bzImage-2.6.18.3 root=/dev/hda2 ro resume=/dev/hda3
Al volver la consola no recupera el tipo de letra correcto, para recupelarla: /etc/rc.d/init.d/console start.
Para que todo se automático creo el script:
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
/etc/rc.d/init.d/console start
El comando sync vacía los buffers del disco.
#Amplio la imagen a mis 1,25 Gbytes: (1024 + 256) * 1024 * 1024
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
Para que al arrancar vaya al swap para recuperar, editar /boot/grub/menu.lst y en la opciones kernel añadir resume=/dev/hda3 (mi partición swap). Así es como quedaría:
kernel (hd0,1)/boot/bzImage-2.6.18.3 root=/dev/hda2 ro resume=/dev/hda3
Al volver la consola no recupera el tipo de letra correcto, para recupelarla: /etc/rc.d/init.d/console start.
Para que todo se automático creo el script:
echo 1342177280 > /sys/power/image_size
sync ; echo platform > /sys/power/disk; echo disk > /sys/power/state
/etc/rc.d/init.d/console start
El comando sync vacía los buffers del disco.
jueves, diciembre 07, 2006
Administración de la energía III: ACPI
Ya hemos visto el módulo processor.
ac:
al cargar el módulo ac crea un fichero /proc/acpi/ac_adapter/ADP1/state indicando si está conectado a la red eléctrica (on-line) o no (off-line)
thermal:
Crea el directorio /proc/acpi/thermal_zone/THRM con información sobre la temperatura del Q25. El fichero más interesante es temperature que nos indica la temperatura del cpu.
fan:
Crea el fichero /proc/acpi/fan/FAN0/fan, el estado del ventilador.
dock:
Según la documentación del kernel añade soporte para ACPI controle las dock stations.
button:
crea en /proc/acpi/button los directorios lid/* power/* sleep/*. /proc/acpi/button/lid/LID0/state nos indica si está levantada la tapa o no del Q25.
battery:
Crea /proc/acpi/battery/BAT1 con información de la bateria y consumo. El fichero info nos da información de la bateria y state con el estado cargando/descargando, consumo en eso momento y energia almacenada.
ac:
al cargar el módulo ac crea un fichero /proc/acpi/ac_adapter/ADP1/state indicando si está conectado a la red eléctrica (on-line) o no (off-line)
thermal:
Crea el directorio /proc/acpi/thermal_zone/THRM con información sobre la temperatura del Q25. El fichero más interesante es temperature que nos indica la temperatura del cpu.
fan:
Crea el fichero /proc/acpi/fan/FAN0/fan, el estado del ventilador.
dock:
Según la documentación del kernel añade soporte para ACPI controle las dock stations.
button:
crea en /proc/acpi/button los directorios lid/* power/* sleep/*. /proc/acpi/button/lid/LID0/state nos indica si está levantada la tapa o no del Q25.
battery:
Crea /proc/acpi/battery/BAT1 con información de la bateria y consumo. El fichero info nos da información de la bateria y state con el estado cargando/descargando, consumo en eso momento y energia almacenada.
Administración de la energía II: Frecuencia del procesador
Vemos a que velocidad corre nuestro procesador:
cat /proc/cpuinfo
cpu MHz : 1594.910
modprobe speedstep-centrino
Esto carga los módulos speedstep_centrino, freq_table, processor
dmesg:
Time: acpi_pm clocksource has been installed.
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 2 throttling states)
Y crea el directorio /sys/devices/system/cpu/cpu0/cpufreq. En este directorio hay varios ficheros que nos sirve para dar órdenes y obtener información. El que nos interesa es scaling_governor, es aquí donde vamos a decirle cual va a ser la política de frecuencia del procesador. Por defecto hemos decidido que sea performance, que significa que el procesador irá a 1,6 Ghz. Tenemos 4 políticas:
a) performance. Mayor frecuencia de procesador siempre. 1,6 Ghz
b) powersave. Menor frecuencia de procesador siempre. 600 Mhz
c) userscape. La frecuencia que queramos dentro del rango: cat scaling_available_frequencies
d) ondemand. Según la demanda.
e) conservate. Según la demanda pero enfocado al ahorro.
Las politicas que podemos utilizar están en el fichero scaling_available_governors. Por defecto sólo está performance. Yo utilizo conservate, así pues, modprobe cpufreq_conservative y lo activo: echo -n conservative > scaling_governor
Volvemos hacer cat /proc/cpuinfo
cpu MHz : 600.000
A mayor frecuencia mayor consumo y mayor calor disipado
Lamentablemente no se puede poner por defecto la política conservative, así pues habrá que hacer un guión de arranque que lo haga.
cat /proc/cpuinfo
cpu MHz : 1594.910
modprobe speedstep-centrino
Esto carga los módulos speedstep_centrino, freq_table, processor
dmesg:
Time: acpi_pm clocksource has been installed.
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 2 throttling states)
Y crea el directorio /sys/devices/system/cpu/cpu0/cpufreq. En este directorio hay varios ficheros que nos sirve para dar órdenes y obtener información. El que nos interesa es scaling_governor, es aquí donde vamos a decirle cual va a ser la política de frecuencia del procesador. Por defecto hemos decidido que sea performance, que significa que el procesador irá a 1,6 Ghz. Tenemos 4 políticas:
a) performance. Mayor frecuencia de procesador siempre. 1,6 Ghz
b) powersave. Menor frecuencia de procesador siempre. 600 Mhz
c) userscape. La frecuencia que queramos dentro del rango: cat scaling_available_frequencies
d) ondemand. Según la demanda.
e) conservate. Según la demanda pero enfocado al ahorro.
Las politicas que podemos utilizar están en el fichero scaling_available_governors. Por defecto sólo está performance. Yo utilizo conservate, así pues, modprobe cpufreq_conservative y lo activo: echo -n conservative > scaling_governor
Volvemos hacer cat /proc/cpuinfo
cpu MHz : 600.000
A mayor frecuencia mayor consumo y mayor calor disipado
Lamentablemente no se puede poner por defecto la política conservative, así pues habrá que hacer un guión de arranque que lo haga.
Administración de la energía I
Con las opciones de kernel de administración de la energía nos permite ver el consumo el Q25, cuanta batería queda, modificar la frecuencia de procesador, suspensión e hibernación, y demás opciones de ahorro de la energía.
Hibernación:
Power management options (ACPI, APM) ->
[*] Power Management support
[*] Software Suspend
(/dev/hda3) Default resume partition
/dev/hda3 es mi partición swap, esta debe ser el doble, al menos, de la memoria RAM que tenga el Q25. Yo tengo 1,25 G y una swap de 3 G
ACPI:
Power management options (ACPI, APM) ->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support ->
[*] ACPI Support
[*] Sleep States (NEW)
<M> AC Adapter
<M> Battery
<M> Button
<M> Generic Hotkey
<M> Fan
<M> Dock
<M> Processor
<M> Thermal Zone (NEW)
Frecuencia del procesador:
Power management options (ACPI, APM) ->
[*] Power Management support
CPU Frequency scaling --->
[*] CPU Frequency scaling
<M> CPU frequency translation statistics
[*] CPU frequency translation statistics details
Default CPUFreq governor (performance) --->
--- 'performance' governor
<M> 'powersave' governor
<M> 'userspace' governor for userspace frequency scaling
<M> 'ondemand' cpufreq policy governor
<M> 'conservative' cpufreq governor
<M> Intel Enhanced SpeedStep
[*] Use ACPI tables to decode valid frequency/voltage pairs (NEW)
[*] Built-in tables for Banias CPUs (NEW)
Ok, salimos guardamos y compilar...
Lo instalamos los módulos. Esto hace que perdamos el driver de la tarjeta wifi, lo cual entramos en las fuentes del driver y... make install
Hibernación:
Power management options (ACPI, APM) ->
[*] Power Management support
[*] Software Suspend
(/dev/hda3) Default resume partition
/dev/hda3 es mi partición swap, esta debe ser el doble, al menos, de la memoria RAM que tenga el Q25. Yo tengo 1,25 G y una swap de 3 G
ACPI:
Power management options (ACPI, APM) ->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support ->
[*] ACPI Support
[*] Sleep States (NEW)
<M> AC Adapter
<M> Battery
<M> Button
<M> Generic Hotkey
<M> Fan
<M> Dock
<M> Processor
<M> Thermal Zone (NEW)
Frecuencia del procesador:
Power management options (ACPI, APM) ->
[*] Power Management support
CPU Frequency scaling --->
[*] CPU Frequency scaling
<M> CPU frequency translation statistics
[*] CPU frequency translation statistics details
Default CPUFreq governor (performance) --->
--- 'performance' governor
<M> 'powersave' governor
<M> 'userspace' governor for userspace frequency scaling
<M> 'ondemand' cpufreq policy governor
<M> 'conservative' cpufreq governor
<M> Intel Enhanced SpeedStep
[*] Use ACPI tables to decode valid frequency/voltage pairs (NEW)
[*] Built-in tables for Banias CPUs (NEW)
Ok, salimos guardamos y compilar...
Lo instalamos los módulos. Esto hace que perdamos el driver de la tarjeta wifi, lo cual entramos en las fuentes del driver y... make install
miércoles, diciembre 06, 2006
wifi con WEP
Configuramos nuestro router wifi con encriptación wep y le ponemos una clave.
Ponemos el essid y channel con en el caso anterior y añadir la opción key:
iwconfig eth1 essid TOLETUM channel 11 key restricted key s:CLAVE
Vemos si hemos conectado iwconfig eth1 tiene que tener puesto el "Access Point" la MAC del router.
Y levantamos el interfaz.
Ponemos el essid y channel con en el caso anterior y añadir la opción key:
iwconfig eth1 essid TOLETUM channel 11 key restricted key s:CLAVE
Vemos si hemos conectado iwconfig eth1 tiene que tener puesto el "Access Point" la MAC del router.
Y levantamos el interfaz.
martes, diciembre 05, 2006
wifi con dhcpcd
Primero instalamos la paquete Dhcpcd-2.0.8.
tar xf dhcpcd-2.0.8.tar.bz2
cd dhcpcd-2.0.8
./configure --prefix="/usr/local/dhcp"
make
make install
Luego en /etc/sysconfig/network-devices/services creamos el fichero dhcpcd:
# Based upon lfs-bootscripts-1.12 $network_devices/if{down,up}
# Rewritten by Nathan Coulson
# Adapted for dhcpcd by DJ Lucas
#$LastChangedBy: dnicholson $
#$Date: 2006-10-01 13:07:56 -0500 (Sun, 01 Oct 2006) $
. /etc/sysconfig/rc
. $rc_functions
. $IFCONFIG
DAEMON="/usr/local/dhcp/sbin/dhcpcd"
PIDFILE="/var/run/dhcpcd-$1.pid"
LEASEINFO="/var/lib/dhcpc/dhcpcd-$1.info"
case "$2" in
up)
boot_mesg -n "Starting dhcpcd on the $1 interface..."
# Test to see if there is a stale pid file
if [ -f "$PIDFILE" ]
then
ps `cat "$PIDFILE"` | grep dhcpcd > /dev/null
if [ $? != 0 ]
then
rm -f /var/run/dhcpcd-$1.pid > /dev/null
else
boot_mesg "dhcpcd already running!" ${WARNING}
echo_warning
exit 2
fi
fi
$DAEMON $1 $DHCP_START
# Save the return value
RET="$?"
# Print the assigned settings if requested
if [ "$RET" = "0" -a "$PRINTIP" = "yes" ]; then
. /var/lib/dhcpc/dhcpcd-$1.info
if [ "$PRINTALL" = "yes" ]; then
echo ""
echo_ok
boot_mesg " DHCP Assigned Settings for $1:"
boot_mesg_flush
boot_mesg " IP Address: $IPADDR"
boot_mesg_flush
boot_mesg " Subnet Mask: $NETMASK"
boot_mesg_flush
boot_mesg " Default Gateway: $GATEWAY"
boot_mesg_flush
boot_mesg " DNS Server: $DNS"
boot_mesg_flush
else
boot_mesg " IP Addresss: ""$IPADDR"
echo_ok
fi
else
echo ""
$(exit "$RET")
evaluate_retval
fi
;;
down)
boot_mesg -n "Stopping dhcpcd on the $1 interface..."
# Do nothing with the client daemon if we have an infinate
# lease time as the client exits when started in this case,
# just echo OK.
if [ -e $LEASEINFO ]
then
. $LEASEINFO
if [ "$LEASETIME" = "4294967295" ]
then
# do nothing, just echo ok
echo ""
echo_ok
else
if [ -n "$DHCP_STOP" ]
then
$DAEMON $1 $DHCP_STOP &> /dev/null
RET="$?"
if [ "$RET" -eq 0 ]; then
echo ""
echo_ok
elif [ "$RET" -eq 1 ]; then
boot_mesg "dhcpcd not running!" ${WARNING}
echo_warning
else
echo ""
echo_failure
fi
else
echo ""
killproc dhcpcd
fi
fi
else
boot_mesg -n "LEASEINFO Test failed! - " ${WARNING}
boot_mesg "dhcpcd is not running!" ${WARNING}
echo_warning
exit 1
fi
;;
*)
echo "Usage: $0 [interface] {up|down}"
exit 1
;;
esac
# End $network_devices/services/dhcpcd
chmod 755 dhcpcd
Luego en /etc/sysconfig/network-devices/ifconfig.eth1 (nuestra interfaz wifi) creamos el fichero dhcpcd:
ONBOOT="no"
SERVICE="dhcpcd"
DHCP_START=""
DHCP_STOP="-k"
# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="yes"
# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="yes"
y levantamos el interfaz: /etc/sysconfig/network-devices/ifup eth1
tar xf dhcpcd-2.0.8.tar.bz2
cd dhcpcd-2.0.8
./configure --prefix="/usr/local/dhcp"
make
make install
Luego en /etc/sysconfig/network-devices/services creamos el fichero dhcpcd:
# Based upon lfs-bootscripts-1.12 $network_devices/if{down,up}
# Rewritten by Nathan Coulson
# Adapted for dhcpcd by DJ Lucas
#$LastChangedBy: dnicholson $
#$Date: 2006-10-01 13:07:56 -0500 (Sun, 01 Oct 2006) $
. /etc/sysconfig/rc
. $rc_functions
. $IFCONFIG
DAEMON="/usr/local/dhcp/sbin/dhcpcd"
PIDFILE="/var/run/dhcpcd-$1.pid"
LEASEINFO="/var/lib/dhcpc/dhcpcd-$1.info"
case "$2" in
up)
boot_mesg -n "Starting dhcpcd on the $1 interface..."
# Test to see if there is a stale pid file
if [ -f "$PIDFILE" ]
then
ps `cat "$PIDFILE"` | grep dhcpcd > /dev/null
if [ $? != 0 ]
then
rm -f /var/run/dhcpcd-$1.pid > /dev/null
else
boot_mesg "dhcpcd already running!" ${WARNING}
echo_warning
exit 2
fi
fi
$DAEMON $1 $DHCP_START
# Save the return value
RET="$?"
# Print the assigned settings if requested
if [ "$RET" = "0" -a "$PRINTIP" = "yes" ]; then
. /var/lib/dhcpc/dhcpcd-$1.info
if [ "$PRINTALL" = "yes" ]; then
echo ""
echo_ok
boot_mesg " DHCP Assigned Settings for $1:"
boot_mesg_flush
boot_mesg " IP Address: $IPADDR"
boot_mesg_flush
boot_mesg " Subnet Mask: $NETMASK"
boot_mesg_flush
boot_mesg " Default Gateway: $GATEWAY"
boot_mesg_flush
boot_mesg " DNS Server: $DNS"
boot_mesg_flush
else
boot_mesg " IP Addresss: ""$IPADDR"
echo_ok
fi
else
echo ""
$(exit "$RET")
evaluate_retval
fi
;;
down)
boot_mesg -n "Stopping dhcpcd on the $1 interface..."
# Do nothing with the client daemon if we have an infinate
# lease time as the client exits when started in this case,
# just echo OK.
if [ -e $LEASEINFO ]
then
. $LEASEINFO
if [ "$LEASETIME" = "4294967295" ]
then
# do nothing, just echo ok
echo ""
echo_ok
else
if [ -n "$DHCP_STOP" ]
then
$DAEMON $1 $DHCP_STOP &> /dev/null
RET="$?"
if [ "$RET" -eq 0 ]; then
echo ""
echo_ok
elif [ "$RET" -eq 1 ]; then
boot_mesg "dhcpcd not running!" ${WARNING}
echo_warning
else
echo ""
echo_failure
fi
else
echo ""
killproc dhcpcd
fi
fi
else
boot_mesg -n "LEASEINFO Test failed! - " ${WARNING}
boot_mesg "dhcpcd is not running!" ${WARNING}
echo_warning
exit 1
fi
;;
*)
echo "Usage: $0 [interface] {up|down}"
exit 1
;;
esac
# End $network_devices/services/dhcpcd
chmod 755 dhcpcd
Luego en /etc/sysconfig/network-devices/ifconfig.eth1 (nuestra interfaz wifi) creamos el fichero dhcpcd:
ONBOOT="no"
SERVICE="dhcpcd"
DHCP_START=""
DHCP_STOP="-k"
# Set PRINTIP="yes" to have the script print
# the DHCP assigned IP address
PRINTIP="yes"
# Set PRINTALL="yes" to print the DHCP assigned values for
# IP, SM, DG, and 1st NS. This requires PRINTIP="yes".
PRINTALL="yes"
y levantamos el interfaz: /etc/sysconfig/network-devices/ifup eth1
Conexión a la red Wifi sin seguridad
Ya tenemos el driver instalado y la wireless tools.
Vamos a probar:
iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 unassociated ESSID:off/any
Mode:Managed Channel=0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Ahora vamos ver qué redes tenemos a nuestro alcance: iwlist eth1 scanning
Ponemos el id de nuestra red: iwconfig eth1 essid "TOLETUM"
El canal: iwconfig eth1 channel 11
iwconfig eth1
eth1 IEEE 802.11g ESSID:"TOLETUM"
Mode:Managed Frequency:2.462 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate:54 Mb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=97/100 Signal level=-27 dBm Noise level=-87 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Ya estamos conectados, ahora hay que configurar la eth1
Primero y para evitar problema paramos la eth0: /etc/rc.d/init.d/network stop
En /etc/sysconfig/network-devices/ifconfig.eth0/ipv4 ponemos ONBOOT=no y creamos el directorio /etc/sysconfig/network-devices/ifconfig.eth1 creamos el fichero ipv4:
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.20
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=255.255.255.0
Yo normalmente no utilizo la eth0 y eth1 al mismo tiempo, es más una vez configurada la wifi no uso el cable, si fuese así en ONBOOT=no y con /etc/sysconfig/network-devices/ifup y /etc/sysconfig/network-devices/ipdown iria cambiando de interfaz
Y arrancamos /etc/rc.d/init.d/network start.
Con esto la eth0 no se va a levantar, pero si nuestra eth1 (wifi)
Vamos a probar:
iwconfig
lo no wireless extensions.
eth0 no wireless extensions.
eth1 unassociated ESSID:off/any
Mode:Managed Channel=0 Access Point: Not-Associated
Bit Rate:0 kb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality:0 Signal level:0 Noise level:0
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Ahora vamos ver qué redes tenemos a nuestro alcance: iwlist eth1 scanning
Ponemos el id de nuestra red: iwconfig eth1 essid "TOLETUM"
El canal: iwconfig eth1 channel 11
iwconfig eth1
eth1 IEEE 802.11g ESSID:"TOLETUM"
Mode:Managed Frequency:2.462 GHz Access Point: XX:XX:XX:XX:XX:XX
Bit Rate:54 Mb/s Tx-Power=20 dBm Sensitivity=8/0
Retry limit:7 RTS thr:off Fragment thr:off
Encryption key:off
Power Management:off
Link Quality=97/100 Signal level=-27 dBm Noise level=-87 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
Ya estamos conectados, ahora hay que configurar la eth1
Primero y para evitar problema paramos la eth0: /etc/rc.d/init.d/network stop
En /etc/sysconfig/network-devices/ifconfig.eth0/ipv4 ponemos ONBOOT=no y creamos el directorio /etc/sysconfig/network-devices/ifconfig.eth1 creamos el fichero ipv4:
ONBOOT=yes
SERVICE=ipv4-static
IP=192.168.1.20
GATEWAY=192.168.1.1
PREFIX=24
BROADCAST=255.255.255.0
Yo normalmente no utilizo la eth0 y eth1 al mismo tiempo, es más una vez configurada la wifi no uso el cable, si fuese así en ONBOOT=no y con /etc/sysconfig/network-devices/ifup y /etc/sysconfig/network-devices/ipdown iria cambiando de interfaz
Y arrancamos /etc/rc.d/init.d/network start.
Con esto la eth0 no se va a levantar, pero si nuestra eth1 (wifi)
Y ahora la wifi: Intel Corporation PRO/Wireless 2200BG
Vamos hacer que linux reconozca la tarjeta wifi del portátil. La tarjeta es 0000:02:04.0 Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05). Este portátil se conoce como Intel Centrino.
Vamos a las fuentes kernel: make menuconfig
Device Drivers -> Network device support
[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
< > Intel PRO/Wireless 2200BG and 2915ABG Network Connection
OJO: Desactivado Intel PRO/Wireless 2200BG and 2915ABG Network Connection
Device Drivers -> Generic Driver Options:
[*] Select only drivers that don't need compile-time external firmwar
[*] Prevent firmware from being built
<m> Userspace firmware loading support
Networking:
[*] Networking support
< > Generic IEEE 802.11 Networking Stack
OJO: Desactivado Generic IEEE 802.11 Networking Stack
Cryptographic options:
[*] Cryptographic API
<m> AES cipher algorithms (i586)
<m> ARC4 cipher algorithm
<m> Michael MIC keyed digest algorithm
Library routines:
<m> CRC32 functions
Ahora nos descargamos los fuentes del driver y el firmware. Todo esto está en http://ipw2200.sourceforge.net/firmware.php y http://ipw2200.sourceforge.net/downloads.php.
Todas las fuentes y firmware los dejo en /usr/src.
Las instrucciones son para la versión 3.0 de firmware y 1.2.0 del driver.
Para compilar el driver necesitamos ieee80211 subsystem for Linux, los fuentes están http://ieee80211.sourceforge.net/downloads.php. La versión que voy a utilizar es 1.2.15
tar xf ieee80211-1.2.15.tgz
cd ieee80211-1.2.15
make
make install
Con esto instala en /lib/modules/2.6.18.3/net/ieee80211/ los módulos necesarios.
ieee80211_crypt_ccmp.ko ieee80211_crypt_tkip.ko ieee80211.ko
ieee80211_crypt.ko ieee80211_crypt_wep.ko
Ahora el driver:
tar xf ipw2200-1.2.0.tgz
cd ipw2200-1.2.0
make KSRC=/usr/src/linux
make KSRC=/usr/src/linux install
/usr/src/linux es dónde están los fuentes de linux
Ya tenemos instalado en /lib/modules/2.6.18.3/kernel/drivers/net/wireless/ el módulo ipw2200.ko
Por último instalamos el firmware:
tar xf ipw2200-fw-3.0.tgz
cd ipw2200-fw-3.0
cp -v *.fw /lib/firmware/
Veamos si está todo bien:
modprobe firmware_class
modprobe crc32
modprobe ieee80211
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, 1.2.15
ieee80211: Copyright (C) 2004-2005 Intel Corporation jketreno@linux.intel.com
modprobe ieee80211_crypt_wep
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'WEP'
modprobe ipw2200
tail /var/log/kern.log
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0dmq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
PCI: Found IRQ 11 for device 0000:02:04.0
PCI: Sharing IRQ 11 with 0000:02:08.0
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)
No borro los directorios con las fuentes.
Para que la tarjeta wifi sea eth1:
borramos /etc/udev/rules.d/75-persistent-net-generator.rules
y creamos/editamos /etc/udev/rules.d/70-persistent-net.rules con la siguiente linea: SUBSYSTEM=="net", SYSFS{address}=="DIRECCION_MAC", NAME="eth1"
Para saber la DIRECCION_MAC: cat /sys/class/net/eth1/address o con ip addre campo link/ether
Ok, todo tiene buena pinta. Ahora tenemos que instalar Wireless Tools.
Para ello seguimos los pasos de BLFS.
Vamos a las fuentes kernel: make menuconfig
Device Drivers -> Network device support
[*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
< > Intel PRO/Wireless 2200BG and 2915ABG Network Connection
OJO: Desactivado Intel PRO/Wireless 2200BG and 2915ABG Network Connection
Device Drivers -> Generic Driver Options:
[*] Select only drivers that don't need compile-time external firmwar
[*] Prevent firmware from being built
<m> Userspace firmware loading support
Networking:
[*] Networking support
< > Generic IEEE 802.11 Networking Stack
OJO: Desactivado Generic IEEE 802.11 Networking Stack
Cryptographic options:
[*] Cryptographic API
<m> AES cipher algorithms (i586)
<m> ARC4 cipher algorithm
<m> Michael MIC keyed digest algorithm
Library routines:
<m> CRC32 functions
Ahora nos descargamos los fuentes del driver y el firmware. Todo esto está en http://ipw2200.sourceforge.net/firmware.php y http://ipw2200.sourceforge.net/downloads.php.
Todas las fuentes y firmware los dejo en /usr/src.
Las instrucciones son para la versión 3.0 de firmware y 1.2.0 del driver.
Para compilar el driver necesitamos ieee80211 subsystem for Linux, los fuentes están http://ieee80211.sourceforge.net/downloads.php. La versión que voy a utilizar es 1.2.15
tar xf ieee80211-1.2.15.tgz
cd ieee80211-1.2.15
make
make install
Con esto instala en /lib/modules/2.6.18.3/net/ieee80211/ los módulos necesarios.
ieee80211_crypt_ccmp.ko ieee80211_crypt_tkip.ko ieee80211.ko
ieee80211_crypt.ko ieee80211_crypt_wep.ko
Ahora el driver:
tar xf ipw2200-1.2.0.tgz
cd ipw2200-1.2.0
make KSRC=/usr/src/linux
make KSRC=/usr/src/linux install
/usr/src/linux es dónde están los fuentes de linux
Ya tenemos instalado en /lib/modules/2.6.18.3/kernel/drivers/net/wireless/ el módulo ipw2200.ko
Por último instalamos el firmware:
tar xf ipw2200-fw-3.0.tgz
cd ipw2200-fw-3.0
cp -v *.fw /lib/firmware/
Veamos si está todo bien:
modprobe firmware_class
modprobe crc32
modprobe ieee80211
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'NULL'
ieee80211: 802.11 data/management/control stack, 1.2.15
ieee80211: Copyright (C) 2004-2005 Intel Corporation jketreno@linux.intel.com
modprobe ieee80211_crypt_wep
tail /var/log/kern.log
ieee80211_crypt: registered algorithm 'WEP'
modprobe ipw2200
tail /var/log/kern.log
ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.2.0dmq
ipw2200: Copyright(c) 2003-2006 Intel Corporation
PCI: Found IRQ 11 for device 0000:02:04.0
PCI: Sharing IRQ 11 with 0000:02:08.0
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Detected geography ZZD (13 802.11bg channels, 0 802.11a channels)
No borro los directorios con las fuentes.
Para que la tarjeta wifi sea eth1:
borramos /etc/udev/rules.d/75-persistent-net-generator.rules
y creamos/editamos /etc/udev/rules.d/70-persistent-net.rules con la siguiente linea: SUBSYSTEM=="net", SYSFS{address}=="DIRECCION_MAC", NAME="eth1"
Para saber la DIRECCION_MAC: cat /sys/class/net/eth1/address o con ip addre campo link/ether
Ok, todo tiene buena pinta. Ahora tenemos que instalar Wireless Tools.
Para ello seguimos los pasos de BLFS.
Afinando el sistema
Sólo nos queda configurar un poco nuestro linux para que tenga mejor aspecto.
Configuración general, para todos los usuarios:
/etc/profile:
# Begin /etc/profile
export LANG=es_ES.utf8
export INPUTRC=/etc/inputrc
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
export PATH=$PATH:/sbin:/usr/sbin
unset HISTFILE
fi
# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '
# End /etc/profile
/etc/bashrc:
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
fi
alias ls='ls --color=auto'
Configuración para root:
/root/.bash_profile:
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
/root/.bashrc:
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
Por último:
dircolors -p > /etc/dircolors
Configuración general, para todos los usuarios:
/etc/profile:
# Begin /etc/profile
export LANG=es_ES.utf8
export INPUTRC=/etc/inputrc
export PATH=/bin:/usr/bin
if [ $EUID -eq 0 ] ; then
export PATH=$PATH:/sbin:/usr/sbin
unset HISTFILE
fi
# Setup some environment variables.
export HISTSIZE=1000
export HISTIGNORE="&:[bf]g:exit"
#export PS1="[\u@\h \w]\\$ "
export PS1='\u@\h:\w\$ '
# End /etc/profile
/etc/bashrc:
if [ -f "/etc/dircolors" ] ; then
eval $(dircolors -b /etc/dircolors)
if [ -f "$HOME/.dircolors" ] ; then
eval $(dircolors -b $HOME/.dircolors)
fi
fi
alias ls='ls --color=auto'
Configuración para root:
/root/.bash_profile:
if [ -f "$HOME/.bashrc" ] ; then
source $HOME/.bashrc
fi
/root/.bashrc:
if [ -f "/etc/bashrc" ] ; then
source /etc/bashrc
fi
Por último:
dircolors -p > /etc/dircolors
Suscribirse a:
Entradas (Atom)