Linux: Instalar mdadm

Multiple Device Administrator, en resumen mdadm, es una solución de software que reúne un conjunto de herramientas para gestionar en una distribución Linux el uso de varios discos duros. Nos permite tener una solución de bajo costo si queremos crear un array de discos, un RAID, sin recurrir a hardware específico para esto. Nos permite utilizar configuraciones RAID 0, RAID 1, RAID4, RAID5, RAID6 y RAID1+0. También nos da la opción de crear arrays de discos «no raid» como una configuracion linear (concatenar unidades de disco para crear una unidad virtual más grande), multipath (en caso de que un disco falle permite el uso de otro, para alta disponibilidad) o container (un contenedor para crear varios dispositivos RAID).

En algunas distribuciones Linux, generalmente las destinadas a servidores como Fedora, CentOS o Red Hat Entrepise Linux, es habitual que mdadm venga preinstalado. En otras distribuciones generalmente podréis descargarlo desde los repositorios:

#En Ubuntu/Debian
apt-get install mdadm

#Red Hat y otras
#distribuciones que usan
#el gestor yum
yum -y install mdadm

#gentoo y otras
#distros con emerge
emerge mdadm

Más adelante hablaremos sobre configuraciones RAID en Linux.

Ultimate Boot CD Live: Creando un usb arrancable y activar la persistencia.

Hoy descubría la existencia de un interesante proyecto ¿Recordais Ultimate Boot Cd? Se trata de un disco de arranque con utilidades muy tipo Hirens Boot Cd. La cuestión es que han sacado una versión de Ultimate Boot CD basado en un LiveCD de Debian, para poder usar las aplicaciones desde entorno gráfico: Ultimate Boot CD Live. Incluye una colección de freeware, shareware y software libre para poder realizar tareas de reparación y recuperación del sistema que puedes ver listas en la página del proyecto.

El proyecto está guay, pero siendo prácticos a día de hoy muchos equipos, sobre todo portátiles, no tienen cd (mismo el caso del equipo desde el que estoy escribiendo) ¿cómo creamos un cd arrancable con Ultimate Boot CD Live? Pues sin mucha dificultad porque,a fin de cuentas, se trata de una distribución Live de Linux como otra cualquiera. En caso de que seais usuarios de Windows os tocará recurrir a opciones como Universal USB Installer o LinuxLive USB Creator. En caso de estar usando Linux, yo suelo ser partidario de Unetbootin. En todo caso los tres son bastante intuitivos, basta con descargar la ISO desde el enlace al proyecto y seleccionarla luego desde el programa que useis para crear el USB. Con LinuxLive USB Creator ya explicamos aquí en su día cómo hacerlo, y con el resto lo podéis encontrar con una simple búsqueda.

Captura de Pantalla de UBCDLive

Ahora vamos con la parte de la persistencia. En caso de que querais guardar cambios en el USB existe una forma de conseguir un giga de espacio para persistencia. Con el cd una vez creado tenéis que buscar el archivo persistence.bz2 y descomprimirlo, de forma que obtendréis un archivo llamado persistence de un giga de tamaño que es en el que se almacenarán los cambios. Además os tocará modificar el archivo isolinux/live.cfg y añadir toram persistence a los parámetros de arranque tal que así:

label live-486
   menu label ^Live (486)
   menu default
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root vga=normal toram persistence

label live-486-failsafe
   menu label ^Live (486 failsafe)
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal toram persistence

Y con esto ya estaría la opción habilitada, y vuestro pendrive listo para ayudaros a rescatar el sistema.

Comprimiendo en zip desde línea de comandos en Linux (Ubuntu/Debian)

Esta mañana a uno de mis equipos se empezó a ir un poco la pinza. No me digais por qué pero si intentaba comprimir utilizando la utilidad gráfica por defecto de Ubuntu no me lo permitía, se quedaba tirado el programa al hacerlo. Al final se arregló reinstalando, pero el caso es que en aquel momento no tenía conexión a internet para hacerlo y necesitaba crear un zip para pasarle una serie de archivos a una usuaria de Windows. Así que tocó usar la consola de comandos.

