Actualización a Ubuntu 14.04 Errores encontrados

Ayer realizé una actualización de  mi Ubuntu 13.10 a 14.04. Me estaba resistiendo por evitar los típicos problemas de actualización brusca de versión, pero veía que 14.10 se aproxima y el cambio ahora sí que iba a ser brusco. Los problemas que me he encontrado en este upgrade han sido varios:

  • Gnome shell 3.10. No me atrevo con 3.12 por ser inestable.
    • He tenido que reactivar todas los extensiones de nuevo
    • Algunas extensiones que usaba ya no funcionan
  • Chrome/Chromium ya no soporta NPAPI Pipelight plugins, así que no puedo instalar directamente desde https://extensions.gnome.org/
    • Usar firefox para solucionarlo.
  • Apache 2.4.7 no carga bien el módulo mpm-itk. Parece un problema de paquetes ubuntu.
    • cargar mpm-prefork también. mpm-itk es parte de mpm-prefork.
      • a2dismod mpm-itk && a2enmod mpm-prefork && a2enmod mpm-itk
  • Al cargar el escritorio hay algún problema con gnome-settings-daemon y no lee el archivo monitor.xml, así que se pierde la posición de como tengo montados mis tres monitores. Como workarround, he programado al inicio del escritorio que mate gnome-settings-daemon
    • pkill -9 -f gnome-settings-daemon

      Gnome Shell

      Gnome Shell

Reflexión

Soy usuario de Linux desde 1999. He pasado temporadas por Slackware, Suse, Redhat, Mandrake, Mandriva, CentOS, Debian y Ubuntu. Desde 2006 aproximadamente,  me decanté como usuario de escritorio de Ubuntu (y desde 2010, para servidores también) por ser la menos dolorosa en sus upgrades. El que he realizado en esta ocasión ha sido para actualizar la 13.10, que a su vez actualizó desde una 13.04,  una 12.10 y así nos remontamos hasta la 8.04 que tenía instalado en una placa con Atom por lo que he cambiado hasta de hardware, evolucionando a un i5 con tres monitores y una nvidia como gráfica y la verdad, no he formateado ni una vez. No se si con windows se puede pasar de por ejemplo XP a Vista, 7, 8 y migrar de hardware, pero nunca lo había oído… aunque estoy tan desconectado de esa plataforma que cualquiera saber. En cualquier caso, no todo es perfecto. En cada upgrade a una release distinta he tenido que arreglar algunos problemas bloqueantes de cierta gravedad que afectaban a la visualización gráfica, el sonido o a servicios y se han quedado por el camino software de mi gusto que ha dejado de mantenerse, algunas veces sustituido por herramientas mejores y en otras, ha quedado un amargo vacío. En este upgrade, una vez solucionados los problemas, puedo decir que mi ubuntu sigue con muy buena salud. Larga vida a los sistemas operativos de escritorio libres.

Disco SSD en servidor

Tengo que montar un nuevo servidor. Como no necesito grandes cantidades de storage, me he decidido por un “disco” SSD. Se suponen que son muy rápidos, así que espero se note el rendimiento. Por lo pronto he hecho unos mini benchmark de lectura/escritura comparándolo con un SATA3 de 7k revoluciones.

Resultados SSD

Lectura

root@ns354000:~# hdparm -Tt /dev/md2

/dev/md2:

Timing cached reads: 27268 MB in 2.00 seconds = 13648.40 MB/sec
Timing buffered disk reads: 792 MB in 3.01 seconds = 263.35 MB/sec

Escritura

root@ns354000:~# dd if=/dev/zero of=/tmp/output2 bs=8k count=10k; rm -f /tmp/output2
10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 0.0398274 s, 2.1 GB/s

Resultados SATA3 7K rpm

Lectura

root@odysseus:/home/freemem# hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 20206 MB in 2.00 seconds = 10111.98 MB/sec
Timing buffered disk reads: 462 MB in 3.00 seconds = 153.88 MB/sec

Escritura

root@odysseus:/home/freemem# dd if=/dev/zero of=/tmp/output bs=8k count=10k; rm -f /tmp/output
10240+0 records in
10240+0 records out
83886080 bytes (84 MB) copied, 0,0496915 s, 1,7 GB/s

No voy a sacar conclusiones hasta que no haga comparativas de rendimiento con aplicaciones instaladas. Al menos ya me he quitado la curiosidad. Por lo pronto, parece que el aumento es considerable.

 

 

 

Problemas con Acer Aspire One D250, Ubuntu Lucid Remix y grub

