En un post anterior, habia ideado una manera negrera de hacer funcionar un pseudo control remoto de la sintonizadora de TV Kozumi con chip BT878, via SSH.
Investigando un poco como maneja el kernel de Linux los infrarrojos, encontre la manera de hacerlo funcionar (luego de algunas recompilaciones del Kernel), y la verdad que funciona barbaro. Para empezar me base en la versión del kernel de Linux 2.6.31-2 al hacer lspci mi salida es la siguiente.

01:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
01:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)

El control remoto funcionaba correctamente, pero el mapeo de teclas era totalmente incorrecto, por lo cual manejarlo mediante este medio se volvia imposible, asi que me pregunte ¿en que lugar del driver infrarrojo, estan mapeadas las teclas?. La respuesta fue muy simple, si usamos esta sintonizadora, se encuentra en el archivo ir-keymaps.c en el cual dentro de un arreglo, se le asigna un valor hexadecimal a cada tecla, por ejemplo [ 0x44 ] equivaldria a KEY_0 que representa al número 0 del control remoto.
Si nosotros levantamos la placa sintonizadora cargando el modulo bttv con las siguientes opciones:

bttv card=120 pll=1 tuner=38 radio=1 bttv_verbose=1 gbuffers=4

La misma es reconocida como una placa PiexelView (funciona barbaro) y carga los IR_CODES de esta misma, con lo cual el control remoto difiere considerablemente.
Para hacer funcionar este control remoto debemos editar el archivo drivers/media/common/ir-keymaps.c y sustituir los IR_CODES del arreglo ir_codes_pixelview por los siguientes:

/* ----------------------------------------------------------------------
 Kozumi KTV-01C
 For remote control of Kozumi KTV-01C card
 ------------------------------------------------------------------------*/
IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
  [ 0x00 ] = KEY_0,
  [ 0x01 ] = KEY_1,
  [ 0x02 ] = KEY_2,
  [ 0x03 ] = KEY_3,
  [ 0x04 ] = KEY_4,
  [ 0x05 ] = KEY_5,
  [ 0x06 ] = KEY_6,
  [ 0x07 ] = KEY_7,
  [ 0x08 ] = KEY_8,
  [ 0x09 ] = KEY_9,
  [ 0x1c ] = KEY_RADIO,
  [ 0x0a ] = KEY_BACKSPACE,
  [ 0x12 ] = KEY_POWER,       // KEY_ESC
  [ 0x18 ] = KEY_LEFT,        // VOL -
  [ 0x0c ] = KEY_RIGHT,       // VOL +
  [ 0x16 ] = KEY_ENTER,       // OK
  [ 0x17 ] = KEY_D,           // Plus
  [ 0x10 ] = KEY_F,           // Mode
  [ 0x0b ] = KEY_UP,          // Channel up
  [ 0x0b ] = KEY_UP,          // Channel up
  [ 0x15 ] = KEY_DOWN,        // Channel down
  [ 0x14 ] = KEY_H,           // OSD
  [ 0x13 ] = KEY_MUTE,        // Mute
  [ 0x0f ] = KEY_BACKSPACE,   // Prev
  [ 0x0e ] = KEY_STOP,        // Stop
  [ 0x1f ] = KEY_PLAY,        // Play
  [ 0x1e ] = KEY_PAUSE,       // Pause
  [ 0x1d ] = KEY_RECORD,      // Record
  [ 0x1a ] = KEY_F7,          // Next
  [ 0x0f ] = KEY_A,
  [ 0x1b ] = KEY_F5,          // Time Shift
  [ 0x19 ] = KEY_S,           // Snapshot
  [ 0x0f ] = KEY_F6,          // Prev
  [ 0x0d ] = KEY_E,           // Stereo
  [ 0x11 ] = KEY_I            // Source
};

Guardamos los cambios y luego de esto, solo falta recompilar los módulos del Kernel, instalarlos, y volver a cargar el modulo con las mismas opciones que lo haciamos anteriormente. No olvides conectar tu sensor infrarrojo!.

Tags: , , ,

OpenBSD 2Hace un tiempo, decidi migrar una PC de escritorio que utilizo a modo de ‘home server’ con motherboard ASRock AM2-NF6G-VSTA y microprocesador Athlon 64 3200+ de FreeBSD 7.2 a OpenBSD 4.5.