¿Cómo hice para comprimir la carpeta? Bueno la sintaxis del comando zip es

zip nombreDeArchivoFinal archivoacomprimir1 archivoacomprimir2…

En el ejemplo os dejo varias posibilidades comentadas:

#para incluir subdirectorios
#hay que añadir la opción -r
zip -r resultado.zip carpeta1

#con el comodín * podemos comprimir
#todos los ficheros dentro de una carpeta
zip resultado.zip *

#zip nos permite proteger el archivo
#con una contraseña, pero hay que
#ver que su algoritmo no es muy seguro
zip --password MI_CONTRASEÑA_ELEGIDA protegido.zip archivo1 archivo2 archivo3

#Una opción para codificar con más seguridad sería usar GPG
#primero comprimimos en zip
#luego codificamos la carpeta
#nos pedirá que insertemos la contraseña tras el comando GPG
zip -r resultado.zip carpeta1
gpg -c resultado.zip

#otra opción es usar openssl para encriptar
#primero comprimimos en zip
#luego codificamos la carpeta
#y nos pedirá password igual que antes
zip -r resultado.zip carpeta1
openssl aes-256-cbc -e -in resultado.zip -out resultado.zip.aes

En los ejemplos hemos usado criptografía de clave simétrica, pero siempre podeis investigar formas de utilizar algoritmos de clave pública/privada, ya que tanto gpg como openssl están pensados para poder hacerlo.

Configurando un sistema Debian para que monte en el inicio las carpetas compartidas NFS

Recordarás que hace un par de días hablamos sobre cómo configurar y montar una carpeta en red usando NFS en un sistema Debian. Ese artículo nos servirá de ejemplo para el presente ¿cómo hacemos que los clientes monten la carpeta desde el inicio?.

Vamos con un resumen rápido del artículo anterior (por si estás vago para leerlo): la ip del servidor es 192.168.1.2, la carpeta se llama /compartida y el punto de montaje es /mnt/nfs/compartida.

Bueno, basándonos en nuestro conocimiento de Linux sabemos que los discos y particiones montados en el arranque se configuran en el archivo /etc/fstab (abreviatura de File Systems Table) así que lo abrimos con un editor de texto (nano, gedit, vi, emacs… el que más o guste) y añadimos una nueva línea para montar. Cada una de estas líneas se compone de la siguiente forma:

  1. Primero la dirección de la unidad compartida, en este caso 192.168.1.2:/compartida
  2. Después va el punto de montaje, para el ejemplo /mnt/nfs/compartida
  3. El sistema de archivos, que en este caso es nfs.
  4. Las opciones son varias, y las puedes ver en la página oficial de Ubuntu. Para el ejemplo serán auto,noatime,nolock,bg,nfsvers=3,intr,tcp,actimeo=1200.
  5. La frecuencia con la que se usará dump para respaldar el sistema de archivos. Si se pone a 0 no se hará copia (más velocidad, menos seguridad).
  6. La frecuencia con la que fsck revisará el volumen en busca de errores. Si se deja a 0 no lo hará (más velocidad, menos seguridad)

Así que al final la línea que meteríamos, siguiendo el ejemplo del artículo anterior, sería tal cual esta:

192.168.1.2:/compartida /mnt/nfs/compartida nfs auto,noatime,nolock,bg,nfsvers=3,intr,tcp,actimeo=1200 0 0

Una vez guardados los cambios bastará reiniciar para comprobar que han surtido efecto

Carpetas compartidas en red en Ubuntu: Instalando y configurando una con NFS

Vamos a ver cómo compartir una carpeta utilizando una distribución de linux de la familia Debian (Ubuntu, Debian, Linux Mint). Y vamos a ver cómo hacerla mediante línea de comandos para que sea universal para todas las distribuciones (en las distros «no Debian» no cambiaría mucho la cosa, exceptuando la parte de instalar los paquetes el resto iría más o menos igual, creo)

