27 nov 2009

Mandriva 2010 y Wifi

Hace algunas semanas instalé Mandriva 2010, es primera vez que uso esta distribución, la cual a primera vista aparece como el mejor candidato para quienes quieren comenzar su migración desde sistemas operativos propietarios a una alternativa FOSS.

La distribución en sí es bastante sencilla de usar, bastante intuitiva, pero no todo es tan mágico. Por este motivo, decidí escribir esta entrada para explicar un problema clásico que resolví solo usando las herramientas gráficas de Mandriva.

La versión que bajé e instalé de Mandriva es la Free, y realicé la instalación por omisión que ofrece el instalador, una vez que inicié por primera vez, me encontré con la sorpresa que no tenía acceso a través de la tarjeta wireless del equipo.

Como dije antes, me decidí a resolver este impasse solo con las herramientas que nos da Mandriva en su interfaz gráfica, y he aquí el como lo hice.

En la siguiente captura pueden ver el Network Center, que es quien maneja las conexiones de red en Mandriva, algo similar a NetworkManager en otras distros.

Pues bien, como se ve en la imagen, no tengo acceso a nada vía wifi, a pesar que tengo el adaptador habilitado.


Bien, ahora para reparar esto, nos vamos a Mandriva Control Center, que es el ícono que dice "Configure your Computer", o el equivalente en idioma local que hayan elegido para la instalación.

La primera pantalla es para configurar la instalación de software


Acá seleccionamos "Configure media sources...", que está a la derecha. En la siguiente pantalla debemos asegurarnos que estén seleccionados los repositorios "Contrib" y "Non Free", de esta forma podremos instalar drivers que son solo binarios, y que normalmente no se incluyen en las distribuciones.

La selección de repositorios debe quedar algo similar a las dos siguientes pantallas (yo no seleccioné nada extra, es lo que trae por omisión).




Le damos "OK", y entramos a la parte que dice "Install & Remove Software", en la esquina superior izquierda, hay un menú dropdown, en el cual deben seleccionar "All"


Luego escribimos el término a buscar, en este caso puse parte del nombre que aparece en la primera pantalla.


Acá está la parte truculenta del asunto, de todos los resultados de la búsqueda, hay que seleccionar Intel Wireless WiFi Link microcode, pues es lo que le falta a la tarjeta para funcionar. Este es el punto flaco de Mandriva, no dió ningún hint o ayuda para determinar esto.

Como sea, una vez seleccionado, presionamos Apply, y nos aparecerá la siguiente advertencia


En ella se nos informa que se agregarán algunos paquetes para cumplir con las dependencias, por tanto le damos OK.

Se nos indicará las dependencias a instalar.


Y luego de eso, las dependencias previas


Presionamos Yes, y comienza la instalación


Al finalizar, puesto que se actualizó un paquete base del sistema (glibc), se debe reiniciar para que tome los cambios, aunque no es mandatorio.


Ya sea que reiniciemos o no, al volver a abrir el utilitario de conexiones de red, ahora podemos ver las redes WiFi disponibles, con lo cual solo basta configurarlas para conectarse.

Mandriva apunta a ser una de las distribuciones más amigables para hacer la transición desde aquel sistema operativo propietario tan famoso hacia Linux, el problema que tenemos siempre, es que sin una interfaz amigable, que guie al usuario, y sea entendible frente a algún tipo de problema, no podremos hacer la que gente se encante con Linux, y lo deje de ver simplemente como un hobby temporal, o algo "chori" que ponerle al computador.

Mi paso por Mandriva duró una semana, después de eso volví a Fedora, a vivir la que creo ha sido las 2 semanas más duras y a la vez entretenidas del último tiempo, en lo que tener un escritorio funcional se refiere, pero más de eso, en un siguiente post.

12 jul 2009

Preparación de RedHat Enterprise Linux 4 para instalar Oracle

En Internet pueden encontrar un montón de guías acerca de como instalar Oracle en Linux, entonces ¿para qué hacer otra más? pues simplemente para poner en un solo set de pasos, la que me ha resultado como mejor práctica para la implementación del motor de base de datos, a través de la experiencia práctica y la experimentación.

Como primer paso tendremos que tener un equipo (físico o virtual) con RedHat Enterprise Linux 4 instalado, la instalación de esta distribución está fuera del alcance de esta mini-guía, pero como referencia podemos decir que, básicamente necesitamos:

- Instalación mínima
- SWAP calculado de acuerdo a la siguiente lista:
  • RAM < 4gb =" 2*RAM
  • RAM >= 4GB < 8gb =" 1,5*RAM
  • RAM >= 8GB = RAM
- LVM como capa de soporte a los filesystems si es standalone (1 solo server), para clusters es tema de otra entrada.

Una vez que tenemos instalado el sistema, debemos hacer algunos ajustes.

