Maquinas virtuales como escritorios con VirtualBox y Debian Lenny

Hace un tiempo un colega me comentó una idea bastante extraña que tenía para máquinas virtuales, que podría ayudarle a administrar algunos sistemas bajo su dominio. Me había quedado pendiente publicar este post al respecto.

Viene más o menos así: un lote de computadoras utilizadas en forma alternada por varios usuarios, cada uno de los cuales requiere un conjunto dado de programas instalados; algunos de estos programas son incompatibles entre sí por diferencias de versiones, o presentan conflictos con el sistema operativo, o requieren privilegios de administración, etc.

Entonces pensó en una solución posible utilizando máquinas virtuales para cada usuario, donde tuviera instalado el software que requiere con los privilegios que requiere y con independencia del resto de los usuarios. De esta forma cada persona que llega debería ingresar al sistema, iniciar la aplicación de virtualización, seleccionar e iniciar su máquina virtual, y realizar el procesamiento que requiera. Al finalizar, debería apagar la VM y luego cerrar la sesión en el sistema. Lo mismo que hacemos todos aquellos que usamos VMs.

Pero – dijo – no estaría mal presentarle al usuario una lista de máquinas disponibles ni bien ingresa al sistema, de manera tal de no requerir iniciar la aplicación de virtualización. O mejor, iniciar la máquina virtual asignada al momento de iniciar sesión y presentarla al usuario como si fuera el escritorio real. Al apagar la máquina virtual, el sistema debería volver a la pantalla de login.

Bien, independientemente de que sea una buena o mala solución utilizar VMs, el concepto es interesante.

¿Es posible? Veamos si se puede realizar en forma sencilla con VirtualBox…

1. Preparando el Host

1.1. Instalar con el sistema operativo, en este ejemplo será Debian GNU/Linux 5.0 Lenny con una instalación base. Ni “entorno de escritorio”, ni “sistema estándar”, ni nada de eso: la idea es mantenerlo lo más sencillo posible.

1.2. Una vez instalado, generalmente desactivo la instalación de paquetes recomendados para no cargar el sistema con paquetes prescindibles. Para ello:

# echo "APT::Install-Recommends \"false\";" >> /etc/apt/apt.conf

1.3. Sobre el S.O. instalar Xorg, LXDE para la administración y GDM como gestor de sesiones. En realidad, es posible utilizar Openbox o Fluxbox solamente y prescindir de LXDE, pero a fines didácticos dejaremos el entorno completo.

# aptitude install xorg lxde gdm

1.4. Sobre esto instalar VirtualBox OSE y los módulos requeridos, que serán cargados automáticamente al iniciar el sistema real.

# aptitude install virtualbox-ose virtualbox-ose-modules-`uname -r`
# echo vboxdrv >> /etc/modules

2. Creando las cuentas de usuario

2.1. Ahora es el turno de crear las cuentas de usuario que tendrán acceso a las máquinas virtuales. Para este ejemplo definiremos tres usuarios que llamaremos asterix, obelix y getafix (algún patrón conocido):

# adduser asterix
# adduser obelix
# adduser getafix

2.2. Es necesario añadir estos usuarios al grupo vboxusers para que puedan utilizar las máquinas virtuales. Es posible hacerlo en la creación, pasando un parámetro al comando adduser, pero así queda bien explícito:

# adduser asterix vboxusers
# adduser obelix vboxusers
# adduser getafix vboxusers

2.3. Reiniciar el equipo para que tome los cambios. Alternativamente es posible cargar vboxdrv y e iniciar GDM. En cualquier caso, al finalizar se verá la pantalla de inicio de sesión. Opcionalmente puede configurarse el gestor gráfico para que muestre la lista de usuarios disponibles (Menú Acciones / Configurar el gestor de entrada).

3. Creando la máquina virtual para un usuario

3.1. Ingresar bajo el nombre de usuario cuya VM se desea crear e iniciar VirtualBox.

3.2. Allí definir una máquina virtual de la manera tradicional, nombrándola igual que el usuario (asterix, en este ejemplo) y estableciendo la memoria a utilizar, el sistema operativo, el tamaño de disco, etc…

3.3. Una vez creada la VM, iniciarla y proceder a instalar el sistema operativo deseado mas las aplicaciones requeridas. Adicionalmente, instalar las “Aplicaciones del huésped” (guest tools) en la máquina virtual.

