Arranque de Linux sobre HTTP con netboot.me

Hola a todos de nuevoEloy Mier 02debianubuntuopensusefedora

En este tutorial vamos a mostrar como podemos arrancar Linux sobre HTTP con netboot.me. Todo lo que el usuario necesita es una conexión a internet y un pequeño programa (gpxe) para poder arrancar la máquina. Este programa proporciona capacidad de arranque desde la red. netboot.me te permite arrancar las siguientes distribuciones: Debian, Fedora, OpenSUSE, y Ubuntu. Del mismo modo netboot.me proporciona las imágenes para llaves USB, CDs, e incluso para disquetes.

Obteniendo netboot.me

Vamos a la dirección http://www.netboot.me/gettingstarted y bajemos la imagen gpxe apropiada. So lo que quieres es arrancar desde el CD, simplemente descarga el fichero netbootme.iso y tuéstala en un CD, después de esto puedes arrancar desde el disco recién creado. En mi caso quiero usar una llave USB, así que el procedimiento es un pelín mas complejo. Yo he descargado el fichero netbootme.usb a mi escritorio:

netbootme_01

netbootme_02

Ahora debiéramos ver el archivo descargado en el escritorio, si pinchamos la llave USB la debiéramos ver también:

netbootme_03

Ahora abrimos una ventana de terminal (Aplicaciones > Accesorios > Terminal):

netbootme_04

En el terminal ejecutamos el comando

mount

Esto lo hacemos con el objetivo de encontrar el nombre de dispositivo asignado a la llave USB.

eloy@princesa:~$ mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,nosuid,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
lrm on /lib/modules/2.6.28-11-generic/volatile type tmpfs (rw,mode=755)
securityfs on /sys/kernel/security type securityfs (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
gvfs-fuse-daemon on /home/falko/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=falko)
/dev/sdf1 on /media/disk type vfat (rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush)
eloy@princesa:~$

En mi caso, el dispositivo en cuestión se corresponde con /dev/sfd (punto de montaje /media/disk). Antes de poder transferir la imagen netbootme.usb al dispositivo debemos desmontarlo. Para ello pulsamos el botón derecho del ratón sobre él y aparece la opción siguiente:

netbootme_05

También podríamos haber ejecutado en el terminal

umount /media/disk

Ahora ya estamos listos para transferir la imagen a la llave USB, para ello usamos en el terminal el comando

sudo dd if=~/Desktop/netbootme.usb of=/dev/sdf

Y con esto hemos terminado, ahora ya podemos arrancar otra máquina con la llave USB.

Ahora simplemente insertemos el medio (CD, llave USB o floppys) en el ordenador que queramos arrancar y asegurémonos de que ese dispositivo es el seleccionado en la BIOS para el arranque de la máquina.

Así es como se ve el menú de arranque de netbootme:

netbootme_06

Para instalar una distribución Linux en el disco duro, simplemente tenemos que ir a instaladores…

netbootme_07…y ahora en Linux

netbootme_08

La lista de distribuciones disponibles por el momento para la instalación son: Debian, Fedora, OpenSuse y Ubuntu. En mi caso selecciono Ubuntu…..

netbootme_09

…y seleccionamos la versión que queremos instalar (asegúrate de seleccionar la arquitectura adecuada para la máquina de destino):

netbootme_10

Netbootme ahora descargara todo lo que necesita para comenzar la instalación de la distribución seleccionada. La descarga se realiza desde Inet, asi que se paciente por que puede tardar un ratillo. Una vez tenga la descarga de los elementos necesarios comenzará el proceso normal de instalación de la distribución:

netbootme_14

Netbootme dispone también de una opción para el arranque de Sistemas Live (Live Oses)….

netbootme_11

….el problema es que no contiene distribuciones Live generales y conocidas como podria ser Ubuntu o Fedora. Posiblemente las distribuciones que proporciona no sea lo que buscamos, pero bueno, queda documentada esta funcionalidad y muy posiblemente en versiones sucesivas veamos en este apartado otras posibilidades.

Enlaces de interés

Pues nada más, hasta aqui hemos llegado por hoy. Saludos a todos.

Usando ramfs y tmpfs

