SafeChildren Banner

Havoc Oracle Solaris Experts

jueves, 31 de marzo de 2011

Compilar OSSP UUID en OpenIndiana para PostgreSQL

Introducción
Aunque PostgreSQL tiene un tipo de datos UUID nativo, no existe implementación para la generación de los mismos. Por eso, es necesario utilizar una biblioteca que lo implemente, en nuestro caso OSSP-UUID.

Antes de Empezar
Lo cierto es que la Instalación de OSSP-UUID no comienza con buen pie, ya que la página oficial proporciona un servidor ftp para su descarga, pero ... no ha sido posible, así que he tenido que utilizar algún mirror para poder descargarlo.

Después de este pequeño contratiempo, ya podemos comenzar con la compilación, no exenta de problemillas, así que si no tenéis mucho tiempo y/o ganas, podéis utilizar la versión que he compilado tanto en 32bit como 64bits, aunque en la versión de 64bits no he incluido soporte para C++ ya que ha sido imposible.

Instalación desde el binario
Para aquellos que no tengáis tiempo, podéis instalar OSSP-UUID desde el binario descargando y descomprimiendo sobre el directorio </opt>
root@openzooey:/# cd /opt
root@openzooey:/opt# wget http://blog.sfchildren.com/blogger/postgres/ossp-uuid/openindiana/ossp-uuid-1.6.2-OpenIndiana-x86-32bit-64bit.tar.gz
...
root@openzooey:/opt# gzip -dc ossp-uuid-1.6.2-OpenIndiana-x86-32bit-64bit.tar.gz | tar xpf -
root@openzooey:/opt# rm ossp-uuid-1.6.2-OpenIndiana-x86-32bit-64bit.tar.gz
root@openzooey:/opt# cd ossp-uuid
root@openzooey:/opt/ossp-uuid# bin/64/uuid
2645be62-5b18-11e0-8701-8f5adc896ddd
root@openzooey:/opt/ossp-uuid# bin/uuid
2a08e9ca-5b18-11e0-9914-47107445423d
Instalación desde el código fuente
Para la instalación desde el código fuente, deberemos tener en cuenta que la compilación en 64bits no es posible realizarla utilizando el flag <--with-cxx> y debemos separar las bibliotecas de 64bits de las de 32bits utilizando <--bindir=> y <--libdir>.

Además, hay que hacer un ajuste para que nos enlace de forma correcta la biblioteca, utilizando CC="cc -m64" ya que libtool no lo pasa correctamente

Descargamos el Código Fuente
itily@openzooey:~$ wget http://www.mirrorservice.org/sites/ftp.ossp.org/pkg/lib/uuid/uuid-1.6.2.tar.gz
itily@openzooey:~$ gzip -dc uuid-1.6.2.tar.gz | tar xpf -
Compilación en 64bits
itily@openzooey:~$ cd uuid-1.6.2
itily@openzooey:~/uuid-1.6.2$ export CC="cc -m64"
itily@openzooey:~/uuid-1.6.2$ export CXX=cc
itily@openzooey:~/uuid-1.6.2$ export CFLAGS="-xO3 -xspace -Xa -xildoff -m64 -xc99=none -fast -native -xCC"
itily@openzooey:~/uuid-1.6.2$ export CXXFLAGS="-xO3 -xspace -Xa -xildoff -m64 -xc99=none -fast -native -xCC"
itily@openzooey:~/uuid-1.6.2$ ./configure \
     --prefix=/opt/ossp-uuid \
     --bindir=/opt/ossp-uuid/bin/64 \
     --libdir=/opt/ossp-uuid/lib/64

itily@openzooey:~/a/uuid-1.6.2$ pfexec make install
Compilación en 32bits
itily@openzooey:~/uuid-1.6.2$ export CC="cc"
itily@openzooey:~/uuid-1.6.2$ export CFLAGS="-xO3 -xspace -Xa -xildoff -m32 -xc99=none -xCC"
itily@openzooey:~/uuid-1.6.2$ export CXXFLAGS=$CFLAGS
itily@openzooey:~/uuid-1.6.2$ ./configure \
     --prefix=/opt/ossp-uuid \
     --bindir=/opt/ossp-uuid/bin \
     --libdir=/opt/ossp-uuid/lib