3.4. Al finalizar, apagar la VM correctamente y cerrar VirtualBox.

4. Estableciendo el inicio de la máquina virtual al inicio de sesión

4.1 Crear un archivo de texto llamado .xsession en el home del usuario, conteniendo lo siguiente:

#!/bin/sh
exec VBoxSDL -vm $USER -fullscreen

4.2. Cerrar la sesión de usuario y volver a iniciar sesión. La máquina virtual deberá iniciar automáticamente en pantalla completa.

4.3. Para salir / cerrar, apagar del sistema operativo virtual, o bien pulsar CtrlDer+H, o CtrlDer+Q. El sistema deberá cerrarse correctamente y volver a la pantalla de inicio de sesión.

5. Crear las máquinas para los restantes usuarios

… procediendo de manera análoga al caso anterior.

6. ¡Listo!

Ya tenemos una VM Jukebox en el equipo, o algo por el estilo. Ahora a por una buena taza de café.

I. Algunas notas adicionales

I.1. Es posible utilizar VirtualBox 2.1.4 (en vez de 1.6.6), añadiendo el repositorio testing en /etc/apt/sources.list e instalando los módulos apropiados mediante module-assistant.

I.2. Se puede cambiar la configuración de inicio de cada VM desde el mismo script en .xsession. Por ejemplo, si se desea iniciar la máquina virtual con 64 MB de ram, el script deberá contener

exec VBoxSDL -vm $USER -fullscreen -m 64

o para iniciar con una imagen ISO en la unidad de CD virtual:

exec VBoxSDL -vm $USER -fullscreen -cdrom ARCHIVO.ISO -boot d

I.3. Para cambiar la tecla con la cual se administra la máquina virtual, por ejemplo con la tecla WIN Derecha (en vez de con Ctrl Derecha), utilizar:

exec VBoxSDL -vm $USER -fullscreen -hostkey 312 0

donde el valor del parámetro hostkey define la tecla a utilizar. Ejecutando el comando VBoxSDL -detecthostkey en una terminal es posible obtener el parámetro correspondiente al conjunto de pulsaciones deseado.

Bueno, todo esto para ver si la idea era posible usar una máquina virtual como escritorio. Pues resulta que sí, con algunos comandos y tres líneas de código (4.1).
Creo que no me olvidé ningún paso, en caso contrario, me avisan.

Suerte y saludos!

Actualización 2010: Charly (un maestro!) me ha hecho saber que en Ubuntu 9.10 Karmic, el archivo .xsession es ignorado totalmente, por lo cual al iniciar sesión el usuario vuelve al escritorio de Gnome en vez de ver iniciar la máquina virtual. No tengo idea qué es lo que tuvo en mente la gente de Ubuntu con este extraño comportamiento, pero ya hay varios bugs reportados [398300, 459122, 465349] con algunos parches posibles.

Postgf*ck

Este marzo vino movido, de ahí la ausencia de posts en el blog, y abril pinta peor… El de hoy es breve y sencillo: un rant a PostgreSQL, o al sistema de archivos, o al LVM, o a la alineación de los planetas.

La cosa viene así. Una aplicación externa escrita en Java que está funcionando hace más de un año se queja y tira excepciones por doquier. Para quienes están acostumbrados a la verbosidad de las excepciones en Java, buscar la fuente del problema en 13651 líneas del log de excepciones para 73 errores, no es algo del otro mundo; en realidad todo se resumía a lo siguiente:

org.postgresql.util.PSQLException: ERROR: fecha fuera de rango para
timestamp

Ésa, estimado lector. Ésa es la fuente del problema; lo demás era cháchara adicional. Así que del log de excepciones pasamos al log del motor de base de datos, a ver que tenía para declarar.

Efectivamente el error se repetía varias veces. Lo bueno es que postgres añade al mensaje de error la consulta SQL efectuada para que uno vaya viendo que es lo que salió mal. Lo malo, ahora, era la consulta. Nunca había visto en detalle las consultas que esa aplicación le tiraba al servidor de base de datos, pues como ya viene compilado todo y lo único que hay que hacer es ponerlo en el servidor de aplicaciones, ni me había molestado.

Resulta que la consultita SQL es un select de 60 líneas de longitud, líneas completas de izquierda a derecha, una sucesión de caracteres que cubría una pantalla completa y otra media. Quince SELECT unidos, algunos con subconsultas. Es la primera vez que veo semejante montón de uniones y subconsultas, fechas y comparaciones. De espanto, la verdad. De más está decir que si el sistema anda rápido es todo gracias al planner de ejecución del motor de base de datos.