Hace unos días me prestaron un Acer Aspire One D250, muy mono por cierto, al que le instalé desde un pendrive (¿quien carajo quiere ya los CD/DVDs?) la Ubuntu 10.04 Remix para NetBooks. La verdad es que probé cuatro distribuciones, la Ubuntu Lucid desktop, Jolicloud (que no me gustó nada), Meego (simplemente no me funcionó) y la Lucid para netbooks, que es la que tiene ahora. Toda la instalación fue muy transparente, rápida y sencilla, hasta que decidí reiniciar. Simplemente, no arrancó. Hice mil pruebas y nada. Estaba claro, algo pasaba con el grub. Googleé un poco y encontré gente con el mismo problema pero sin solución. Al final, rejunté toda la información para darle arreglo y este es el resultado:

Lo primero es arrancar con el pendrive en modo live y acceder a un terminal. La idea es cambiar un parámetro del grub:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash hpet=force nolapic"

pero antes hay que acceder a la partición del disco donde está y activar los cambios con update-grub. Para ello, en el terminal teclear todo esta lista de comandos

sudo fdisk -l
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /dev/pts /mnt/dev/pts
sudo chroot /mnt
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo grub-install /dev/sda

Si falla esto último comando, reinténtalo de esta forma

sudo grub-install --recheck /dev/sda

Ahora sí, vamos a modificar la confi del grub

gksudo gedit /etc/default/grub

Y añade esto a la línea GRUB_CMDLINE_LINUX_DEFAULT

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash hpet=force nolapic”

salva y

sudo update-grub

y ya acabando

exit
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt

Ahora arranca de nuevo y ya debería funcionar. Espero os sirva.

Bitácora sobre NetSurvibox y sus nuevos modelos

Para todo aquellos que trabajen con los legendarios routers/firewall de IronGate, NetSurvibox266, deciros que hay una bitácora nueva sobre esta familia de dispositivos, igseguridadyredes.com. Y digo familia porque recientemente la han ampliado con dos modelos nuevos, el NetSurvibox 400 y el 667. He tenido la suerte de probarlos y son una maravilla, de hecho tengo un 400 en el salón ;-)

El 667 es el hermano mayor del NSB400. Ofrece las mismas características, pero su procesador funciona a 667 Mhz, y  tiene 256MB de RAM, aumentando el rendimiento y las prestaciones (más túneles VPN).

Se trata de un router ideado para la seguridad en la red de las PYMES, actuando como firewall, antivirus  (POP3) y filtrador de contenidos web. Ofrece una interfaz muy sencilla (similar a la del NSB266) basada  en objetos con la que podrás activar/desactivar dichos servicios de la forma más cómoda y rápida posible.

Dispone de 5 puertos de RJ-45 (4 de LAN en switch y 1 de WAN), y permite la posibilidad de añadirle (se vende por separado)  un módulo de ADSL2+ y una tarjeta minipci para conexiones Wireless (se vende por separado), compatible con los estándares de red inalámbricos 802.11 b/g/n, con la que pueden crearse dos redes inalámbricas distintas (por ejemplo, una de hogar y otra de trabajo), lo que supone una plataforma ideal para teletrabajo.

Con este dispositivo se pueden configurar hasta 40 VPNs, estáticas y/o dinámicas.

Dispone de brazos para montarlo en un armario de telecomunicaciones (rack) y ocupa 1,5 U (6cms) de altura.

Su músculo es de un Intel ARM IXP435 a 667Mhz con 256Mb de RAM y 4+1 conectores ethernet RJ45 en switch. El mío viene montado además con un router ADSL2+ y una CompactFlash.

Iconizar Evolution

Llevo años usando el Evolution de Gnome y años quejándome de que no se puede iconificar en el trayicon. Hace unas semanas un amigo me enseñó un programa que viene a solucionar este problema. Me entusiasmé mucho con este programa pero hasta que no lo probase durante un buen tiempo, no quería decir nada en el blog. Se llama Alltray y logra iconizar cualquier programa que sea lanzado con esta herramienta. Para instalarlo en Ubuntu/Debian, invocamos a apt:

apt-get install alltray

Una vez instalado es muy fácil de usar. Para el ejemplo de Evolution, desde consola se puede lanzar

alltray "evolution --component=mail"

et voilà

Alltray

Ya sólo hay que situarse con el puntero del ratón encima del icono del sobre y botón derecho e izquierdo para probar sus funciones

git para usuarios de svn

En el trabajo hemos tenido algunos problemas con el sistema control  de versiones que usamos, svn, en cuanto al mantenimiento de las distintas branch. Un compañero (Karl) ha comentado que usar git, podría ayudarnos  con el mantenimiento de las branches, trunk y los merges entre ellos. En git, cada commit genera en una base de datos un identificador único en forma de hash. Esto ayudaría en cualquier momento a conocer en que branches está disponible un commit concreto y administrar correctamente el código por las distintas ramas del árbol.