itily@openzooey:~/uuid-1.6.2$ pfexec make install
Comprobación de Funcionamiento
itily@openzooey:~$ /opt/ossp-uuid/bin/uuid -v 4 -n 4
2dadf532-fddf-4902-b89b-4354f208b882
441823a3-5f73-4a9e-be28-0ed394091f7f
926c0d16-99b4-4d72-b5c7-e91933a4818a
c3347042-de2b-4407-9ba5-03ea4ef5a984
itily@openzooey:~$ /opt/ossp-uuid/bin/64/uuid -v 4 -n 4
4376f895-750a-4eef-a865-f06a89baed61
0e4bf68c-7386-4329-9aaa-9e3c3cbc0672
cb5134d4-5cbb-401b-aa70-0edcce7f1a04
ccabcd16-3227-4b59-b0de-3bad19d988f9






Conclusion
Bueno, al principio parece un poco complicado, aunque, al final, no es más que una instalación normal y, como siempre, son los 64bits los que más problemas nos dan.

Ahora sólo nos queda compilar correctamente nuestro PostgreSQL 9 con Soporte par UUID e Instalarlo en OpenIndiana

Refrencias

domingo, 20 de marzo de 2011

Instalación de PostgreSQL 9.0.3 en OpenIndiana utilizando SMF y RBAC, Requisitos

Introducción
Ya hemos hablado varias veces de Cómo Instalar PosgreSQL en OpenIndiana y, también Cómo Actualizar PostgreSQL en OpenIndiana.

En esta ocasión, vamos a compilar PostgreSQL 9.0.3 en 64bits y, debido a las peticiones que tengo por parte de vosotros, también en 32bits.

Además, veremos todos los requisitos necesarios para poder gestionar PostgreSQL 9.0.3 en OpenIndiana utilizando Solaris SMF y, utilizar RBAC para su gestión.

Antes de comenzar
He visto que alguno de vosotros tenéis problemas con la forma de instalación de PostgreSQL sobre OpenIndiana, y, al parecer también con el role <postgres> o los pasos de compilación.

Todos los pasos de compilación de estos post se realizan sobre OpenIndiana 64bits utilizando para la instalación el formato de <Text Install> y siguiendo los pasos de Instalar OpenIndiana en VirtualBox Paso a Paso

Así mismo, os recomiendo -si no lo habéis hecho antes- leer el post sobre Actualización de PostgreSQL 9.0.2 64bits en OpenIndiana, donde explico los pasos de una forma más detallada.

Upgrade desde OpenSolaris
Si hemos hecho el <upgrade> desde OpenSolaris, tendremos el role <postgres> y las autorizaciones necesarias, si por el contrario hemos Instalado OpenIndiana directamente, no existirán y las deberemos crear.


Comprobación de las Autorizaciones
Debemos comprobar también que tenemos las autoriaciones necesarias para poder gestionar el servicio <postgresql_9> en nuestro sistema a través de Solaris SMF.
itily@openzooey:~$ pfexec  cat /etc/security/auth_attr|grep postgres
solaris.smf.manage.postgres:::Manage Postgres service states::
solaris.smf.value.postgres:::Change Postgres value properties::
Si no nos devuelve nada, entonces deberemos crearlo, para ello añadiremos las autorizaciones de la siguiente forma
root@openzooey:/# echo "solaris.smf.manage.postgres:::Manage Postgres service states::" >> /etc/security/auth_attr
root@openzooey:/# echo "solaris.smf.value.postgres:::Change Postgres value properties::" >> /etc/security/auth_attr

Verificación del Profile <Postgres Administration>
Por último, debemos comprobar que tenemos el <profile> de Administración de PostgreSQL definido en nuestro sistema, para ello, haremos
itily@openzooey:~$ pfexec cat /etc/security/prof_attr|grep Postgres
Postgres Administration::::auths=solaris.smf.manage.postgres,solaris.smf.value.postgres
Si no nos devuelve nada, deberemos crearlo de la siguiente manera:
root@openzooey:/# echo "Postgres Administration::::auths=solaris.smf.manage.postgres,solaris.smf.value.postgres" >> /etc/security/prof_attr
Comprobación del Role <postgres>
Debemos comprobar que nuestro sistema tiene el role <postgres> creado, sino, lo crearemos nosotros, para ello, simplemente buscaremos en la base de datos </etc/user_attr> y nos fijaremos en el valor de <type=> para comprobar que es un <role>, por ejemplo
itily@openzooey:~$ pfexec cat /etc/user_attr|grep postgres
postgres::::type=role;profiles=Postgres Administration,All
Llegado a este punto, debemos tener en cuenta que si no existe el <role> postgres, comprobaremos si es un usuario, ya que en OpenIndiana viene como Usuario y no como Role, para ello comprobaremos que existe en </etc/passwd>
root@openzooey:/# cat /etc/passwd |grep postgres
postgres:x:90:90:PostgreSQL Reserved UID:/:/usr/bin/pfksh
Como vemos, existe como usuario, pero no dispone del <profile> Postgres Aministration que necesitamos, así que vamos a añadirlo utilizando la opción "-P 'Postgres Administration'".