linuxSi las velocidades de lectura/escritura no alcanzan tus necesidades, la solución mas barata y que menos tiempo te va a ocupar es simplemente colocar los ficheros mas pesados en memoria RAM. Las operaciones de lectura y escritura sobre la memoria RAM son significativamente mas rápidas que sobre cualquier sistema de ficheros basado en disco. Las transferencias de información sensibles a la entrada salida de disco, por ejemplo aquellas relacionadas con bases de datos, consiguen beneficios extremos simplemente moviendo los ficheros involucrados a sistemas de ficheros basados en memoria RAM.
¿Y por que la RAM? pues simplemente por que la memoria RAM es muy rápida. Los tiempos de acceso a la memoria trabajan en el nivel de nanosegundos al contrario que el disco mas rápido que opera a nivel de milisegundos. La memoria RAM no rota. Las unidades mecánicas si que lo hacen, lo que significa que los tiempos de posicionamiento son significativamente mas lentos que los equivalentes basados en memoria RAM. Por ejemplo, la memoria RAM DDR3 mueven datos a velocidades que pueden exceder 10GB/s. Por el contrario, uno de los discos mas potentes que se pueden encontrar actualmente de 15,000 RPM UltraStar de Hitachi, transfiere información entre unos lentísimos 119MB/s a 198MB/s sostenidos y a 600MB/s como pico.La RAM tiene un mayor tiempo medio entre fallos (MTBF -Mean Time Between Failures). Por el hecho de que la RAM no es un dispositivo mecánico, no disfruta de altos ratios de fallos de posicionamiento de disco, y todo ello proporcionando una esperanza de vida bastante mayor a la que proporciona una típica unidad de disco.
Existen dos tipos de sistemas de ficheros basados en memoria RAM: tmpfs y ramfs. Vamos a ver ahora como configurar un sistema de ficheros basado en RAM, algunos consejos generales de uso y como evitar los problemas mas comunes que se nos pueden plantear por el camino.

ramfs

Tmpfs y ramfs realizan su labor de forma muy diferente. Ramfs solo puede usar memoria del sistema, además no aparece con el comandodf –h, no tiene limitación de tamaño y no proporciona mensajes de error cuando se sobrepasa el limite de tamaño opcional. Por lo tanto, se pueden establecer limites en un sistema de ficheros ramfs pero no vamos a recibir ninguna advertencia cuando excedamos ese limite al igual que tampoco el sistema nos va a prevenir de ello.

Como ejemplo, la sintaxis normal para montar un nuevo sistema de ficheros es:

# mount –t fs_type device mount_dir

La sintaxis para configurar un sistema de ficheros ramfs de 200MB para una base de datos en el directorio /opt/data es la siguiente:

# mount –t ramfs –o size=200m ramfs /opt/data

Como se ha comentado con anterioridad, este sistema de ficheros no se verá con el comando df –h. La única forma de ver el sistema ramfs es usando el comando mount.

# mount

/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
ramfs on /opt/db type ramfs (rw,size=200m)

Si tratas de escribir mas de 200MB de información en este sistema de ficheros, la escritura se realizará sin problemas y no vas a recibir ningún mensaje de error en la operación respecto al tamaña del sistema. El límite de 200MB es un valor superfluo y no tiene efecto en el tamaño real ni en cuanta información puedes o no escribir en él. Este es el mayor problema de ramfs.

Debido a que los administradores de sistemas suelen ser un grupo bastante saturado de trabajo, en ocasiones dejan ficheritos sueltos en los sistemas de ficheros después de instalar parches, después de instalar software o después de rutinas de test sobre los propios sistemas. El sistema de ficheros ramfs podría proporcionar solución a este problema de una forma acorde. Todos aquellos ficheros marcados como no esenciales para el almacenamiento a largo plazo podrían residir en una zona de almacenamiento temporal (ramfs) hasta que esos ficheros no sean necesarios. Desmontando el sistema de ficheros ramfs lograremos que el sistema vuelva a la normalidad y no tendremos que preocuparnos de las tareas de limpieza que vienen después de las labores comentadas.

tmpfs

Los administradores de sistemas encuentran que para tareas que requieren información “valiosa!, tmpfs es una opción bastante mejor que ramfs. Ramfs tiene un tamaño definido, puede usar RAM o espacio de swap para almacenamiento y muestra mensajes de error cuando se sobrepasa el tamaño especificado. La sintaxis es igual a la de ramfs.

# mount –t tmpfs –o size=200m tmpfs /opt/data

El comando df –h muestra el sistema tmpfs montado como cualquier otro sistema de ficheros.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      360G  225G  117G  66% /
/dev/sda1              99M   25M   70M  27% /boot
tmpfs                 200M     0  200M   0% /opt/data

Y el comando mount muestra lo siguiente:

# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
tmpfs on /opt/db type tmpfs (rw,size=200m)