El primer paso es instalar los paquetes nfs-kernel-server,nfs-common y rpcbind en el equipo que servirá la carpeta. Para ello usamos el siguiente comando:

sudo apt-get install nfs-kernel-server nfs-common rpcbind

Tras esto reiniciamos el equipo.En los equipos clientes, que se van a conectar con la carpeta, tenemos que instalar sólo los dos últimos paquetes, no es necesario el del servidor:

sudo apt-get install nfs-common rpcbind

Lo siguiente es crear la carpeta a compartir, en este caso se llamará compartida, y configurar los permisos para no tener problemas al acceder a ella. En este caso daremos a los usuarios permisos totales sobre la carpeta y no habrá grupo propietario, para que puedan hacer lo que les plazca.

sudo mkdir /compartida
sudo chown nobody:nogroup /compartida
sudo chmod -R 777 /compartida

Ahora tenemos que decirle al sistema qué carpetas vamos a compartir editando el archivo /etc/exports. La sintaxis es rutaCarpeta cliente_A(opciones) cliente_B(opciones). Tenemos múltiples opciones a la hora de definir a los clientes: una dirección ip o un rango de ellas, el nombre DNS del equipo o caracteres comodín (para dar acceso a cualquier equipo basta poner el comodín *).

En cuanto a las opciones son las siguientes:

  • ro(read-only): La carpeta compartida será de sólo lectura. Si no se define, es la opción por defecto.
  • rw (read-write): El usuario tiene permisos para escribir en la carpeta y hacer cambios en ella.
  • wdelay: El servidor NFS no escribe en el disco si espera otra solicitud inminentemente. Esto reduce los accesos a disco mejorando el rendimiento. Sólo funciona cuando usamos la opción sync.
  • no_wdelay: Desactiva wdelay.
  • sync: No permite responder peticiones antes de escribir los cambios pendientes. Se trata de la opción predeterminada.
  • async: Deshabilita sync. Esto mejora el rendimiento pero provoca que exista el riesgo de corrupción en los archivos si se produjese un corte de luz o una caída de la red.
  • subtree_check: Si el directorio compartido es un subdirectorio de un sistema de archivos mayor NFS comprobará los directorios por encima de éste, verificando sus permisos. Se trata de la opción predeterminada.
  • no_subtree_check: Deshabilita la característica anterior. Así se consigue agilizar el envío de la lista de archivos, pero reduciendo la seguridad del sistema.
  • root_squash: Evita que los usuarios con privilegios mantengan los permisos administrativos sobre la carpeta compartida, cuando se conectan remotamente.Es la opción activada por defecto
  • no_root_squash: Deshabilita root_squash.

Así que en nuestro archivo /etc/exports toca añadir la siguiente línea, con la que daremos permisos de lectura/escritura, activaremos la opción de sync y la de no comprobar todo el árbol superior a todos los clientes que se conecten:

#recordamos: primero la ruta
#después el cliente, en este caso * para todos
#y finalmente las opciones
/compartida *(rw,sync,no_subtree_check)

Y tras eso, toca reiniciar el servidor nfs:

sudo /etc/init.d/nfs-kernel-server restart

Lo siguiente será crear un punto de montaje para la carpeta compartida en los equipos cliente (vamos a suponer que la IP del servidor es 192.168.1.2):

sudo mkdir -p /mnt/nfs/compartida
#aunque ya dimos permisos a la carpeta
#también se los damos al punto
#de montaje
sudo chmod -R 777 /mnt/nfs
#y montamos la carpeta
sudo mount 192.168.1.2:/compartida /mnt/nfs/compartida

Y tras esto ya deberías poder crear y leer archivos en la carpeta compartida desde los clientes conectados en la red. Más adelante veremos algunas cosas sobre carpetas compartidas.

Instalando entorno LAMP en Linux Mint – Ubuntu – Debian

Este artículo viene a razón de que este fin de semana me va a tocar hacerlo, ya que espero poder formatear al fin este equipo cuyo rendimiento (uso Ubuntu 12.10 y Win Vista SP2) cada día va a peor.