Si intentamos modificar el <profile> de un usuario utilizando el comando <rolemod> OpenIndiana nos contestará con un mensaje come este:
root@openzooey:/# rolemod -P 'Postgres Administration' postgres
UX: rolemod: ERROR: Users must be modified with ``usermod''.
Así que utilizaremos el comando <usermod> con la misma opción
root@openzooey:/# usermod -P "Postgres Administration" postgres
Comprobamos que tenemos asignado correctamente todo, y que las autorizaciones están definidas. Para ello, utilizaremos el comando <auth postgres> para las autorizaciones y <profiles postgres> para los profiles.
root@openzooey:~# profiles postgres
postgres:
          Postgres Administration
          Basic Solaris User
          All
root@openzooey:~# auths postgres
 solaris.admin.wusb.read,
 solaris.device.cdrw,
 solaris.device.mount.removable,
 solaris.mail.mailq,
 solaris.profmgr.read,
 solaris.smf.manage.postgres,
 solaris.smf.value.postgres
Ahora debemos dedicir si queremos seguir manteniendo el usuario, o por el contrario convertirlo a un Role y así, poder delegar las tareas de administración.

Mi recomendación es convertirlo a un role -si no lo es-, para ello, utilizaremos el comando <usermod> y la opción <-K type=role> para convertirlo, por ejemplo:
root@openzooey:/# usermod -K type=role postgres
root@openzooey:/# cat /etc/user_attr|grep postgres
postgres::::type=role;profiles=Postgres Administration
Configurar base de datos de <pfexec>
Por último, deberemos definir los comandos que el <profile> Postgres Administration puede ejecutar utilizando <pfexec>, para ello, deberemos de dar de alta.

Es muy importante que entendáis que estáis haciendo, para ello, os recomiendo leer la serie de artículos sobre Solaris RBAC y Modelo de Privilegios.

Con esto, ya tenemos la estructura para poder gestionar nuestro PostgreSQL con RBAC

Comprobación de la Arquitectura y Kernel
A continuación, vamos a comprobar que tipo de arquitectura tenemos: SPARC o x86 y sobre esta, qué tipo de kernel tenemos, de 32bit o 64bit.

Para verificar nuestra arquitectura, utilizaremos el comando <uname -a> por ejemplo:
itily@openzooey:~$ pfexec uname -a
SunOS openzooey 5.11 oi_148 i86pc i386 i86pc
Hay que tener en cuenta que el comando <uname> no nos va a decir si es o no una arquitectura de 64bits, ya que nos dirá <i386>. Esto es porque la diferencia de arquitectura es para SPARC o i386.

Para saber si nuestro kernel es de 32bit o 64bits, deberemos utilizar el comando <isainfo> con las opciones <-kv>, por ejemplo:
itily@openzooey:~$ pfexec isainfo -kv
64-bit amd64 kernel modules
Por lo tanto, ahora sabemos que estamos ejecutando OpenIndiana -o Solaris- sobre una plataforma x86 con un kernel de 64bit.
 
Instalación de PostgreSQL 9.0.3 desde Binarios
Ahora que ya sabemos qué arquitectura tenemos, y nuestro tipo de kernel, podemos seleccionar la versión de PostgreSQL 9.0.3 que deseemos.
Simplemente, descargaremos el binario que queramos (de 32bit o 64bit) y lo descomprimiremos en nuestro sistema, en </>
itily@openzooey:/# cd /
itily@openzooey:/# wget http://blog.sfchildren.com/blogger/postgres/9.0.3/openindiana/postgresql-9.0.3-x86-64bit-openindiana.tar.gz
itily@openzooey:/# gzip -dc postgresql-9.0.3-x86-64bit-openindiana.tar.gz | tar xvpf -
itily@openzooey:/# chown -R postgres:postgres /u01
itily@openzooey:/# chmod 750 /u01

