martes, 22 de junio de 2010

rescatando a Debian Lenny de un kernel panic

Pues si, lo que pensaba que no existia me sucedio hace 4 dias, mi Debian Lenny estaba congelado, bloqueado, "feezed", "crashed" y similares que me ayuden a describir que no podia logearme, preparense que sera un POST largo pero util, muy util:

1. LINEUPS AND KICK-OFF: llevo varias noches -como 8 en total- tratando se hacer funcionar el sonido en mi HP Pavilion dv2-1010la con mi Debian Lenny -ALSA 1.0.16 y kernel 2.6.26- despues de googlear y googlear y tratar y tratar nada, subitamente decido haer un upgrade de mi ALSA a la ver 1.0.20 por recomendacion de un blog que encontre por ahi; sin pensarlo lo hago compilandolo yo mismo, si ni siquiera considerar usar los repos de unstable o experimental de Debian -- MUY GRAVE ERROR --, pues bueno, funciono la compilacion "from scratch" de ALSA 1.0.20 pero igual nada de sonido, BUM!, se me ocurre actualizar la version todavia mas reciente de ALSA - la 1.0.23- igual ignoro los repos oficiales.

2. FAULT!!!: ok, compilando alsa_driver->OK, luego alsa_firmware->OK, alsa_utils->WRONG!!!, ERROR, no encontraba una libreria, hago el enlace simbolico y todavia nada, no lograba hacer el MAKE, pues bueno, luego de 20 minutos, leo el blog y dice que "al reiniciar tu sistema podras ver que tienes la ultima version de ALSA", vengo y reinicio y SAS!, un gran resto de mensajes de error: alsa_ctrl can't init, modprobe: error loading snd_hda_intel, no sound card found..... y nada no podia logearme, reinicio y lo mismo, nada DEBIAN ESTABA TRABADO!!.

3. MIDDLE-TIME: aun incredulo, veo que la cosa iba en serio y decido recurrir a los foros que siempre me sacan de aguas -debo decirlo, los foros en español nunca me han ayudado y no se diga los LUG asi como los canales IRC de El Salvador, hoy por hoy es una perdida de tiempo recurrir a tan inproductivos grupos autodenominados 'representantes del open source y GNU/Linux en El Salvador- asi que posteo en www.linuxquestions.org y en ubuntuforums.org; normalmente me responden en 15 a 30 minutos pero pasaron como 4 horas y nada; empiezo a preocuparme y hago un post en forums.debian.net.... Pasaron 3 dias hasta que recibi un escueto POST de forums.debian.net el cual es este y que me daba algunos tips muy muy escuetos.

4. SECOND TIME: mentalizado para salir a ganar esta partida, me dispongo a tratar de recuperar a Debian, la idea tactica era la siguiente: montar mi particion debian como chroot con un Live Distro de Linux -en este caso no es necesario porque en mi HDD tengo una segunda distribucion instalada Ubuntu!- y desde ahi tratar de revertir los cambios hechos; pues bueno, aca los comandos:

a. cargo mi ubuntu -Ubuntu Studio Karmic Koala-
b. $>sudo mount /dev/sda3 -t ext3 -o rw /media/deadlenny
c. $>sudo mount --bind /dev/ /media/deadlenny/dev
d. $>sudo mount --bind /dev/pts /media/deadlenny/dev/pts
e. $>sudo mount --bind /dev/shm /media/deadlenny/dev/shm
f.$>sudo chroot /media/deadlenny
g.#>mount -t sysfs sysfs /sys
h.#>mount -t proc proc /proc

ok, ahora que ya estoy como root en mi debian, tengo que deshacer lo que causo que mi sistema colapsara, en este caso desinstalar ALSA y lo demas

i.#>apt-get remove alsa-base alsa-utils alsa-tools

Asi mismo, recuerdo bien que modprobe tenia un problema cargando el modulo snd_hda_intel, pues bueno hay que quitarlo:

j.#>nano /etc/modprobe.d/blacklist
k.#>blacklist snd_hda_intel

Grabo los cambios en el archivo y finalmente:
l.#>umount -lf /proc
m.#>umount -lf /sys
n.#>umount -lf /dev/pts
o.#>exit

4. LA JUGADA CLAVE: reinicio el equipo, en Grub escojo la entrada para Debian.... empiezo a notar que ya no lanza los errores... init: entering level 2.... configuring eth1.... starting up Apache2.... login... Y FUNCIONA!!!!!! ya puedo logearme, GOL DE ANTOLOGIA.

5. PLAYER OF THE GAME: definitivamente Ubuntu, si no hubiese tenido una distro adicional instalada en el HDD el camino seria mucho mas largo para recuperar a Debian, ubuntu me facilito la vida tremendamente, sobretodo porque JAMAS JAMAS JAMAS considere volver a instalar Debian.

6. highlights: pues bueno, es segunda vez que me sucede un asunto "complicado" usando GNU/Linux, debo decir que el soporte ante este tipo de situaciones no es el mismo, ni siquiera satisfactorio por parte de la comunidad linuxera, mucho menos en español, asi que bueno, aca esta la importancia de contar con LUG's y similares solidos y bien cohesionados de manera que podamos intercambiar ideas y experiencias en este tipo de situaciones.

ok, happy coding!!!

PD: notaran que la fiebre del mundial de sudafrica tambien me ha llegado, mientras escribia esto escuche cientos de compañeros sufrir y gozar con el partido de Argentina-Grecia asi que inclui un poco de la narracion en el redaccion de este POST, saludos!