Como el principal uso que le doy a este equipo es para desarrollo web (amén de ver alguna vez alguna película y almacenar música) pues tener un servidor en local para realizar pruebas se torna indispensable.

Aunque podríamos descargar y compilar a mano los componentes, a lo old school, vamos a aprovecharnos de un programilla disponible para la familia Debian (no olvidemos que Mint deriva de Ubuntu y Ubuntu de Debian) que nos permite instalar paquetes de software relacionados de forma coordinada como tareas. La herramienta se llama Tasksel y lo primero será instalarla:

sudo apt-get install tasksel

Y luego ejecutarla con permisos de administrador:

sudo tasksel

Una vez lanzado tendrás un menú de estos old school de moverte con el teclado, donde seleccionas la opción LAMP server y, tras eso, después de meter la contraseña para el usuario root de MySQL (la puedes dejar en blanco, pero mejor pónsela, si instalas algún cms te tocará) seguirá con el proceso de instalación.

Bueno, ahora nos queda instalar una herramienta muy útil que es phpMyAdmin:

sudo apt-get install phpmyadmin

Una vez descargado tenemos que crear un enlace simbólico con el servidor web y otro con nuestra carpeta home, tal que así:

sudo ln -s /usr/share/phpmyadmin /var/www/
sudo ln -s /var/www /home/usuario/www

Ahora ya tenemos todo instalado. Si entras en http://localhost/phpmyadmin debería salirte la ventana de acceso donde deberías poner el nombre de usuario y la contraseña que diste durante la instalación.

Así ya tienes montado tu entorno LAMP. A ver si mañana me lanzo con un tutorial sobre instalar XDebug.

Debian vs Mint vs Ubuntu: ¿qué Linux usar?

Bueno, lo justo sería comenzar diciendo que Linux no se reduce a estas tres distribuciones hay más «familias Linux». Pero como usuario estoy más familiarizado con las distribuciones de la familia Debian (puede que algún día me vaya al lado Red Hat y me saque un Fedora vs Red Hat vs openSuse vs Oracle Linux) voy a centrarme en esta rama y en sus tres distribuciones más populares.

  • Debian: Lo justo es comenzar con la madre, con Debian. A fin de cuentas los otros dos derivan de este. El desarrollo de Debian se fundamenta en dos pilares: estabilidad y seguridad. Cada actualización y nuevo paquete conlleva un trabajo muy exhaustivo de testeo, un profundo escrutinio de su código en busca de fallos. Esto nos garantiza una enorme estabilidad, pero ralentiza varios meses la llegada de actualizaciones y paquetes, lo que puede ser muy coñazo para el usuario doméstico, que tal vez se encuentre con problemas varios de drivers. He conocido a ingenieros que han acabado desquiciados por problemas de drivers con Debian en sus portátiles. Debian es un gran sistema operativo, pero no es precisamente fácil de instalar y configurar, y es más recomendable para usuarios con una buena base de conocimientos y para su uso en cuestiones profesionales y laborales.

    Debian, la madre
    Debian
  • Ubuntu: Un sistema radicalmente opuesto a Debian en muchos puntos, a pesar de derivar de él, por tener una filosofía muy distinta. Canonical pretende ser la Apple del software libre, por lo que Shuttleworth decidió que Ubuntu tendría que ser el Linux más bonito, más fácil de instalar y más fácil de utilizar. Y ciertamente Ubuntu con el escritorio Unity es muy fácil de usar. Lo instalas prácticamente a base de pulsar «aceptar» en varios pantallas e incluso puedes instalarlo desde Windows como si fuera un programa. Tienes un centro de software del que descargar todo tipo de programas y juegos recomendados por Canonical, algunos de pago y otros de gratis, sin contar con el caramelito de que Valve haya sacado Steam para Ubuntu. Obviamente todo esto trae consigo algunos problemas, como la inclusión a traición de publicidad en tus búsquedas, la inclusión de drivers privativos en el sistema operativo o el exagerado consumo de recursos que el escritorio Unity le va a provocar a tu equipo. En resumen, un Linux ideal para gente con pocos conocimientos de informática, que valore la comodidad por encima de todo, o para gente que nunca haya usado Linux.

    Logotipo de Ubuntu
    Ubuntu
  • Linux Mint: El más joven de los tres y el que más rápido ha escalado en niveles de popularidad. Existen dos versiones de Mint, la basada en Ubuntu (el Linux Mint normal) y la basada en Debian. En este caso nos centraremos en la versión basada en Ubuntu porque es con la que he trabajado. Mint nos da el justo medio entre la sencillez de Ubuntu y la estabilidad de Debian. Es muy fácil de instalar, tanto como Ubuntu o más, y es más estable que Ubuntu (claro que esto es lógico, ya que al ser una distribución basada en Ubuntu aprovechan para parchear todos los errores de la distribución en la que se basan). Además, su escritorio basado en GNOME es mucho más ligero que Unity, no tiene tanto driver privativo de por medio y es compatible con los binarios de Ubuntu. A día de hoy, para mi, es el ganador de la comparativa, al menos para el desarrollador y el usuario con un conocimiento medio.
    Logotipo de Linux Mint
    Linux Mint

     