Se da la circunstancia que estoy desarrollando un proyecto personal con un amigo, por el gusto de aprender bien python y jquery (y las malas artes del 2.0 famoso). y ya nos hemos visto en la necesidad de disponer de un sistema control de versiones, así que, con el objeto de  probar y conocer mejor git, ambos hemos decidido instalarlo: bah!, pasando de svn.

La primera impresión ha sido bastante buena. La gestión de las branch parece “mágica” (sí he escrito mágica y no magia; algún día explicaré qué es eso de mágica). Sin moverte del mismo path del sistema de archivos, puedes cambiar de branch (git checkout  [branch_name]) y mágicamente si haces un ls, descubres que la estructura de ficheros se ha modificado a la de la branch elegida.

En fin, menos introducciones y más al tajo.

Lo primero es crear el repositorio. En git los repositorios no tienen por qué estar centralizados en un servidor, es más un “cliente” puede actuar de servidor para sí mismo o para otros. Cuando termine la explicación de cómo se usa, os daréis cuenta de esto. En cualquier caso, voy  a seguir el modelo de cliente-servidor, tal como funciona en svn para que quede más claro.

Comencemos. En el servidor (host.dominio.com) crear un usuario devel (por ejemplo):

adduser devel

Loguearse con ese usuario y hacer

mkdir -p git/nombre_proyecto.git
cd git/nombre_proyecto.git
git init --bare

ya está creado el repositorio sin código de nuestro proyecto. Para subir el código, lo vamos hacer desde nuestro sistema cliente (nuestro estación de trabajo). Para ello vamos a usar de capa de transporte, ssh, de tal modo que pase cifrado. Aconsejo subir tu clave pública al servidor para no tener que estar escribiendo user y pass todo el tiempo. Nos vamos al directorio donde tangamos ya nuestro código y le pasamos los siguientes comandos:

cd proyecto
git init
git remote add origin ssh://devel@host.dominio.com/home/devel/git/nombre_proyecto.git
git add .
git commit -m "Apertura del repositorio"

Este commit, no escribe en el servidor, sino que lo hace en local generando su correspondiente entrada hash (el identificador único que identifica la operación) en la bbdd de git.

git push origin master

finalmente, con push, lo empujamos al servidor

Si por lo que sea, queremos obtener una copia del repositorio en otro ordenador o path, podemos optar por traerlo clonado desde el servidor. Esto es algo parecido a un checkout, sólo que se trae toda la base de datos de todo lo sucedido en el repositorio. Es decir, que en un momento dado este clon, podría convertirse en el repositorio raiz.

Clonar un repositorio ya creado:

mkdir proyecto
cd proyecto
git clone ssh://devel@host.dominio.zona/home/devel/git/nombre_proyecto.git

Para crear una branch del proyecto es pasmosamente fácil:

git branch branch_proyecto

Donde branch_proyecto es el nombre de la branch del repositorio

Para ver la branch en la que estás:

git status

Para añadir ficheros al proyecto (svn add, svn commit). Lo primero es asegurarse que la branch en la principal :

git checkout master

y ahora sí a añadir:

git add README
git commit

Y finalmente hay que hacer un push, si quieres que llegue el cambio al repositorio del servidor. De esta forma, otros usuario podrán usar tus cambios:

git push

Para tener actualizado tu  repositorio local con el remoto:

git pull --rebase

Equivale a svn update y el –rebase es para revisar si otro usuario ha hecho antes un push

Más o menos con esto te puedes hacer una idea y manejarte con git. Más información en la página del proyecto oficial.

En cuanto a gestores de tickets para git, se puede usar el clásico Trac con el plugin correspondiente, aunque en realidad me gustaría probar http://www.redmine.org/ un trac para git. Intentaré hablaros pronto de redmine

Esto me pasa por presuponer

Cómo dije en una anterior entrada, dispongo de 64Mb de RAM y 32 de swap para este servidor web, lo que no dije es que es una máquina virtual. En el plan de precios que pago me incluye esa memoria, que para lo que quiero funciona, aunque últimamente me da algunos problemillas. En su momento di por sentado que la memoria swap que “venía de serie” era inalterable ya que esta gente es la que controla el kernel de mi máquina, así que ni probé

Esta era la memoria que tenía

total       used       free     shared    buffers     cached
Mem:         60312      53260       7052          0       2100      25680
-/+ buffers/cache:      25480      34832
Swap:        32760       5956      26804