viernes, 18 de junio de 2010

Script para cambiar dinamicamente el SPLASH de grub2

Este POST espero que lo encuentres de mas interesante que los anteriores, googleando no encontre una solucion sencilla para crear un script que dinamicamente te cambie el splash de GRUB2, asi que aca te dejo una opcion desde mi punto de vista, talvez no del todo elegante por generar un archivo adicional pero bueno, me parece mas sencillo este punto de vista sobre todo si eres newbie.

1. Abre una terminal
2. #>apt-get install grub2-splashimages
3. Ahora ya tienes instalados splash adicionales para grub2, para verificar hazte un:
ls /usr/share/images/grub/ Son extension tga
4. $>mkdir ~/grub2splash
5.$>cd /usr/share/images/grub/
6.#>cp * ~/grub2splash
7.$>cd
8.$>mkdir scripts
9.$>cd scripts
10.$>nano grub2chsplash.sh


Ahora ya estas en tu editor favorito - en mi caso nano- y vamos a crear el script que nos hace el cambio dinamico de la imagen, aca lo detallo:

#!/bin/bash
#script que cambia dinamicamente el splash de grub
#creado por herbert tamayo: hftamayo@gmail.com
#2010-06-18


bg_path=/home/htamayo/grub2splash
extensions="tga png TGA PNG"
temp_bg_list=/tmp/bg_change_list

rm -f $temp_bg_list

for extension in $extensions
do
find $bg_path -iregex ".*.$extension" >> "$temp_bg_list"
done

cnt=`wc -l "$temp_bg_list" | cut -f1 -d " "`
all_bgs=$(expr "$RANDOM" % "$cnt")

selected_bg=`head -n$all_bgs "$temp_bg_list" | tail -n1`

#sebastian.tga -> uso el nombre de mi primogenito, love you son, God bless you
cp $selected_bg $bg_path/sebastian.tga
exit 0

11. ya esta, guarda los cambios y sal de nano
12. hagamos el script ejecutable:
#>chmod +x grub2chsplash.sh

13. Ejecutamos el script asi:
$>./grub2chsplash.sh

Dirigete al directorio de grub2splash y veras que hay un nuevo archivo llamado sebastian.tga, este archivo ira cambiando cada vez que se ejecute el script.


14. Bien, ahora editaremos el fichero de configuracion de grub2:
#>nano /etc/grub.d/05_debian_theme
localizaremos la siguiente linea:
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga}

y la vamos a cambiar por esta:
for i in {/boot/grub,/usr/share/images/desktop-base,/home/htamayo/grub2splash}/sebastian.{png,tga}

guardamos cambios y salimos

15. luego:
#>update-grub

y ya esta!!!, si todo sale bien deberias ver una salida similar a esta:
Generating grub.cfg ...
Found Debian background: sebastian.tga
Found linux image: /boot/vmlinuz-2.6.30-8-generic
Found initrd image: /boot/initrd.img-2.6.30-8-generic
Found linux image: /boot/vmlinuz-2.6.29-02062903-generic
Found initrd image: /boot/initrd.img-2.6.29-02062903-generic
Warning: update-grub_lib is deprecated, use grub-mkconfig_lib instead
Found memtest86+ image: /boot/memtest86+.bin
Found Moblin release 2 (Moblin) on /dev/sda3

16. Reinicia y veras que hay un nuevo splash en tu grub2, mucho mejor que el que viene por default.

17. Consideraciones: recuerda que en el script y en el archivo de conf de grub2, donde aparece "htamayo" debes cambias por el nombre de tu /home; asi mismo puedes cambiar el nombre del archivo generado por el script.

ya esta, en otro post te explico como poner este script en el init.d para que se ejecute siempre que el sistema se carga

happy coding!!!

Comandos utilisimos para saber modelo de tu sound card, version de ALSA y otros

Bueno, despues de mas de un mes de ausencia -2 semanas trabajando en un POST aun sin concluir y 3 semanas dedicado a un rollo estrictamente personal - escribo este POST sobre algunos comandos que me han servido mucho para obtener informacion sobre mi tarjeta de sonido, mi version de ALSA y tambien los codecs que la tarjeta utiliza; en verdad les digo que estos comandos son de mucha utilidad cuando tenemos algun rollo con todo lo relacionado al audio de tu equipo.

1. Averiguar el modelo de mi tarjeta de sonido:
$>lspci -vv | grep Audio
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)

2. Desplegar la version instalada de ALSA:
$>cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.16

3. Desplegar informacion sobre la compatibilidad de tu tarjeta :
$>cat /proc/asound/cards
0 [Intel ]: HDA-Intel - HDA Intel

HDA Intel at 0xd0400000 irq 22
1 [pcsp ]: PC-Speaker - pcsp
Internal PC-Speaker at port 0x61

4. Desplegar informacion de los codecs que la tarjeta usa:
$>cat /proc/asound/card*/codec* | grep Codec
Codec: Analog Devices AD1981


5. Modulos habilitados en kernel relativos al sonido:
$>lsmod | grep -i snd
snd_pcsp 8576 0

snd_hda_intel 324248 0
snd_pcm_oss 32800 0
snd_mixer_oss 12320 1 snd_pcm_oss
snd_pcm 62596 3 snd_pcsp,snd_hda_intel,snd_pcm_oss
snd_timer 17800 1 snd_pcm
snd 45604 6 snd_pcsp,snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_timer
soundcore 6368 1 snd
snd_page_alloc 7816 2 snd_hda_intel,snd_pcm

Happy coding!!