Al comenzar a bootear desde el CD la instalación de OpenBSD, un pequeño problema: “Kernel panic”. Reinicie el equipo nuevamente, volvi a bootear y lo mismo, el mensaje de error era poco descriptivo, y la verdad que no entendia que pasaba. Habia instalado la versión anterior de OpenBSD (4.4) en este equipo, y recordaba que habia andado todos sin problemas. Así que me decidi a buscar por Internet, pero nada encontraba. Un día en el canal #OpenBSD de Freenode (irc.freenode.net), alguién me comento que ACPI podría estar generando el problema. Y que tal vez agregando algún paramétro al inicio que deshabilite ACPI, podría solventar este problema e instalar OpenBSD normalmente.

Solución al problema Nº1:

boot> boot -c
ukc> disable acpi
ukc> quit

Al hacer esto, el instalador de OpenBSD comienza sin problemas, y en mi caso pude realizar una instalación mas que normal. Pero a partir de aquí, cada vez que iniciaba mi OpenBSD debia repetir este procedimiento, ya que sino el kernel crasheaba.
Intente deshabilitar ACPI desde la propia BIOS, esto no funciono, asi que no me quedaba otra tarea mas que recompilar el Kernel.

La compilación del Kernel en OpenBSD es muy sencilla, tal vez mucho mas que en GNU/Linux u otros sistemas del tipo Unix-Like, así que pasare a contarles como logre resolver este problema.
En primer lugar, debemos obtener las fuentes, para luego compilarlas, para ello podemos usar el CD de Instalación, descargarlas desde un FTP, o utilizar CVS para obtener una copia local de las fuentes y trabajar sobre ellas. Nosotros trabajaremos sobre el directorio /usr/src y aquí posicionaremos nuestras fuentes.

#: cd /usr/src

Una vez aquí necesitaremos obtener las fuentes ¿pero de donde?, utilizaremos un CVS Anónimo de algún server de OpenBSD. Para ello podremos utilizar alguno de los CVS listados en esta página de las FAQ de OpenBSD.
En nuestro caso utilizaremos: mirror.planetunix.net, que se encuentra en Los Angeles, USA y cuyos fingerprint son los siguiente:

Server: anoncvs@mirror.planetunix.net:/cvs
(RSA1) 2048 e4:22:93:81:84:e0:68:8c:0b:d5:1f:78:cd:6f:fa:c3
(RSA) 2048 8f:42:bd:b0:a2:94:df:6b:af:1e:96:03:ea:68:03:d9
(DSA) 1024 26:51:e8:b3:38:88:dc:a8:2a:98:59:86:ab:40:bb:a4

Para seleccionar que servidor CVS vamos a utilizar deberemos setear la variable de entorno CVSROOT, y utilizar el comando cvs para obtener nuestra copia de las fuentes.

#: export CVSROOT=anoncvs@mirror.planetunix.net:/cvs
#: cvs -z3 update -r OPENBSD_4_5 -Pd

No olviden remplazar OPENBSD_4_5 por la versión de OpenBSD que ustedes tengan instalada.
Esto deberia tardar dependiendo de la conexión a Internet que ustedes dispongan, ya que descargara absolutamente todo. Puede ser un buen momento para leer articulos en Wikipedia, o ir a preparar un café.
Una vez que las fuentes hallan descargado comenzaremos a trabajar sobre ellas.

#: cd /usr/src/src/sys/arch/`uname -m`/conf
#: vi GENERIC

Donde uname -m hace referencia a la arquitectura que esten usando en el equipo.
Aquí deberemos editar el archivo GENERIC, o GENERIC.MP dependiendo si utilizamos multiples procesadores o no.
GENERIC es la configuración por default del núcleo de OpenBSD, para editar este archivo podemos hacer con Vi, o cualquier otro editor de textos. En mi caso tuve que comentar todo lo relacionado a ACPI para deshabilitarlo, las opciones que comente son las siguientes:

#acpi0 at bios?
#acpitimer* at acpi?
#acpihpet* at acpi?
#acpiac* at acpi?
#acpibat* at acpi?
#acpibtn* at acpi?
#acpicpu* at acpi?
#acpidock* at acpi?
#acpiec* at acpi?
#acpimadt0 at acpi?
#acpiprt* at acpi?
#acpitz* at acpi?
#acpiasus* at acpi?
#acpithinkpad* at acpi?