Desesperado por las tres últimas semanas de caídas de servicios, se me ocurrió probar suerte para añadirle más memoria swap a la máquina virtual, como si de una máquina normal se tratase y el resultado fue inesperado: FUNCIONA!. Le he añadido 105Mb y este es el resultado.

total       used       free     shared    buffers     cached
Mem:         60312      53540       6772          0       2156      25800
-/+ buffers/cache:      25584      34728
Swap:       135152       5956     129196

Lo he hecho del siguiente modo. Crear un archivo de memoria swap.

mkdir /swap
mkswap -c /swap/swap1 102400

y por último “montar” la memoria

sync
swapon /swap/swap1

Y para acabar, se tendrá que añadir a /etc/fstab el swapfile para que cuando reinicie, se mantengan las mejoras de memoria
[cce_bash line_numbers=”false”]
/swap/swap1 swap swap defaults,noatime 0 0
[cce_bash]

Configuración de monit

Aquí dejo la configuración que he usado para monitorizar con Monit, los servicios Apache, MySql, ssh y el espacio de disco duro

check process apache with pidfile /var/run/apache.pid
start program = "/etc/init.d/apache start"
stop program  = "/etc/init.d/apache stop"
if failed host localhost port 80 protocol http
and request "/index.html" then restart
check device rootfs with path /dev/ubd0
if space usage > 3 GB then alert
check process mysql with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop  program = "/etc/init.d/mysql stop"
if failed unix /var/run/mysqld/mysqld.sock then restart
if mem > 60 Mb then restart
if 5 restarts within 5 cycles then timeout
check process sshd with pidfile /var/run/sshd.pid
start program  "/etc/init.d/ssh start"
stop program  "/etc/init.d/ssh stop"
if failed port 22 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

De Breezy a Dapper 6.06 LTS: como la seda

Sólo quería dar desde aquí la enahorabuena al equipo de Ubuntu. He actualizado las Ubuntu Breezy que tenía instalado en todos mis sistemas (tanto personales como del trabajo) a la recién y estable 6.06 LTS (Dapper Drake) de una forma absolutamente suave. Creo estar en la certeza de que es la primera vez desde que uso Linux (1998), que el proceso de actualización de una versión estable a otra, ya sea con Debian, RedHat, Suse o Mandrake, se realiza con total suavidad o al menos con muy pocas incidencias, aunque en mi caso no las he tenido.

Además de esta agradable experiencia, creo estar en lo cierto de tener ante mi la primera versión de un escritorio GNU/Linux 100% apta para usuarios sin experiencia. Un aplauso para el equipo de Ubuntu.

La cultura tiene el futuro claro

Mientras leía en el blog de David Bravo como van perdiendo terreno las gestoras del copyright frente al movimiento copyleft y los autores simpatizan cada vez más con la “piratería” embriagados por el poder de internet como herramienta de difusión sin intermediarios, recuperaba de mis recuerdos unas notas que fui plasmando en OpenOffice hace unos “muchos” meses para un proyecto literario que probablemente me llevará años terminar – soy torpe escribiendo, que le voy a hacer. La cosa era esta

Si lo piensas bien, puede que el hecho de que nos prohíban del todo el intercambio de archivos con derechos de autor por las redes p2p hasta tal punto que nadie se atreva ya a participar de este derecho, podría ayudar a impulsar y crear la necesidad de desarrollar a un ritmo mucho más acelerado y por mucha más gente, software libre, libros libres, música libre y nuevas plataformas para distribuir todo esta cultura y conocimiento, incluso proyectos no relacionados con la informática con carácter de libre distribución, supliendo de ese modo la carencia de productos de consumo que no está al alcance del poder adquisitivo de la gran mayoría de la población y que las multinacionales con su publicidad nos hace desear, convirtiéndonos por tanto en esclavos del consumo. O eso o privarnos de la cultura.

old.tapiasbravo.com

A petición de algunos lectores, acabo de poner en línea la antigua web de tapiasbravo.com. Como se puede comprobar, el aspecto ha quedado un poco tocado, pero al menos los contenidos están de nuevo al alcance. La verdad es que el weblog de mambo me jugó una mala pasada, pero todo empezó meses antes con un problema entre el sql de mambo y mysql versión 5. Aquí documento lo sucedido y la solución para quien le haya afectado también.

Notas de djbdns, cachedns + tinydns: resolutor y servidor de dns en la red interna.

Siempre me pasa igual, cada vez que instalo djbdns como cache de dns y servidor de dns para la red interna con los nombres para cada uno de los hosts internos de la red, se me olvida cómo hacer que funcionen los dos a la vez sin problemas.