Hostname: El hostname de la máquina debe estar asignado de forma estática. En el archivo /etc/hosts no debe estar asociado al localhost, es bastante común tener una entrada como la siguiente:

"127.0.0.1 localhost.localdomain localhost miservidor"

Esta debe quedar:

"127.0.0.1 localhost.localdomain localhost
1.2.3.4 miservidor.midominio.tld miservidor"

Respecto a la dirección IP, esta debe estar asignada de forma estática, Oracle no soporte configuraciones con DHCP

Paquetes del Sistema Operativo: Como se imaginarán Oracle tiene un set de pre-requisitos para la instalación del motor, pues bien, a través de la experimentación, he ido depurando un listado menor de paquetes, e incluyendo algunos extras a fin de hacer nuestras tareas administrativas un poco más simples.

Deben instalar:
  • cpp
  • gcc
  • gcc-c++
  • binutils
  • libstdc++
  • libstdc++-devel
  • compat-libstdc++-296
  • compat-libstdc++-33
  • make
  • pdksh
  • compat-db
  • sysstat
  • libaio
  • openmotif21
  • xorg-x11-xauth
  • strace (muy útil para hacer debug)
  • ntp (sincronización de tiempo)
  • popt (pre-requisito de ntp)
Parámetros de kernel

Los siguientes parámetros deben estar configurados como mínimo, todos están en la sintaxis que necesitan poner en el archivo /etc/sysctl.conf

kernel.shmmax = (RAM en bytes/2) - 1, en 32 bits que no exceda los 4GB - 1 bytes
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 262144
net.core.wmem_max = 262144

Una vez modificados los parámetros en el archivo /etc/sysctl.conf, basta con ejecutar sysctl -p para activarlos. Cabe notar, que si algún parámetro de ese archivo es mayor a los anotados más arriba, se debe dejar el mayor.

Cuentas de usuario y grupos

Ahora debemos crear el grupo "dba", y el usuario "oracle". En los documentos de Oracle, se recomienda crear el grupo "oinstall" para ser dueño del inventario de software de Oracle, en la generalidad, no he visto instalaciones productivas donde se lleven a cabo más tareas que tener el motor de datos, por tanto el grupo "oinstall" se vuelve irrelevante.

Primero creamos el grupo con "groupadd dba", y luego el usuario oracle con "useradd -g dba oracle".

Límites para el usuario oracle

Debemos configurar los límites para el usuario oracle, para esto, modificamos el archivo /etc/security/limits.conf, y agregamos

oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384

8 jul 2009

Oracle Gridcontrol Agent y HP-UX

Durante la implantación de los agentes de GridControl (10.2.0.5) para HP-UX, se genera un script que participa de la secuencia de inicio y apagado del servidor.

Este script hace una llamada al script agentstup, el cual asume ciertas cosas que no son correctas en HP-UX, al parecer fue desarrollado en Linux y no se tomaron las precauciones necesarias para validar que funcionara en un ambiente HP-UX que no necesariamente tiene utilitarios de Linux instalados, como sudo o bash.

Luego de reiniciar el servidor, teniendo ya el agente instalado, notarán que aparece un mensaje diciendo que falló un servicio y debemos revisar /etc/rc.log. Al revisarlo, notaremos que el script de inicialización de los agentes de gridcontrol no se ejecutó con éxito.

Para reparar el script hay que hacer los siguientes cambios.

- Ir al ORACLE_HOME del agente, por ejemplo: /u01/app/oracle/product/11.1.0/agent10g
- Luego entrar al directorio install/unix/scripts
- Copiar el archivo agentstup (cp agentstup agentstup.orig)
- Realizar las siguientes ediciones:

* En la línea 7, cambiar
executingUser=$USER
por
executingUser=$LOGNAME


Puesto que el script es llamado desde /sbin/init.d/gcstartup vía "su", el usuario que está ejecutando el script no es almacenado en la variable $USER

* En la línea 8, cambiar
SU=/usr/local/bin/sudo

por
SU=/usr/bin/su


En HP-UX, "sudo" no es instalado por default, para tenerlo disponible se debe instalar HP-UX RBAC (Role-Based Access Control)

* En las líneas 20 y 27, cambiar
if [ $executingUser = $installUser ] ; then

por
if [ "$executingUser" = "$installUser" ] ; then


Sin encerrar las variables, no se efectua la comparación de forma efectiva.

* En la línea 23, cambiar
$SU -u $installUser $ORACLE_HOME/bin/emctl start agent

por
$SU - $installUser -c "$ORACLE_HOME/bin/emctl start agent"


De esta forma, utilizamos el comando "su" directamente, de forma análoga, se debe hacer el cambio en la línea 30, pero esta vez el parámetro será "stop".

Para probarlo ejecuten /sbin/init.d/gcstartup start o /sbin/init.d/gcstartup stop

Con esto, ahora tendremos un agente funcional luego del reinicio de los servidores.