Configuración de PostgreSQL en SMF
A continuación configuraremos nuestro servicio postgres para que sea controlado mediante SMF, para ello, debemos descargar el Manifest para Solaris y OpenIndiana SMF  PostgreSQL 9 y el Method para Solaris y OpenIndiana SMF PostgreSQL 9

# cd /lib/svc/method
# wget http://blog.sfchildren.com/blogger/openindiana/postgresql/9.0/smf/postgres_9
# chown root:bin postgres_9
# chmod 555 postgres_9
# mkdir -p /var/svc/manifest/application/database
# cd /var/svc/manifest/application/database
# wget http://blog.sfchildren.com/blogger/openindiana/postgresql/9.0/smf/postgresql_9.xml
# svccfg
svc:> validate postgresql_9.xml
svc:> import postgresql_9.xml
svc:> quit
# svcs -p postgresql_9
STATE          STIME    FMRI
disabled        9:29:24 svc:/application/database/postgresql_9:default_32bit
disabled       10:24:40 svc:/application/database/postgresql_9:default_64bit
Conclusion
En esta ocasión hemos visto algunos puntos necesarios para la instalación de PostgreSQL en OpenIndiana.

Además, gracias a los comentarios y dudas, creo que en esta ocasión he intentado despejar esas "dudas" que os asaltan,

Espero que os ayude y, sobre todo, aclarar los pasos de instalación.


Referencias

jueves, 3 de marzo de 2011

Cómo saber el project de un proceso concreto

Introducción
En alguna ocasión hemos necesitado saber en que project se encuentra nuestro proceso de Solaris, para ello, simplemente utilizaremos la opción <-o> del comando <ps> que nos permite obtener el formato de salida que queramos.

Por ejemplo, para ver los procesos del usuario <appserver> mostrando su PID, Comando y Project utilizaremos el siguiente comando:
root@h1000:/# ps -fu appserver -o pid,args,project
  PID COMMAND                          PROJECT
 1672 /usr/jdk/instances/jdk1.6.0/bin  asengine.appserver

Referencias

martes, 1 de marzo de 2011

Tomcat sobre SMF y RBAC en OpenIndiana y Solaris

Introducción
Ya hemos hablado del uso de Roles y Privilegios en Solaris y cómo aplicarlos a Apache Tomcat para que nos permita iniciar el servicio utilizando un usuario no privilegiado en un puerto inferior a 1024. En nuestro caso de Noviembre 2010 hablábamos de Cómo configurar HTTPS en Apache Tomcat utilizando Roles y Privilegios.

Sin embargo, si queremos gestionar nuestro servicio utilizando Solaris SMF, deberemos hacer algunos cambios en el archivo manifest de Apache Tomcat.

Asignación de Privilegios
Sabemos que para poder utilizar un puerto privilegiado (<1024) con un usuario no privilegiado, deberemos otorgarle el privilegio <net_privaddr>, y eso es lo que hicimos en nuestro post sobre Configurar HTTPS en Apache Tomcat modificando los privilegios en el role <appserver>
# rolemod -K defaultpriv=basic,net_privaddr appserver
 Sin embargo, cuando ejecutamos el servicio utilizando Solaris SMF este privilegio no está "activo" debido a que en nuestro archivo "manifest" no hemos defenido que los tengan, y por lo tanto, sólo tendrá los privilegios "basic".

Modificar el Archivo Manifest
Para añadir los privilegios que deseamos, en nuestro caso <net_privaddr>, simplemente deberemos incluir la propiedad "privileges" en <method_credential>, por ejemplo,
<method_context project='appserver'>
    <method_credential
        user='appserver'
        group='appserver'
        privileges='basic,net_privaddr'/>
</method_context>
De esta forma, estamos indicando a SMF que asigne el privilegio <net_privaddr> además de los básicos, y por lo tanto, ahora si que podemos iniciar nuestro Tomcat utilizando <svcadm enable>

Algunos Privilegios Más
Recordar que si utilizamos < ! >, entonces, en vez de asignar estamos eliminando el privilegio, así que vamos a utilizarlo para evitar que "por alguna problema" puedan llegar a heredarlos, por lo tanto, nuestro parámetro "privileges" será el siguiente:
privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr'
Añadimos Autorizaciones
Ahora vamos a unirlo al post de RBAC y Autorizaciones para Tomcat que escribí hace un tiempo, y veremos como podemos "encajar" todo en un mismo archivo manifest para utilizar: Autorizaciones y Privilegios