Una vez deshabilitadas estas, guarde cambios e hice efectiva la configuración.

#: config GENERIC

Y ahora si, pasamos directamente a compilar:

#: cd ../compile/GENERIC
#: make clean
#: make depend
#: make

Esto también va a demorar un poco dependiendo del hardware que esten utilizando, asi que pueden ir por otra taza de café o a pegarse una ducha.
Una vez listo ya solo nos queda hacer tres simles cosas, la primera renombramos el antiguo núcleo de forma de que si falla este nuevo núcleo podramos iniciar con el anterior, y por ultimo moveremos el núcleo actual a la raiz.

#: mv /bsd /bsd.old
#: mv bsd /bsd

Y ahora sí, listo, solamente reinciamos, y ya ACPI dejara de hacer crashear el kernel al iniciar!. ¿Fácil verdad?.

Tags: , , , , , , ,

Aquí les presento nuevamente las contribuciones al “Linux Plumbing” de GNU/Linux, una conferencia presentada por Greg Kroah , esta vez en vídeo.
Se pueden notar las minimas contribuciones por parte de Canonical , empresa fundadora de la famosa distribución Ubuntu.

La primera parte del post, (donde presento los slices), pueden encontrarlas aquí .

Tags: , , , ,

Hoy por la tarde necesitaba usar una maquina virtual, tenia que probar software de seguridad en una red, y tenia solamente una máquina, así que sin pensarlo descargue VirtualBox, pero existia un inconveniente, estaba utilizando el Kernel de Linux 2.6.28.3, compilado a mano por mi, no hace demasiado tiempo.
Entonces pense en descargar VirtualBox desde los repositorios, pero, al instalar los módulos de VBox OSE, no tenia sentido regresa versiones atras en el kernel de Linux, unícamente para utilizar VirtualBox. Fui al directorio /usr/src, pero (siempre hay un pero), hacia unos días que habia borrado las fuentes y no iba a poder compilar ni los headers del kernel, ni los los módulos de VirtualBox
No me quedo otra que ir a kernel.org y descargar las fuentes de un nuevo Kernel, esta vez 2.6.28.6.
Por otro lado, fui a la página de VirtualBox, y descargue este software en su versión 2.4.1 para Linux, aquí se presentan una cantidad de paquetes binarios precompilados, pero yo baje un paquete “All Distributions”, el cual viene en un paquete .run.

Una vez que hemos terminado de descargar el Kernel, procedi al proceso de compilación ¿como?¿how to?, así bien facil:

Instalando el nuevo núcleo:
Primero que nada, hay que mover el archivo linux-2.6.28.6.tar.bz2 a /usr/src y luego descomprimir las fuentes del núcleo que vienen empaquetadas en un archivo .tar.bz2

#: mv linux-2.6.28.6.tar.bz2 /usr/src
#: tar jxvf linux-2.6.28.6.tar.bz2

Una vez descomprimidas, tenemos que crear un enlace simbolico llamado linux que apunte a las fuentes.

#: ln -s /usr/src/linux-2.6.28.6 /usr/src/linux
#: cd linux

Bien, como yo ya habia compilado varias veces, tengo mi archivo config guardado, con el cual evito tener que reconfigurar el núcleo con cada compilación, proceso que ahorra la mayor parte de la complejidad que supone compilar un kernel.
Copiamos el antiguo config dentro del directorio de las fuentes.

#: cp /boot/config-2.6.28.3 /usr/src/linux-2.6.28.6/.config

Una ves hecho esto, procedemos a comenzar con la compilación restaurando las configuración del archivo config que acabamos de copiar.

#: make oldconfig

Si el kernel que estamos compilando, presenta nuevos “features” con respecto a la configuración que poseemos, este nos preguntara sobre si deseamos compilar soporte también para estas nuevas características, solamente debemos responder las preguntas que este nos hace.
Ahora pasaremos al proceso de compilación propiamente dicho:

#: make && make install

Proceso de compilación

Proceso de compilación