Cuando excedas los limites del sistema tmpfs montado, recibiras un mensaje del sistema “No hay espacio disponible en el dispositvo” informándote de que el sistema de ficheros esta lleno. El sistema de ficheros tmpfs se comporta exactamente igual que los sistemas de ficheros basados en disco excepto por su naturaleza volátil.

Tanto ramfs como tmpfs son un tipo de almacenamiento volátil. En otras palabras, si el sistema se cuelga, se reinicia o se apaga por cualquier motivo, la información contenida en ese tipo de sistema de ficheros es borrada. Únicamente por esta razón, se deben hacer copias periódicas de esta información a una ubicación permanente. Recordemos el dicho, “Seguro, rápido, barato; selecciona solo 2.” Usar sistemas de ficheros basados en RAM es rápido y barato pero no es seguro.

Saludos a todos y hasta la próxima.

Cómo limitar del uso de CPU de un proceso mediante cpulimit

Hola a todosubuntudebian

En este tutorial vamos a aprender como limitar el uso de CPU de un proceso con la herramienta cpulimit en Debian/Ubuntu. cpulimit es un programa muy simple que logra limitar el consumo de CPU de un proceso (expresado en porcentaje, no en tiempo de CPU). Esta herramienta puede ser muy útil para controlar procesos batch, cuando no nos interese que dichos procesos se coman gran parte de la CPU. La herramienta no actúa sobre el valor de nice ni tampoco sobre valores de prioridad de planificación, solo en el uso real de CPU del proceso. También, es capaz de adaptarse por si mismo a la carga global del sistema, de forma dinámica y rápida.

  1. Nota preliminar
  2. Correremos todos los comandos como root, por lo tanto hagamos loggin como root de forma directa (Debian) o usemos sudo (Ubuntu):

    sudo su

    Si tu máquina tiene 1 solo procesador puedes limitar el porcentaje de 0% a 100%, lo que significa que si por ejemplo seleccionamos un 50%, tu proceso no puede usar mas de 500 ms de tiempo de cpu en casa segundo. En cambio si tu máquina tiene 4 procesadores, el porcentaje variará de 0% a 400%, por lo tanto estableciendo el limite en 200% significará que no se use mas de la mitad de la potencia existente. En cualquier caso, el porcentaje es exactamente el mismo valor que puedes ver cuando corres top.

    cpulimit debe correr como mínimo con el mismo usuario que corre el proceso. Es bastante mas operativo que cpulimit corra con root, con el objetivo de que tenga mayor prioridad y mejor contros sobre el proceso.

  3. Instalando cpulimit
  4. cpulimit se encuentra disponible como un paquete para Debian y Ubuntu, por lo tanto puede ser instalado así:

    aptitude install cpulimit

  5. Usando cpulimit
  6. Echemos un vistazo a la página man de cpulimit para aprender a usarlo:

    man cpulimit
    NAME
    cpulimit – limits the CPU usage of a process

    SYNOPSIS
    cpulimit TARGET [OPTIONS...]

    DESCRIPTION
    TARGET must be exactly one of these:

    -p, –pid=N
    pid of the process

    -e, –exe=FILE
    name of the executable program file

    -P, –path=PATH
    absolute path name of the executable program file

    OPTIONS

    -l, –limit=N
    percentage of CPU allowed from 0 to 100 (mandatory)

    -v, –verbose
    show control statistics

    -z, –lazy
    exit if there is no suitable target process, or if it dies

    -h, –help
    display this help and exit

    EXAMPLES
    Assuming  you  have  started ”foo –bar” and
    you find out with top(1) or ps(1) that this process uses all your CPU time you can either

    # cpulimit -e foo -l 50
    limits the CPU usage of the process by acting on the 
    executable program file (note: the argument ”–bar” is omitted)

    # cpulimit -p 1234 -l 50
    limits the CPU usage of the process by acting on its PID, as shown by ps(1)

    # cpulimit -P /usr/bin/foo -l 50
    same as -e but uses the absolute path name

    AUTHOR
    This  manpage was written for the Debian project 
    by gregor herrmann <gregor+debian@comodo.priv.at> but may be used by others.

    Ahora supongamos que queremos limitar el proceso apache2 al 30%, tendríamos que hacer lo siguiente:

    cpulimit -e apache2 -l 30

    La opción -e toma el nombre del programa ejecutable. Puedes conseguir el nombre de la salida del comando top.

    En vez de usar el nombre del fichero ejecutable, podemos usar el ID de proceso con la opcion -p. Puedes obtener el ID de proceso de apache2 así:

    ps aux

    o

    ps aux | grep apache2

    Asumamos que el ID de proceso de apache2 es el 4510, para limitar la CPU a 30% debieramos hacer:

    cpulimit -p 4510 -l 30

    Tambien podriamos pasar a cpulimit el camino absoluto del ejecutable que queremos controlar con el parámetro -P. El nombre del ejecutable absoluto para apache2 es /usr/bin/apache2, por lo tanto podríamos usar el siguiente comando:

    cpulimit -P /usr/sbin/apache2 -l 30

    Nota: cpulimit correrá en primer plano hasta que pulsemos Ctrl+C, momento en el cual dejará de controlar el proceso.

  7. Enlaces de interés
  8. http://cpulimit.sourceforge.net/