En fin, con esto termino la comparativa entre los tres. Tres sistemas opeativos libres, totalmente funcionales. He de puntualizar también que me he basado en las últimas versiones a día de hoy y trabajando con sus escritorios por defecto, ya que a cualquiera de ellas le puedes incorporar otros como XCFE, LXDE, KDE… en fin, eso ya es cuestión de gustos.

Instalar KDE en Debian NetInst

Lo prometido es deuda, y tras el instalar KDE en Ubuntu toca la instalación en Debian, como prometía en el artículo. Por cuestiones «técnicas» para el experimento me vi obligado a utilizar Debian NetInst, una versión compacta de Debian (la versión i386 ocupa sólo 180 megas) que sólo incluye los paquetes básicos. Lo cual para este experimento no es un handicap, ya que el entorno gráfico de escritorio lo vamos a meter por nuestra cuenta.

Bueno, tras instalar Debian y todos los paquetes básicos (siguiendo, por ejemplo, la guía de instalación que viene en la página oficial de Debian), sin entorno de escritoriom desde la versión compacta, tocará ejecutar la siguiente línea para instalar KDE:

# aptitude install kde-full kde-l10n-es

Tras acabar la instalación tocará loguearse y agregar repositorios a /etc/apt/souces.list, y una forma muy facilita es utilizar esta página que te facilitará mucho la vida, con un formulario que te generará el código que has de pegar en la lista de sources.list y te dirá qué comandos debes ejecutar.

Crear un USB arrancable con un linux usando Lili USB Creator

Lili USB Creator, abreviatura de Linux Live USB Creator, es un software gratuito para Windows que permite crear un usb arrancable de Linux fácilmente, desde un archivo .zip, una imágen .iso, un cd-rom o hasta descargando desde una red.

El primer paso, claro está, es descargar el software desde su página oficial. Una vez instalado necesitas una distribución de Linux (he hecho la prueba con Wifiway, Lubuntu 12.04, Debian 6.0 y Galinux, todos desde .iso menos Galinux, que tenía un cd que me habían regalado cuando empecé el ciclo) y un USB con el tamaño suficiente. La interfaz es muy intuitiva: Selecciona el dispositivo USB, la «fuente» (el archivo donde esté la distribución de Linux), espera mientras comprueba la validez de la misma, tienes la opción de «Tamaño de persistencia» para Virtual Box (que no he podido probar porque en Windows Vista/Windows 7 no va) y, tal vez el punto que requiere una poca de explicación, el paso de las opciones:

  1. Ocultar archivos creados: Bueno, esto requiere poca explicación. Si quieres crearlos como archivos ocultos puedes, si no pues será visibles en Windows.
  2. Formatear dispositivo en FAT32: Borrará los datos que tengas en el pendrive y formateará este como FAT32. Recuerda que el tamaño máximo de archivo en este formato es de 4GB y de volúmen creo que la propia Microsoft no recomienda usarlo en volúmenes mayores de 32 gigas (aunque en teoría podría abrirlos de 2TB). El caso, que si es un pen de 4GB es recomendable, y si es mayor pasad de todo.
  3. Activar Iniciar LinuxLive en Windows: Si seleccionas esta opción te permitirá virtualizar el Linux desde Windows sin necesidad de que instales un software de virtualización en tu equipo. Aunque tiene un poco de trampa, como te explico más abajo.