Podemos salir a tomar un café, a hacer un poco de ejercicio o ir de compras, pues esto tardara bastante tiempo, en mayor o menor medida dependiendo de la capacidad de procesamiento de nuestro hardware.
Una vez que esto termine, hacemos:

#: make install_modules
#: mkinitramfs -o /boot/initrd.img-2.6.28.6 2.6.28.6

Listo, ya esta casí todo hecho respecto a la compilación del núcleo, pasaremos ahora a agregar la respectiva entrada en el Grub.
Podemos hacerlo de dos formas, una es haciendo un update-grub, o agregamos a mano la siguiente entrada, con nuestro editor de textos favorito (Vim rulez!), deberemos incorporar al archivo /boot/grub/menu.lst, algo como esto:

title           Debian GNU/Linux, kernel 2.6.28.6
root            (hd0,5)
kernel          /boot/vmlinuz-2.6.28.6 root=/dev/sda6 ro quiet vga=792
initrd          /boot/initrd.img-2.6.28.6

Obviamente, deberemos ajustar estos valores a los que corresponden con nuestro sistema. Con esto listo, el núcleo ya se encuentra compilado. Solo nos queda reiniciar, y seleccionar el nuevo núcleo.

#: shutdown -r now

Instalando el Linux Headers:

VirtualBox, necesita tener instalado los headers del núcleo, para instalarlo el proceso es bien simple, utilizaremos un paquete llamado kernel-package, el cual trae un conjunto de utilidades para la construcción de núcleos en Debian.
Hacemos lo siguiente:

#: apt-get update && apt-get install kernel-package

Una vez que este se encuentre instalado hacemos lo siguiente:

#: make-kpkg --append-to-version -1.0 kernel_headers

Esto tardara un rato, y nos generara un paquete .deb con los headers, por lo cual, deberiamos poder instalarlo con dpkg:

#: dpkg -i linux-headers-2.6.28.6-1.0_2.6.28.6_i386.deb

Y listo, los headers ya se encuentran instalados.

Instalando VirtualBox:

Ahora debemo dirigirnos a donde hemos descargado VirtualBox, y allí hacemos:

#: chmod +x virtualBox-2.1.4-42893-Linux_x86.run
#: ./virtualBox-2.1.4-42893-Linux_x86.run

La instalación se realiza de manera automática, pero aún nos queda OSE-Modules, a los cuales debemos compilarlos.

Compilando OSE-Modules:

Si intentamos iniciar vboxdrv, nos encontraremos con un pequeño error, que dice:

#: /etc/init.d/vboxdrv
Starting VirtualBox kernel module ...failed!
(No suitable module for running kernel found)

Si nos fijamos en el archivo /var/log/vbox-install.log encontraremos:

#: cat /var/log/vbox-install.log
Makefile:154: *** Error: /usr/src/linux (version 2.6.28.6-1.0) does not match the
current kernel (version 2.6.28.6). Alto.

Lo cual nos dice claramente que no encuentra las fuentes del núcleo. WTF???.
Tarte un rato en encontrar una solución, pero cuando la encontre, era mas facil de lo que parecia:

#: cd /lib/modules/2.6.28.6/source/
#: make oldconfig
#: make prepare

Ahora hacemos:

#: /etc/init.d/vboxdrv setup
#: /etc/init.d/vboxdrv start

Esperamos que se compilen los módulos, no suele demorar mucho y al terminar ya podemos iniciar VirtualBox normalmente. :)

VirtualBox con Damm Vulnerable Linux (DVL)

VirtualBox con Damm Vulnerable Linux (DVL)

Yo ya estoy usando Damm Vulnerable Linux desde VBox. Un tip, ahora es muchisimo mas facil configurar la red desde la máquina virtual utilizando NAT, (el proceso es casi automático).
Espero que les halla servido.

Tags: , , , , ,

Según Wikipedia, Bootchart es una herramienta para el análisis de rendimiento y visualización del proceso de arranque en GNU/Linux .La utilización de los recursos y el proceso de información se recoge durante el proceso de arranque y posteriormente se dicta en un PNG, SVG o EPS gráfico codificado.
El proyecto comenzó como una respuesta a un desafío Publicado por Owen Taylor en la lista de correos del desarrollo de Fedora Core.