Pues hasta aquí por hoy. Saludos a todos.

Tip: Ubuntu 8.10 eliminación Network Manager

Hola a todosubuntu

Hoy paso a comentar la ultima de las acciones que he realizado en Gnome.
Estaba cansado de ver el icono de Network Manager siempre en off, por que en mis máquinas nunca lo he usado.

Como muchos ya sabéis, en casa uso la asignación de IPs de forma estática, tal y como habréis visto en el articulo del REVO 3600.

Pues bien, Network Manager esta pensado unicamente para conexiones de red en máquinas donde el usuario hace login en la sesión X. En mi caso este tipo de solución no me interesa, pues personalmente, para poder administrar los equipos de forma remota necesito levantar la red sin iniciar la sesión, y es por esto que Network Manager nunca lo he usado.

Como decia, ya me canse del icono, asi que he eliminado tanto el proceso como la aplicación de gnome de la siguiente forma:

eloy@ubuntuEEEBox:~$ sudo aptitude purge network-manager-gnome
[sudo] password for eloy:
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Se ELIMINARÁN los siguientes paquetes:
network-manager-gnome{p}
0 paquetes actualizados, 0 nuevos instalados, 1 para eliminar y 0 sin actualizar.
Necesito descargar 0B de ficheros. Después de desempaquetar se liberarán 2789kB.
¿Quiere continuar? [Y/n/?]
Escribiendo información de estado extendido… Hecho
(Leyendo la base de datos …
167966 ficheros y directorios instalados actualmente.)
Desinstalando network-manager-gnome …
Purgando ficheros de configuración de network-manager-gnome …
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho

eloy@ubuntuEEEBox:~$ sudo aptitude purge network-manager
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Se ELIMINARÁN los siguientes paquetes:
network-manager{p}
0 paquetes actualizados, 0 nuevos instalados, 1 para eliminar y 0 sin actualizar.
Necesito descargar 0B de ficheros. Después de desempaquetar se liberarán 1982kB.
¿Quiere continuar? [Y/n/?]
Escribiendo información de estado extendido… Hecho
(Leyendo la base de datos …
167884 ficheros y directorios instalados actualmente.)
Desinstalando network-manager …
* Stopping NetworkManager… [ OK ]
Removing any system startup links for /etc/init.d/NetworkManager …
Purgando ficheros de configuración de network-manager …
Removing any system startup links for /etc/init.d/NetworkManager …
Procesando activadores para man-db …
Procesando activadores para libc6 …
ldconfig deferred processing now taking place
Leyendo lista de paquetes… Hecho
Creando árbol de dependencias
Leyendo la información de estado… Hecho
Leyendo la información de estado extendido
Inicializando el estado de los paquetes… Hecho
Escribiendo información de estado extendido… Hecho

La primera de las instrucciones es para eliminar la miniaplicación y la segunda elimina el servicio.

Saludos a todos.

Avahi (Zeroconf) en Linux: Para que leches sirve?

ubuntudebianavahi se instala por defecto en los sistemas Debian y Ubuntu, pero muy poca gente parece que lo usa.. Se supone que es un servicio de autodescubrimiento, pero ¿que servicios esta preparado para descubrir?

avahi corre mDNS más DNS-SD: ¿que es esto?, multicast DNS mas un servicio de descubrimiento DNS (DNS service discovery). Multicast DNS significa que cada máquina almacena sus propios registros DNS. Una dirección multicast (224.0.0.251) es usada por clientes que desean obtener la dirección IP de un nombre de máquina dado, y esa máquina responde a la petición del cliente con su dirección IP. DNS-SD usa la misma tecnología, pero adicionalmente a la informacion estándar DNS, las máquinas también publican informacion de las instancias de servicios: anuncian que servicios proporcionan y cómo contactar con esos servicios. Todo esto lo que pretende es que las máquinas puedan conectarse a los servicios sin la necesidad de que el usuario intervenga: esto se conoce como compartición sin configuración previa (Zeroconf sharing). Muy interesante para aquellos no se sienten cómodos realizando ajustes manuales o bien para aquellos que son un poco zánganos.