Nota: Es muy recomendable que echéis un vistazo al post de las autorizaciones, si no os acordáis ...

Por lo tanto, nuestra definición de Instancia quedará de la siguiente forma:
<instance name='default_64bits' enabled='false'>
 <method_context>
      <method_credential
          user='tomcat6'
          group='webrunner'
 privileges='basic,!proc_session,!proc_info,!file_link_any,net_privaddr'/>
 </method_context>
 <property_group name='tomcat_6' type='application'>
      <propval name='home' type='astring'
                value='/opt/www/tomcat6' />
      <propval name='jvmargs' type='astring'
                value='-d64 -Xms512m -Xmx512m' />
      <propval name='project' type='astring'
                value='tomcat6' />
      <propval name='java_home' type='astring'
                value='/usr/java' />
      <propval name='value_authorization' type='astring'
                        value='solaris.org.apache.smf.value.tomcat' />
 </property_group>
</instance>

Con esto ya tendríamos todo nuestro Apache Tomcat dentro de Solaris SMF y utilizando Autorizaciones. Podéis descargar el archivo manifest completo desde Manifest Tomcat Roles y Privilegios


Conclusiones
Aunque parece un poco lioso al principio, luego resulta muy sencillo y, a la larga, nos proporciona una gestión mucho más avanzada y simplificada.

Muchas veces os he recomendado el uso de Roles y Privilegios, pero, espero que con estos ejemplos "reales" podáis ver las ventajas que nos ofrece su uso.

Como siempre, vuestras sugerencias son bienvenidas :D


Referencias

lunes, 14 de febrero de 2011

Instalar OpenIndiana Paso a Paso en VirtualBox

Introducción
En esta ocasión vamos a hablar de una instalación de OpenIndiana desde cero, sin tener que pasar por OpenSolaris, aunque como veréis es muy parecida a Cómo Instalar OpenSolaris Paso a Paso

Al igual que sucede con al Instalación de Solaris Paso a Paso, utilizaremos el instalador de Texto, y por lo tanto, deberemos utilizar las teclas F2, F3 y F5 para <avanzar, retroceder y salir> según nos indique el instalador.

Como ya hemos hablado muchas veces de cómo crear una máquina Virtual en VirtualBox para Solaris/OpenSolaris, no voy a entrar en muchos detalles sobre ello, sólo a modo de recordatorio, es mejor utilizar una única CPU durante el proceso de Instalación y la memoria mínima debe ser de 780Mb.

Aquí os dejo un video de Cómo Instalar OpenSolaris Paso a Paso para los despistados :D

Descargar la Imagen
Como hemos comentado antes, vamos a Instalar OpenIndiana utilizando el instalador de Texto, ya que queremos tener una configuración de servidor, y por lo tanto, no necesitamos los paquetes de escritorio y/o interface gráfico. Esto hará que nuestra instalación requiera unos 2.5Gb de espacio, así que se instalará muy rápido.

Podemos descargar la imagen desde http://openindiana.org/download/ y seleccionaremos la Imagen Text Install CD http://dlc.openindiana.org/isos/148/oi-dev-148-text-x86.iso

Una vez descargada, deberemos darla de alta en nuestra máquina virtual para poder utilizarla como Disco CD de Arranque.

Proceso de Instalación
Una vez tengamos nuestra máquina virtual creada, comenzaremos con la instalación de OpenIndiana

1.- Configuración del Teclado. 
Seleccionaremos el tipo de teclado que tenemos, en mi caso seleccionaremos: Spanish(39), Spanish (21)




2.- Inicio del proceso de Instalación.
Seleccionaremos la opción 1 y pulsaremos INTRO para iniciar la instalación


3.- Pantalla de Ayuda
En esta pantalla se nos muestran las indicaciones de cómo funciona el instalador de texto. Se nos recuerda que debemos utilizar las teclas F2 para continuar <si estais en una VT podéis utilizar ESC+Número>

4.- Selección del Disco
En esta pantalla seleccionaremos el disco sobre el cual queremos instalar Solaris, y, como es nuestro caso nos indica que no tenemos ninguna partición Solaris creada -ya que está vacío-