Bootchart proporciona un script de shell que a de ser ejecutado por el núcleo en él. El script se ejecuta en segundo plano y el proceso trata de recopilar información, estadísticas de CPU y disco estadísticas de uso de los /proc. Los datos de rendimiento se almacenan en la memoria y se escriben en el disco una vez que el proceso de arranque se completa.

La instalación en Debian es muy simple, y detallare aquí los pasos para realizarla.
Como primer punto, en una shell como root hacemos:

#: apt-get install bootchart bootchart-view

Una vez hecho esto, vamos al archivo /boot/grub/menu.lst y como paramétro de la entrada kernel agregamos: init=/sbin/bootchartd
Debiendo quedar aproximadamente de la siguiente forma:

title           Debian GNU/Linux, kernel 2.6.28.3
root            (hd0,5)
kernel          /boot/vmlinuz-2.6.28 root=/dev/sda6 quiet init=/sbin/bootchartd
initrd          /boot/initrd.img-2.6.28.3

Una vez hecho esto, creamos el archivo /var/log/bootchart.tgz de la siguiente forma:

#: touch /var/log/bootchart.tgz

Y listo!, ahora nos queda reiniciar y visualizar los gráficos de la siguiente forma:

#: /sbin/bootchart /var/log/bootchart.tgz

Se generara un archivo .png el cual podemos abrir con nuestro visualizador de imagenes favorito, yo recomiendo zgv, que usa las librerías zvgalib.

Gráfico generado por Bootchart

Gráfico generado por Bootchart

Tags: , , , ,

Greg Kroah, uno de los kernel developers publicó en su blog, un estudio acerca de las contribuciones del kernel de GNU/Linux, quien expuso esto mismo en un evento denominado “Linux Plumbers Conference”, en Portland, Oregon.
Si bien se trataron estadísticas acerca de la contribución de este núcleo, sorprendieron los aportes de Canonical, empresa fundadora de la distribución más popular hoy por hoy, Ubuntu.
Los números en si mismos son los siguientes:

Lineas de codigo Kernel Linux

Líneas de codigo empleadas en el desarollo de GNU/Linux

A todo este conjunto de aplicaciones que vemos en el gráfico (X.org, Kernel, Man Pages, Gcc, AlSA, etc.), se lo denomina plumbing, lo que traducido al español seria  algo como “fontaneria”.
Bien de esta forma podemos analizar la cantidad de líneas empleadas en el desarollo de las distintas aplicaciones del sistema GNU/Linux, podemos notar un gran desarollo en el kernel, con el 40% de las contribuciones, en el compilador de GNU  Gcc, X.org, en los tres primeros puestos.
Tres utilidades primordiales para el desarollo de este sistema, el corazón (núcleo), tuvo muchisimas contribuciones, por que no vemos cuantos paths hicieron los kernel developers:

Linux kernel development

Linux kernel development

Los developers del kernel han contribuido con 99324 parches desde la versión del núcleo de Linux 2.6.15 hasta 2.6.27-rc6, lo cual realmente no representa mucho tiempo, por lo cual, demuestran un trabajo enorme para realizar su tarea, un orgullo.

Canonical's kernel contributions

Canonical's kernel contributions

Canonical, una empresa fundada por el sudafricano Mark Shuttleworth, solo contribuyo con 100 parches en el mismo periodo de tiempo, desde la versión de Linux 2.6.15 hasta 2.6.27-rc6 lo que estadísticamente representa:

Canonical's kernel contributions

Canonical

Para ser una de las distribuciones (si no es la mas), usada actualmente un pequeño 00.1% representa muy poco en cuanto a contribuciones, ya que su cantidad de usuarios es realmente muy alta como para coolaborar tan poco.
Si evaluamos a esto por las distribuciones que más coolaboran, Canonical representaria a todos sus productos (Ubuntu, Kubuntu, Xubuntu, Edubuntu, etc.), las contribuciones siguen siendo las mismas.
Veamos en mas detalle esto mismo:

Distro contributions

Distro contributions

Podemos notar la presencia de Red Hat en el segundo puesto de la Lista, de Novell con su distribución Suse y OpenSuse, y un poco más abajo con 288 parches, Debian. Canonical con 100 parches, (como dijimos antes), se ubica en el puesto Nº 81.
Podemos notar también a Gentoo, una distribución que esta teniendo diferentes problemas en cuanto a su equipo humano, increiblemente a aportado 288 parches.
Si queremos ver detalladamente quien realizo las contribuciones:

Kernel contributions

Kernel contributions

Amateurs contribuyen con el 17.0% de las contribuciones para el kernel de GNU/Linux, algo maravilloso, Red Hat, una empresa la cual mantuvo su presencia desde hace mucho tiempo en este mundo, con un 11.9%, y desconocidos ¿quienes seran?, un 8.3%.

X.org contributions

X.org contributions

En cuantro a las contribuciones de X.org el servidor gráfico de muchos sistemas Unix-Like, Debian a coolaborado con 171 parches, Gentoo con 57 parches, y Canonical con 10 parches, lo que representa un 0.0466% del total.

GNU Gcc Contributions

GNU Gcc Contributions

En cuanto a lsa contribuciones de el compilador libre de GNU, Gcc, gana nuevamente los amateurs con el 37% de las contribuciones. Es notable la presencia de Google, el gigante de los buscadores con un 6%, y más abajo: Intel y AMD compartiendo ambos el octavo puesto con un pequeño 2% de contribuciones.
Intel una empresa que habia declarado apostar por el software libre, solo un pequeño 2%.

Canonical dos not contribute to Linux plumbing

Canonical dos not contribute to Linux plumbing

¿No les asombra que una empresa como Canonical Ltd, quien tiene su sede en la Isla de Man, una dependencia de la corona britanica la cual es un paraiso fiscal, contribuya tan poco al Kernel de Linux y al mundo GNU/Linux (X.org, Gcc, Man Pages, ALSA, Binutils, etc.)?, les dejo el interrogante para que se lo planteén.

Como punto final, dejo el link del estudio para que verifiquen las fuentes:
http://www.kroah.com/log/linux/lpc_2008_keynote.html

Tags: , , ,

tux-1Siempre me gusto de Slackware y Fedora, que mientras iniciaba me mostraba un simpatico Tux en la pantalla. Como usuario de Debian, no podia disfrutar de esta simpatica característica hasta que recompile el Kernel y activara el framebuffer, así que un día me decidi a hacerlo.

Cabe aclarar que el tutorial expuesto puede ser utilizado únicamente también para compilar un núcleo sin framebuffer.

Pero primero ¿qué es el framebuffer?, veamos que dice Wikipedia:

“…The Linux framebuffer (fbdev) is a graphic hardware-independent abstraction layer on a console without relying on system-specific libraries such as SVGALib or the heavy overhead of the X-Window System to show graphics.

It was originally implemented to allow the Linux kernel to emulate a text console on systems such as the Apple Macintosh that do not have a text-mode display, and was later expanded to Linux’s originally-supported IBM PC Compatible platform, where it became popular largely for the ability to show the Tux logo on boot up. More significantly, it serves as a way of displaying Unicode characters on the Linux console. Under the non-framebuffer, VGA display of the PC, comprehensive Unicode support was impossible, for VGA console fonts were limited to 512 characters…”

Lo primero, fue descargar de http://www.kernel.org/ las fuentes del último núcleo estable (para hacerlo simplemente hacemos click en la F que significa Full). En mi caso descargue la versión 2.6.27.4.

Una vez descargadas las fuentes, movemos el archivo a /usr/src

#: mv linux-2.6.27.4.tar.bz2 /usr/src

Y las descomprimimos de la sigueinte manera:

#: tar jxvf linux-2.6.27.4.tar.bz2

Bien, ya tenemos nuestro kernel descomprimido, así que ahora crearemos un enlace simbolico llamado linux, e ingresamos a el:

#: ln -s /usr/src/linux-2.6.27.4 /usr/src/linux
#: cd linux

Bien, fantástico, ahora viene lo más tedioso (pero para nada dificil), que es configurar nuestro núcleo, para ello, lo primero seria saber realmente todo lo que tenemos instalado, asi que podemos obtener información sobre nuestro hardware e ir anotandolo en algún papel boligrafo en mano. Podemos utilizar comandos tales como lspci, lsusb, dmesg, etc.

Otro tip conveniente es saber que módulos tenemos cargados asi que podriamos hacer un lsmod y sacar esta información que nos puede resultar útil en algun futuro.