En verdad, hasta el momento no existe demasiado software que use realmente mDNS. Apple es el que mas ha hecho uso de él: el software de Apple se llama Bonjour, y gestiona impresoras, compartición de música mediante iTunes, compartición de fotografías mediante iPhoto, Skype, iChat, y un amplio abanico de servicios de software. No obstante, en términos de implementación técnica, avahi es un elemento de software excelente, y es capaz de hacer todo lo que hace Bonjour. Alguien ha sugerido que los equipos de desarrollo de Debian/Ubuntu dev teams están intentando estimular un poco mDNS con la inclusión de avahi en el sistema.

Por lo tanto, que puedes hacer con avahi en tu máquina Linux? Pues una posibilidad es usarla para compartir música a través de la red local. Particularmente, si tenemos algo de música en algún portátil que aparece o desaparece a medida que enchufamos o desenchufamos la máquina de la LAN, la opción del descubrimiento de fuentes de música puede ser una opción particularmente interesante. De hecho esta es la misma tecnología que Apple usa para iTunes.

Desafortunadamente, este sistema solo funciona en una dirección: rhythmbox puede conectar con la compartición de iTunes pero no puede descargarse nada de música (debido a un cambio en el protocolo desde iTunes 7.0). Esto es realmente frustrante y ademas es única y exclusivamente culpa de Apple. La compartición en la otra dirección funciona correctamente: si usamos el menú de “Plugins” para configurar la compartición vía DAAP (acuérdate de pulsar el botón de configuracion y habilitar el check box de compartir mi música), veras pronto disponible el contenido compartido.

Incluso se puede hacer que las máquinas en la LAN aparezcan como nombremáquina.local (esto puede ser util si no tienes un server DNS corriendo en la LAN). Como ejemplo para echar un vistazo a todos los servicios disponibles en la LAN podemos ejecutar avahi-browse -a -r -t (-a todos los servicios, -r resolución de los detalles del servicio, and -t finaliza una vez que tiene la lista completa)

Aquí tenéis un pantallazo de la orden anterior:avahi01

De forma similar a como CUPS gestiona el setup de una impresora, avahi debe en teoría por lo menos facilitar la labor de configuracion estableciendo la impresora como remota (mediante la configuración de la impresora en la máquina en la que esta conectada y con avahi instalado y corriendo). No obstante, parece que esto en la actualidad es problemático: necesitas picarte tu propio fichero ipp.service y añadirlo al directorio /etc/avahi/services/. La página man de avahi.services (5) es comprensible, pero desafortunadamente no existen ejemplos para las impresoras.

Por otro lado, para avahi existen otras posibilidades como escritorio remoto compartido y compartición de documentos.

Realmente parece interesante lo de establecer los nombres de host a nombrehost.local, pero no tiene mucho sentido que los compartidos de la librería de música no sean autodetectados (y menos sentido aun que no funcione para iTunes, pero esto realmente no es un problema de avahi). Igualmente, parece que la detección de impresoras no funciona todo lo bien que debiera. Si tenemos la posibilidad de comparar con la implementación que Apple hace de esta funcionalidad, podremos darnos cuenta de que la infraestructura necesaria parece que si que esta presente, pero el interfaz de usuario parece que no esta completo.

Por lo tanto y resumiendo, si, existen multitud de buenas opciones para explortar avahi, pero de momento parece que es un proyecto que necesita bastante trabajo por completar. Se puede entender que en el caso de Debian/Ubuntu estén haciendo una instalación por defecto para intentar animar la creación de mas software de usuario que pueda explotar las capacidades de avahi. Estoy seguro de que a muchos de nosotros nos gustará ver y usar las funcionalidades descritas en este artículo. El objetivo no es mas que ser tan útil como sea posible (especialmente para aquellos mas zánganos, o simplemente que tienen en uso un entorno LAN basado en Mac/Linux).

No obstante, y solo como comentario para la gente de Ubuntu, ¿merece la pena que miles de usuarios tengan instalado avahi en este momento cuando no existe software que realmente aprovecha sus capacidades?, no se….Desde mi punto de vista se podría haber planificado la funcionalidad para versiones sucesivas del Sistema Operativo y demás se podría por lo menos, haber dado la opción de que el usuario seleccionase la instalación o no del servicio ¿no es lo mas normal?

Saludos a todos y hasta la próxima.