En fin, tras esto el paso 5: pulsáis el botón de creación y a vivir.

Una vez creado tenéis dos opciones: usarlo como USB arrancable o virtualizar en vuestro Windows (si lo habéis elegido como opción en el punto 3 del paso 4).

Para usarlo como USB arrancable tenéis que entrar en la BIOS, o en equipos más modernos en la selección de arranque (generalmente pulsando F2 o F8 durante la primera fase del arranque, antes de que empiece a cargar el SO), y con el USB puesto elegir Arranque desde USB (obviamente la opción estará en inglés). No todas las placas base que tienen USB te permiten arrancar desde él, así que igual no tienes esta posibilidad.

Una vez arrancado podrás elegir si quieres probarlo en modo Live, para testearlo en tu equipo sin hacer cambios, si quieres ejecutar un test de memoria o si quieres instalarlo como tu nuevo sistema operativo. Bueno, las opciones que tendrías también desde un cd de arranque, vamos.

Si habéis elegido la opción de LinuxLive en Windows debéis entrar en el pen y buscar la carpeta VirtualBox, dentro tendrás dos ejecutables: Virtualize_this_key.exe y VirtualBox.exe. El primero lanza el Linux de golpe, ejecutado a través del Virtual Box y el segundo abre la interfaz completa de Virtual Box. Ya decía arriba que lo de «sin necesidad de tener instalado un software de virtualización» era un poco trampa, porque lo que hace este programa es meterte en el pen una versión portable de Virtual Box con la que trabajar.

En cualquier caso, se trata de una buena herramienta de creación de USB de Linux desde Windows, que merece la oportunidad de que la pruebes.

¿Qué tamaño doy a la partición boot?

Si ayer os hablaba de qué tamaño dar a la partición SWAP durante la instalación de Linux, hoy vamos con otra partición: La boot. En el caso de /boot no es obligatorio definirla, pero si la ubicas en una partición primaria al principio (después de la partición SWAP, que se recomienda que sea la primera) y le pones como sistema de archivos ext2 (más ligero que ext3 o ext4, que son los que habitualmente utilizaremos para el resto) lograrás una mayor velocidad de arranque. Que es posible que con ordenador muy potente no notes ninguna diferencia. En /boot se almacena el núcleo del sistema operativo y el sistema de arranque, así que no requiere mucho espacio.

Esto en caso de sistemas domésticos, porque cuando se trata de servidores con múltiples discos intercambiables o sistemas raid sí que puede volverse totalmente obligatorio tener el boot separado.

En todo caso ¿Qué tamaño le damos a /boot? Pues va dependiendo de la distribución de Linux y de si tenemos pensado tener varios kernels (ya sabéis que hay gente con el vicio de recompilarlo), pero en principio vamos a suponer un uso normal de usuario doméstico.

Todo esto lo comento basándome en lo leído en documentación y foros varios, y en alguna prueba doméstica con máquinas virtuales: para Ubuntu desde 10.10 hasta 11.10 dicen que 150 megas van sobrados, pero que para 12.04 mejor 250 . Para Debian 6 leo que se recomiendan 200. Para Fedora dicen que hasta  350, para ArchLinux leo que entre 100 y 150… Si tenéis un disco duro amplio lo mejor es no racanear y con 350 te aseguras no tener ningún problema de falta de espacio. La clave, como comentaba antes, está más en el sistema de archivos (ext2) y en ubicarla justo tras la SWAP.