Algo útil, para tener una base de nuestra configuración que podemos realizar es utilizar nuestro antiguo archivo config del kernel anterior, el cual se encuentra en el directorio /boot/

Así que vamos a el:

#: cp /boot/config-2.6.22.1 /usr/src/linux/.config
#: make oldconfig

Y la pantalla deberia devolvernos algo como esto:

scripts/kconfig/conf -o arch/x86/Kconfig
# configuration written to .config
#

Una vez que tengamos copiada la configuración del antiguo núcleo en el directorio /usr/src/linux, vamos a configurarlo, aqui tenemos tres opciones para configurar el núcleo:

  • make config
  • make menuconfig
  • make xconfig

La primera, la usaremos unicamente si somos masoquistas y disfrutamos de responder por pantalla miles de preguntas sobre cada una de las cosas que tiene soporte el kernel de Linux.

La segunda, es una bonita interfaz ncurses, donde dividido por categorias, podremos seleccionar cada una de las opciones.

Y la tercera, para aquellos amantes de las X, otra bonita interfaz donde de manera similar a menuconfig podremos configurar todo desde la sesión gráfica.

Como utilizaremos ncurses, es necesario que este instalado, si no lo tenemos:

#: apt-get install ncurses-dev

Bien, una vez instalado ncurses, configuramoes:

#: make menuconfig

Menús en Make menuconfig

Menús en Make menuconfig

Bien, aqui tendremos muchisimas opciones y categorias, como este tutorial se basa únicamente en activar el LinuxLogo, no voy a explicar como configurar cada una de las opciones, aunque es una buena oportunidad para hacerlo, si algo sale mal, recompilamos y listo!.

Para activar LinuxLogo, deberemos ir a:
Device Drivers -> Graphics Support -> Seleccionamos Bootup Logo

Y aquí dentro activamos las tres opciones, o la que mejor se ajuste a nuestras necesidades.

Dentro de menuconfig

Dentro de menuconfig

Una vez seleccionado, salimos del make menuconfig con [ESC] o seleccionado Exit hasta ver en pantalla el siguiente mensaje: “Do you wish to save your new kernel configuration?” y seleccionamos Yes para guardar los cambios.

Ahora vamos a compilar e instalar todo, asi que ponemos el siguiente comando:

#: make && make install

Y nos vamos a tomar un café, a comprar cigarillos, a jugar un partidito de fútbol, etc. Ya que esto dependiendo de nuestro procesador y hardware en general va a tardar bastante.
Una vez que termine, y si se completa sin errores pasamos a hacer:

#: make modules_install

NOTA: Si algo sobre la compilación hasta aqui expuesto sale mal o falla, solamente ejecutamos en el directorio /usr/src/linux make clean y vamos devuelta.

Bien, aqui instalaremos los módulos ya compilados, y nos queda solo crear el initramfs, asi que para ello hacemos:

#: mkinitramfs -o /boot/initrd.img-2.6.27 2.6.27

Cuando se cree, actualizamos el GRUB para ello:

#: update-grub

Y de esta manera incluimos el nuevo núcleo en nuestro /boot/grub/menu.lst

Podemos asegurarnos de esto analizando este archivo y encontrando algo como esto:

title           Debian GNU/Linux, kernel 2.6.27.4
root           (hd0,5)
kernel        /boot/vmlinuz-2.6.27.4 root=/dev/sda6 ro vga=792

title           Debian GNU/Linux, kernel 2.6.27.4 (single-user mode)
root           (hd0,5)
kernel        /boot/vmlinuz-2.6.27.4 root=/dev/sda6 ro single vga=791

Seria conveniente que tengan agregado el parametro vga=792, si usamos una resolución de 1024×768 y 32 colores en nuestra terminal, asi que sino lo tenemos, lo incorporamos, pueden ver una lista de estos valores dependiendo su resolución aquí.

Framebuffer activado

Framebuffer activado

Reiniciamos nuestro sistema con el comando reboot, y en el menú de GRUB, seleccionamos el nuevo kernel. Este deberia mostrarnos si todo salio bien, a un simpatico Tux en la parte superior izquierda de nuestra pantalla. Espero que les halla servido :)

Tags: , , , , ,

Creative Commons License
Esta obra es publicada bajo una licencia Creative Commons.