El paso siguiente fue hacer un volcado de la base de datos para mantener como resguardo, de forma tal de poder restaurar la base al estado original en caso de necesitar efectuar modificaciones. Así que con

$ pg_dump -Ft -b appdb > appdb-snapshot.tar

nos quedó un archivo de unos cincuentitántos megas listo para recuperar.

La parte que sigue es una tarea detectivesca de descomponer la consulta para ver en cual de todas las fechas fallaba. Aquí viene bien el algoritmo de búsqueda dicotómica: partimos la consulta al medio y ejecutamos la primera mitad en el servidor: si falla está allí, sino, en el resto de la consulta.

Primera partición… Falló… Bien, partimos la mitad que falla… Falló otra vez… y así hasta dar con la comparación:

postgres=> SELECT codigo, detalle, vencimiento FROM elementos
WHERE vencimiento <= '2009-03-30';
ERROR: fecha fuera de rango para timestamp

Humm… 2009-03-30 es una fecha válida, como así también 2009-04-01, y sin embargo el error es el mismo. Ahora, con 2009-03-24 y previos anda perfecto, pero no con los posteriores. Se vé que tiene un tema con el 24 de marzo, hasta ahí todo bien, pero de fechas siguientes ni hablar.

Y más allá de ése, no tira ningún otro error, eh. Extraño por demás.

¿Estarán los dañados índices de la tabla? Luego de reconstruir los índices el error era el mismo. No, no están dañados los índices.

¿Será la versión de PostgreSQL que tiene un bug? Restauramos el backup en dos equipos diferentes, uno con la misma versión y otro con una superior, y en ambos casos todo anduvo de maravillas. No, no es la versión de postgresql.

Restauramos el backup en el servidor de producción y ahí lo tienen andando.
¿Moraleja? todavía la estoy buscando…

Debian Lenny ya es estable

Breve y conciso: Debian GNU/Linux 5.0 “Lenny” ha sido publicada.

El Proyecto Debian se complace en anunciar la publicación oficial de la versión 5.0 de Debian GNU/Linux, nombre en clave “lenny”, tras 22 meses de desarrollo constante. Debian GNU/Linux es un sistema operativo libre que soporta un total de doce arquitecturas de procesador e incluye los entornos de escritorio KDE, GNOME, Xfce y LXDE.

El anuncio con las principales características, las notas de la versión, y por supuesto, el link de descarga (les recomiendo por bittorrent).

Un viaje por los senderos de la memoria

El post de TuxRadar, un recorrido por las distribuciones realizado en el número 1 de la revista Linux Format, en mayo de 2000, me trajo a la memoria muy buenos recuerdos de cuando comencé a escribir mis primeros comandos en Linux. Fue con un SuSE Linux 5.1, en la época donde lo estándar era Win95, y no pensaba ni remotamente en tener una conexión a ‘Internés’ en casa.

Entonces viendo esas capturas de pantalla de TuxRadar, decidí desempolvar aquél CD y volver a experimentar con aquella vieja distro que ahora tiene unos 11 años. Hoy en día QEMU ofrece una base sólida sobre la cual es posible hacer fácil y rápidamente este tipo de instalaciones, pero si no fuera por las máquinas virtuales, tendría que buscar el hardware adecuado a la época para no tener incompatibilidades.

Así que con el CD en mano, una disco virtual de 1 GB y 128 MB de memoria “prestados”, procedí a iniciar QEMU para arrancar con la instalación del sistema.

Dejo aquí unas cuantas capturas de pantalla que fui tomando durante la instalación, algunas más ya con el sistema instalado, y otras de sitios web vistos con los navegadores disponibles para que tengan una idea de como lucía el linux desktop de antaño.

SuSE Linux 5.1, 11 años más tarde.


Boot desde el CD-ROM
Linux version 2.0.33, ya bastante avanzado, compilado con GCC 2.7


La pantalla de pre-instalación, desde el CD-ROM.


Esperando el Yet Another Setup Tool (YaST).


Eligiendo idioma, teclado y medio de instalación.


Preparando las particiones raíz y swap.


Un reinicio para escribir la tabla de particiones, y ahora eligiendo el sistema de archivos ext2 (no había otra opción).