Esta vez he decidido no olvidarlo más y nada como anotarlo en mi propio weblog.

Lo primero es instalar djbdns en debian.

1
apt-get install daemontools-installer djbdns-installer

Sigue la instrucciones para instalarlo, es bastante sencillo.

Una vez instalado hay que proceder a la configuración. Saber que el cache de dns lo gestionan cachedns y el servidor de nombres tinydns. Antes de nada hay que tener en cuenta que ambos servicios no pueden ni deben correr en la misma IP, así que deberemos tener al menos dos IP, física o sobrecargadas en la misma ethernet. No he probado si tinydns puede funcionar utilizando 127.0.0.1. Supongamos que tenemos estas IPs, 192.168.1.81 para el cache dns y 192.168.1.82 para tinydns.

Procedamos a configurar cachedns

1
dnscache-conf dnscache dnslog /etc/dnscache 192.168.1.81

Se habrá creado automáticamente en /etc/ el directorio dnscache con un montón de carpetas y archivos, donde se encuentra la configuración del cachedns. Ahora sólo escucharía en 127.0.0.1:53, para que escuche y acepte conexiones de otras redes deberemos indicarlo de la siguiente manera

1
touch /etc/dnscache/root/ip/192.168.1

en este momento aceptaría peticiones al 53 desde cualquier IP de la red 192.168.1.0. Realizado esto ya podemos levantar el servicio utilizando supervise, el demonio que instala daemontools, herramienta también de djb que antes instalamos junto a djbdns (¿recordais?)

1
ln -s /etc/dnscache /service

si no existiese el directorio /service, se crea y ya está. En 5 segundos de hacer el enlace simbólico supervise levanta cachedns.

En este momento ya atiende peticiones. Al principio tiene que ir recolectando las resoluciones de nombre y esto lo hace preguntándole a otros resolutores, como por ejemplo los DNS de nuestro proveedor. Para ello accede a este archivo /etc/dnscache/root/servers/@ donde hay una lista de IP donde cachedns puede “preguntar” para luego almacenar en su cache. En tail -f /etc/dnscache/log/main/current podréis ver cómo va preguntando y almacenando. Uhhhmmmm bueno, falta decirle a tu sistema cual es el nameserver así que vi /etc/resolv.conf y pondremos el primero de la lista de nameserver a 192.168.1.81

1
2
cat /etc/resolv.conf
nameserver 192.168.1.81

bueno, y ahora vamos a configurar el servidor nombres tinydns. La verdad es que me encanta esta herramienta porque nos olvidamos de los engorros de BIND, sus números de serie y sus mil archivos. En djbdns todo es simpleza, por no hablar de seguridad, robustez, velocidad, etc.

1
tinydns-conf tinydns dnslog /etc/tinydns 192.168.1.82

al igual que cache de dns se ha creado el directorio /etc/tinydns

para levantar tinydns usamos de nuevo el supervise

1
ln -s /etc/tinydns /service

Bueno, ahora ya nos queda menos aunque lo más importante, crear el dominio interno de nuestra red y los hosts del dominio. Supongamos que tenemos 5 ordenadores en casa. Uno de ellos es el servidor web, otro el de dns y servidor de tiempo (ntpd) y los otros tres estaciones de trabajo. El dominio se va a llamar freemem. Vamos a hacer primero unas cosillas en dnscache y para que podamos tener un dominio interno utilizaremos una característica que tiene djbdns y que se llama “split horizon”.

1
2
echo 192.168.1.82 > /etc/dnscache/root/servers/freemem
touch /etc/dnscache/root/servers/1.168.192.in-addr.arpa

Para que funcione el invento

1
echo 1 > /etc/dnscache/env/FORWARDONLY

cd /etc/tinydns/root/

y ahora a definir los hosts. Editamos /etc/tinydns/root/data y lo ponemos parecido a esto

1
2
3
4
5
6
7
#define el servidor de nombres autorizado
.freemem::ns1.freemem
=www.freemem:192.168.1.1=dns.freemem:192.168.1.81
=workstation1.freemem:192.168.1.2
=workstation2.freemem:192.168.1.3
=ns1.freemem:192.168.1.82
+ntp.freemem:192.168.1.81

y ahora a ejecuta el comando make. Ya sólo nos queda reiniciar dnscache

1
svc -h /service/dnscache/

Ya solo quedaría poner en los resolv.conf de todos los hosts como nameserver 192.168.1.81

1
2
3
4
cat /etc/resolv.conf
domain freemem
search freemem
nameserver 192.168.1.81
Esta web utiliza cookies puedes ver aquí la política de cookies. Si continuas navegando estás aceptándola