5.- Tamaño de la Partición
En esta pantalla podemos seleccionar cómo queremos particionar el disco para Solaris, si lo queremos entero o sólo una parte.

Nosotros vamos a utilizar el disco íntegramente para Solaris, así que seleccionamos <Use the whole disk>

6.- Configuración de la Red
En esta pantalla podemos seleccionar la configuración Automática de la Red, o por el contrario no hacer la configuración ahora.

Yo, por costumbre muy antigua, nunca activo la Red de los sistemas mientras los estoy configurando, es una manía que tengo desde hace mucho tiempo para evitar que "alguien" me toque el sistema en su estado "más inseguro" y, por eso, hasta que no lo tengo configurado no levanto la Red.

Todo esto viene de Solaris 8, cuando la instalación activaba un montón de servicios, y por lo tanto, había más problemas, pero ... nunca está de más.

Así que, yo he seleccionado <none> para la configuración de Red, pero podéis utilizar la opción <Automatically> si disponéis de un servidor DHCP, este levantará el interface.


7.- Configuración de la Región
En mi caso he seleccionado <Europe>


8.- Selección del País
En mi caso he seleccionado <Spain>


9.- Franja Horaria
Como disponemos varias franjas horarias, me pide que selecciona una. Si no es vuestro caso, no aparecera.

10.- Ajuste de Fecha y Hora
Lo cierto es que nunca me preocupa mucho este paso, principalmente porque siempre Sincronizo el reloj mediante NTP en Solaris y OpenIndiana


11.- Creación de la Contraseña de <root> y usuario <privilegiado>
Este paso es importante, ya que a diferencia de Solaris, <root> pasa a ser un <role> y el usuario que creemos pertenecerá al role <root> y tendrá como autorizaciones <solaris.system.power>, solaris.network.autoconf,  es decir, puede ejecutar comandos para encender y apagar el sistema, y activar el sistema de configuración automática de red.

Si no sabéis como funcionan, os recomiendo leer RBAC Roles y Privilegios en Solaris.


12.- Resumen de la Configuración
En esta pantalla nos muestra un resumen de la configuración del instalador, el siguiente paso dará comienzo a la instalación de OpenIndiana, así que si queremos cambiar algo, podemos hacerlo pulsando <F3> o <ESC-3>


13.- Proceso de Instalación
Esto nos llevará unos 30min -más o menos- así que podéis tomaros un descanso ...



14.- Finalización Proceso
Una vez el proceso ha finalizado se muestra la pantalla para que reiniciemos el equipo y ya tendremos instalado -que no configurado- nuestro OpenIndiana


14.1.- Si algo falla
Lo cierto es que puede que el sistema de instalación falle -normalmente por una incompatibilidad de configuración-


Después de la Instalación
Una vez instalado OpenIndiana, vamos a configurar nuestro sistema para finalizar la instalación.

Finalizar la Instalación
Vamos a configurar  algunos parámetros del kernel, para ello, deberemos iniciar la sesión con el usuario que hemos creado -en nuestro caso itily- y después nos cambiaremos a <root> para asumir su rol.


Editaremos el número máximo de descriptores, los asignaremos a 8192 -en vez de 256- y algunos cambios menores.

 Pondremos un <Banner> en el acceso mediante ssh -puedes ver Cómo crear un Banner para SSH en Solaris 10-




 Activaremos la opción <Banner /etc/issue> en el archivo de configuración de SSH </etc/ssh/sshd_config>


Crearemos el archivo </reconfigure> para que nos reconfigure los dispositivos (no es realmente necesario, pero ... es una constumbre que tengo)


Configurar la Red y Actualizar la Distribución
Por último, vamos a levantar el interface y lanzaremos el comando <pkg image-update> para actualizar la imagen a su última versión.

Para ello, utilizaremos la tarjeta <e1000g0> con una configuración mediante DHCP para actualizar la imagen mediante el comando <pkg image-update>





Sincronizar el Reloj
Para finalizar, sincronizaremos el reloj del sistema utilizando un servidor NTP, en mi caso vamos a utilizar <hora.rediris.es>



Conclusiones
Bueno, hemos visto que OpenIndiana no difiere mucho de OpenSolaris o Solaris 11. Con este formato Paso a Paso, he querido mostrar que OpenIndiana no es tan fiero como lo pintan ...

Espero que os sirva, y como siempre, espero vuestras opiniones.