Qué vamos a instalar? ABSOLUTAMENTE TODO !
Total… tengo todo un giga para desperdiciar !


Sólo 330 paquetes para instalar. Muy rápido en QEMU.


Algunas instrucciones para leer.
“Esta versión incorpora correcciones para el bug F00F en Pentium.”


Qué kernel desea instalar? Hay para todos los gustos.


Configurando el viejo LI(nux)LO(ader)


Hacemos una nueva entrada para iniciar el sistema.


Configurando la red (aunque me equivoqué y despues la tuve que cambiar).


Listo, ya está todo instalado?


Un nuevo usuario para romper el sistema.


Ratón para la consola, porque sin ratón no vive el hombre.


Login-al-fin
Have a lot of fun!


Un reinicio para arrancar desde cero.


Problemas con la red?


Iniciando YaST (another time)…


para arreglar el tema de la red.


Mensajes del kernel (parte I)


Mensajes del kernel (parte II)


Tenemos Midnight Commander para el sistema de archivos,


Pico y Vim para editar algun que otro texto.


Y Python 1.4 para ejecutar algún que otro script.


Navegando barrapunto con Lynx.


Google en Lynx.


La UNLu en Lynx.


El eterno configurador de XFree86 3.3.1


X funcionando, y con gestor de sesiones.


Primer login al entorno gráfico, un FVWM2


VIM y YaST en gráfica.


Un entorno bastante más familiar: FVWM95.


YaST (yet another time) para instalar KDE.

KDE, versión 0.10 o por ahí.
La verdad no cambió nada…!


KFM, el gestor de archivos de KDE pre-Konqueror.


Más navegador de archivos.


La ayuda de KDE.


Algunas utilidades más.


El centro de control de KDE…


… y opciones del escritorio.


El editor de textos KEdit


KCalc, KZip, Terminal.


El buscador de archivos. Suena familiar, no?


Porque no solo de XTerm vive el hombre.


Reproductor de audio, de CD, buscaminas y paint en KDE.


Qué recuerdos! El XBill.
Sálva a los equipos del tremendo virus Wingdows!


La ayuda de SuSE en Arena, el navegador web.


Cómo estamos de espacio libre…


Google por Arena… Hummm…


La web de este excelente libro se tiene que ver bien.
Structure and Interpretation of Computer Programs.


La UNLu por Arena (arena hasta en el fondo)


Irreconocible? es Youtube


Pagando impuestos a través de KFM.


Debian por KFM.


Google con KFM? no se con qué abrirlo!


Structure and Interpretation of Computer Programs en KFM (bastante mejor).


La web de Slackware, una de las páginas que mejor se muestra en KFM.

Bien, hasta aquí llegó el recorrido. Me queda el archivo de imagen para seguir rompiendo el sistema, que de verdad anda rápido con 128 megas, a pesar de estar emulado y sin aceleración alguna (sin KQEMU).

Si alguna vez habían visto estas pantallas, seguramente les habré traído gratos recuerdos. Y si es la primera vez que las ven, pues es un breve paseo por lo que era una distro de linux hace una década atrás.

Que les parece. Habrá avanzado la comunidad linuxera? Con todo esto, yo creo que sí.

Ciclo de charlas UNLUX 2008: Integrando Disciplinas

El Grupo de Usuarios de Software Libre de la Universidad Nacional de Luján (UNLUX) invita a toda la comunidad educativa, profesionales e interesados en Tecnologías de la Información al “Ciclo de charlas UNLUX 2008”.

Esta segunda edición tiene por objetivo difundir el software libre integrando las diferentes áreas de la comunidad y de nuestra Universidad (sectores estudiantiles, docentes y no docentes), y extender el conocimiento acerca de esta nueva tendencia tecnológica presentando sus virtudes desde diferentes puntos de vista.

La jornada estará compuesta por charlas técnicas e informativas, cuyos principios fundamentales son el fomento y la difusión del software libre como herramienta de uso cotidiano, y se llevará a cabo el sábado 22 de noviembre de 2008 en la sede central de la Universidad Nacional de Luján.

La apertura de las charlas se realizará a las 10:00 hs. y el cronograma de las mismas se extenderá hasta las 18:00 hs. aproximadamente, con un receso entre las 13:00 y las 14:00.

