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: , , , , , , ,

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.