Como es usual, el encuentro es libre, gratuito y abierto a la comunidad. La única y humilde condición de acceso es TRAER MATE.

Encontrarán más información en el sitio web del UNLUX.

Esperamos contar con la participación de todos!!

Como saber si estamos corriendo Linux

… en la máquina del laburo:

mauro@stereo:~$ uptime
 09:31:25 up 115 days, 35 min,  3 users,  load average: 1.86, 1.18, 0.89

(aclaro que no es un servidor, sino la computadora de escritorio que utilizo todos los días)

Materiales del máster de Software Libre de la UOC

Esta es una del mes pasado que me había quedado en el borrador, sin publicar. Por suerte Marcelo había avisado en la lista del Unlux.

kokiperex cuenta en Barrapunto:

Me entero por la lista Linux de la PUCP de una buena noticia: la Universitat Oberta de Catalunya (UOC) ha liberado todos los materiales didácticos de su Máster oficial de Software Libre. Son catorce cursos y se pueden descargar desde su portal OpenCourseWare. Hay cursos de redes, seguridad, bases de datos, desarrollo de software, etc.

El material disponible corresponde a los cursos:

Debian Live Lenny Beta1

Daniel Baumann anunció hoy la disponibilidad de Debian Live Lenny Beta 1, la primer release “en vivo” oficial de Debian desarrollada por el grupo de desarrollo de Debian Live.

Las características principales son:

  • Distribución puramente Debian.
  • Cuatro versiones disponibles: una sin entorno gráfico y las restantes con escritorios GNOME, KDE y XFCE respectivamente.
  • Imágenes en formato CD, DVD y USB.
  • Imágenes para arquitecturas i386 y amd64.

Las próximas versiones incorporarán:

  • Un instalador, para tener en el disco rígido el mismo desktop que tenemos en el CD.
  • Una versión con los tres desktops en un sólo DVD (GNOME + KDE + XFCE)
  • Imágenes para arquitecturas powerpc y sparc.

Las imágenes están disponibles para descarga en el servidor de imágenes de Debian.

Este es un paso importante para crear un set de herramientas mediante las cuales efectuar comprobaciones de compatibilidad de Debian en hardware diverso, algo de lo que se estuvo hablando en la última DebConf.

Fabricantes de software y hardware van de la mano, por desgracia

Directo de Barrapunto:

Un usuario ha estado analizando las tablas DSDT que ofrece la BIOS dependiendo del sistema operativo que consulta. Ofrecen distintas tablas para XP/Vista, Windows 2000, 98/95… y Linux. Desafortunadamente, la que se ofrece para Linux viola la especificación de ACPI, lo que hace que las funciones de suspensión, hibernación, reinicio y otras se comporten erráticamente e incluso se produzcan bloqueos, checksum no válidos, bips continuos y kernel panics variados. Lo grave es que con un pequeño cambio para que a Linux utilice las tablas DSDT simulando ser Windows XP o Vista, el ACPI funciona casi al completo. ¿La respuesta de Foxconn? Sus productos no están certificados para Linux. Eso sí, presumen de cumplir las especificaciones ACPI y haber recibido una certificación de Microsoft.

El intercambio de emails con el fabricante de la bios no tiene desperdicio. El informe del bug en launchpad.

Slashdot también se hizo eco, aunque algunos minutos después.

Update 04/08/2008: Al final resulta que no era Foxconn la culpable! Sino la gente de AMI que les mandó un BIOS con defectos. Según el artículo, algunas placas madre de MSI y ASUS también comparten el mismo problema. Además, Foxconn ya publicó una actualización del BIOS que resuelve varios de los problemas detectados. Y, convenientemente, lo hizo en relativamente poco tiempo…

...
bad_hardware_vendors.append("foxconn")
...
bad_hardware_vendors.remove("foxconn")
bad_bios_vendors.append("ami")

Libro electrónico: Implementación de servidores con GNU/Linux

Vía Kriptópolis me entero de la culminación del libro “Implementación de servidores con GNU/Linux” cuyo autor Joel Barrios Dueñas ha publicado bajo licencia Creative Commons.

La verdad aún no he leído el libro en detalle, pero por la tabla de contenido parece muy, muy completo y constituye un tremendo aporte a la documentación sobre GNU/Linux en español.

Vaya mi agradecimiento y felicitaciones a Joel Barrios Dueñas por tamaña contribución.

Transcribo aquí la tabla de contenido:

1.¿Que es GNU/Linux?
2.Estándar de Jerarquía de Sistema de Archivos
3.Instalación en modo texto de CentOS
4.Instalación en modo gráfico de CentOS
5.Cómo iniciar el modo de rescate en CentOS
6.Iniciando el sistema en nivel de ejecución 1 (nivel mono-usuario)
7.Procedimientos de emergencia
8.Cómo optimizar el sistema de archivos ext3
9.Cómo configurar y utilizar Sudo
10.Cómo crear cuentas de usuario
11.Breve lección de comandos básicos
12.Funciones básicas de vi
13.Introducción a sed
14.Introducción a AWK
15.Permisos del Sistema de Ficheros
16.Cómo utilizar el mandato chattr
17.Creando depósitos yum
18.Uso de yum para instalar y desinstalar paquetería y actualizar sistema
19.Cómo utilizar RPM
20.Cómo crear paquetes con rpmbuild
21.Cómo asignar cuotas de disco
22.Introducción a TCP/IP
23.Introducción a IP versión 4
24.Cómo configurar correctamente los parámetros de red
25.Cómo configurar acoplamiento de tarjetas de red (bonding)
26.Cómo utilizar lsof
27.Cómo utilizar Netcat (nc)
28.Como utilizar Netstat
29.Cómo utilizar ARP
30.Introducción a IPTABLES
31.Cómo utilizar CBQ
32.Cómo configurar un servidor DHCP en una LAN
33.Cómo configurar vsftpd (Very Secure FTP Daemon)
34.Cómo configurar pure-ftpd
35.Cómo configurar OpenSSH
36.Cómo utilizar OpenSSH con autenticación mediante clave pública
37.Cómo configurar OpenSSH con Chroot
38.Cómo configurar NTP
39.Cómo configurar el sistema para sesiones gráficas remotas
40.Cómo configurar un servidor NFS
41.Cómo configurar Samba básico
42.Cómo configurar Samba denegando acceso a ciertos ficheros
43.Cómo configurar Samba con Papelera de Reciclaje
44.Cómo configurar Samba como cliente o servidor WINS
45.La ingeniería social y los [incorrectos] hábitos del usuario
46.Configuración básica de Sendmail
47.Opciones avanzadas de seguridad para Sendmail
48.Cómo configurar Sendmail y Dovecot con soporte SSL/TLS
49.Cómo configurar Cyrus IMAP
50.Instalación y configuración de SquirrelmMail (correo a través de interfaz HTTP)
51.Apéndice: Enviar correo a todos los usuarios del sistema
52.Cómo configurar clamav-milter
53.Cómo configurar spamass-milter
54.Cómo configurar un servidor NIS
55.Cómo configurar OpenLDAP como servidor de autenticación
56.Cómo configurar OpenLDAP como libreta de direcciones
57.Cómo configurar OpenLDAP con soporte SSL/TLS
58.Cómo instalar y configurar MySQL
59.Configuración básica de Apache
60.Cómo habilitar los ficheros .htaccess y SSI (Server Side Includes) en Apache 2.x
61.Cómo configurar Apache con soporte SSL/TLS
62.Cómo instalar y configurar Geeklog 1.4.x
63.Cómo configurar un servidor de nombres de dominio (DNS)
64.Cómo configurar Squid: Parámetros básicos para Servidor Intermediario (Proxy)
65.Cómo configurar Squid: Acceso por autenticación
66.Cómo configurar Squid: Restricción de acceso a Sitios de Red
67.Cómo configurar Squid: Restricción de acceso a contenido por extensión
68.Cómo configurar Squid: Restricción de acceso por horarios
69.Cómo configurar Squid con soporte para direcciones MAC
70.Apéndice: Listas y reglas de control de acceso para Squid
71.Cómo configurar un muro cortafuegos con Shorewall y tres interfaces de red
72.Cómo configurar SNMP
73.Cómo configurar MRTG
74.Cómo instalar correctamente Java a partir de paquete RPM
75.Cómo instalar la extensión (plug-in) Flash para Mozilla
76.Cómo configurar escáner en red
77.Usando Smartd para anticipar los desastres de disco duro
78.Glosario de mandatos básicos
79.AL Desktop
80.Ejercicios

Actualización 2009: Joel ha publicado la versión actualizada a agosto de 2009 de su libro “Implementación de servidores con GNU/Linux”.

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress