Archivo

Entradas Etiquetadas ‘Linux’

Convertir un Droplet de DigitalOcean a una VM de VMware

lunes, 8 de septiembre de 2014 Sin comentarios

SI deseas hacer un respaldo local funcional del Droplet o para migrarlo a otro servidor debes seguir estos pasos.

Requerimientos

  1. Acceso root con contraseña al droplet (si usas claves públicas para acceder al droplet debes crear una contraseña con el comando passwd root)
  2. Acceso al panel de control de la página de DigitalOcean
  3. Servidor accesible remotamente por SSH para guardar la imagen
  4. El mismo servidor anterior debe tener el paquete qemu-utils instalado
  5. VMware instalado, puede ser en el servidor anterior o en otro equipo.
  6. Espacio disponible en disco, se requiere por lo menos el tamaño total del disco del droplet + el espacio utilizado en el mismo.
  7. Archivo ISO de Ubuntu, se usará como live cd.

Este tutorial fue realizado para copiar un droplet con SO Debian 7 x64, con otra distribución pueden variar algunos comandos, como para detener los servicios.

Para hacer el respaldo debes ingresar por consola al droplet, para ello debes entrar por la página de DigitalOcean

image

Hacer clic en el droplet y luego en el botón grande “Console access”

image

Luego debes iniciar sesión como root y tu contraseña. Si sólo usas claves públicas para entrar por SSH debes asignar una contraseña previamente al usuario root.

  • Cambia el nivel de ejecución del sistema al nivel 1, correspondiente al single-user mode . Esto detendrá casi todos los servicios y el sistema entrará en “modo de mantenimiento”, debes ingresar la contraseña de root nuevamente.

image

  • Debes detener otros tres servicios más con los comandos

/etc/init.d/rsyslog stop
/etc/init,d/udev stop
/etc/init,d/dbus stop

  • Para hacer más liviana la imagen se rellenarán con ceros el espacio libre de la partición, para ello se usará el comando dd. Una vez finalizado se eliminará el archivo que genere este comando

dd if=/dev/zero of=zerofile bs=20M
rm zerofile

  • Ahora se generará una imagen del droplet, la que se transferirá comprimida por SSH a otro servidor (requerimiento 3).

dd if=/dev/vda | gzip –1 – | ssh usuario@direccionServidor dd of=/carpeta/imagen.gz

  • Una vez completado el comando anterior la imagen ya ha sido transferida fuera del droplet, por lo que ya éste se puede apagar con el comando shutdown o reboot si desea reiniciarse para ser puesto online.
  • En el servidor donde se guardó la imagen se debe ejecutar este comando para descomprimir la imagen, esto requerirá tener como espacio disponible la misma cantidad total del disco del droplet original. O sea que si el droplet incluía un disco de 20GB, esa cantidad será requerida para la descompresión.

gunzip /carpeta/imagen.gz

  • Ahora se convertirá la imagen a VMDK para que pueda utilizarse en VMware. En la imagen VMDK resultante sólo se ocupará el espacio utilizado. La imagen original puede eliminarse posteriormente, aunque ésta puede montarse en loopback para acceder a los archivos.

qemu-img convert –O vmdk /carpeta/imagen /carpeta/imagen.vmdk

  • Ya está lista la imagen para VMware (/dev/sda), pero sin embargo aún no se puede iniciar una VM desde ella, para ello se debe preparar cambiando el bootloader.
  • Tienes que crear una VM nueva con un disco que tenga por lo menos 2 GB más que los que estaban en uso en el droplet (/dev/sdb), asignar la ISO de Ubuntu a la unidad de CD de la VM.
  • Iniciar la VM desde el CD para iniciar Ubuntu
  • En Ubuntu con GParted crear tabla de particiones y una partición ext4 para el disco virtual recién creado que ocupe todo el espacio (/dev/sdb)
  • Transferir la imagen convertida a la partición nueva

dd if=/dev/sda of=/dev/sdb1 conv=notrunc,noerror

  • Una vez transferida la imagen hacer una revisión

fsck –t ext4 /dev/sdb1

  • Eliminar el bootloader de DigitalOcean

mount /dev/sdb1 /mnt
rm –rf /mnt/boot/grub
umount /mnt

  • Ahora se debe instalar GRUB para que la imagen pueda iniciarse, para eso se usará boot-repair

add-apt-repository ppa:yannubuntu/boot-repair
sed ‘s/trusty/saucy/g’ -i /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list
apt-get update
apt-get install -y boot-repair
boot-repair &

Seleccionar “Recommended repair”

Durante el proceso boot-repair solicitará ejecutar algunos comandos en una terminal nueva, para eso se debe copiar y pegar en una terminal nueva. Una vez ejecutado presionar siguiente.

  • Ahora puedes reiniciar la máquina virtual e iniciar el SO original desde ella.
  • Finalmente deben desactivar ciertos módulos, para ello edita el archivo /etc/modprobe/fbdev-blacklist.conf (o blacklist.conf si existe) y agregar al final las siguientes líneas

blacklist vt8623fb
blacklist floppy

image

Puedes eliminar la imagen original copiada, la imagen convertida a VMDK, sólo se usará el disco nuevo que se creó para la VM.

Recomendado

  • El droplet tiene configurada la red con IP estática, para cambiarlo a IP dinámica por DHCP se debe editar el archivo /etc/network/interfaces de

auto eth1 eth0
iface eth0 inet static
        address <IP publica>
        netmask 255.255.192.0
        gateway <GW DO>
iface eth1 inet static
        address <IP privada>
        netmask 255.255.0.0

a

auto eth0
iface eth0 inet dhcp

Desde donde dice “Primary network interface”

 

Fuente: http://scriptthe.net/ConvertDigitalOceanDroplettoVMwareVM.pdf

Instalar rtorrent + rutorrent en Debian

viernes, 8 de agosto de 2014 Sin comentarios

Rtorrent es un cliente bittorrent por terminal disponible en los repositorios de varias distribuciones de linux, mientras que rutorrent es una aplicación web que se conecta a rtorrent para que se puedan manejar vía navegador los torrents.

image

La versión de los repositorios no cuenta con soporte para ser controlado remotamente, por lo que es necesario descargar el código fuente de rtorrent, libtorrent y xmlrpc-c para compilarlos manualmente y luego instalarlos.

Antes de comenzar debes instalar los programas requeridos para compilar

apt-get install gcc pkg-config libssl-dev g++ make libncurses5-dev libsigc++-2.0-dev libcurl4-openssl-dev subversion screen nano

Primero debes compilar XMLRPC-C

svn co http://svn.code.sf.net/p/xmlrpc-c/code/advanced xmlrpc-c
cd xmlrpc-c
./configure
make
make install

Luego libtorrent

wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.3.tar.gz
tar zxvf libtorrent-0.13.3.tar.gz
cd libtorrent-0.13.3
./configure
make
make install

Posteriormente rtorrent, el que se instalará con soporte de xmlrpc-c compilado anteriormente

wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.3.tar.gz
tar zxvf rtorrent-0.9.3.tar.gz
cd rtorrent-0.9.3
./configure –with-xmlrpc-c
make
make install
ldconfig

Ahora se debe configurar rtorrent, crearemos un usuario y las carpetas requeridas

useradd torrent
mkdir –p /home/torrent/rtorrent/{.session,download}
cp rtorrent-0.9.3/doc/rtorrent.rc /home/torrent/.rtorrent.rc
chown –R torrent:torrent /home/torrent/rtorrent

Luego debes editar la configuración

nano /home/torrent/.rtorrent.rc

Y cambiar

directory = /home/torrent/rtorrent/download
session = /home/torrent/rtorrent/.session
scgi_port = localhost:5000

Como servidor web usaré nginx en lugar de apache, por ocupar menos recursos, lo que es más apropiado para el Raspberry PI.

apt-get install nginx php5-fpm apache2-utils

(apache2-utils es para el comando htpasswd mencionado más adelante, no incluye el servidor web)

mkdir /var/www
cd
wget http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz
wget http://dl.bintray.com/novik65/generic/plugins-3.6.tar.gz
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
chown www-data:www-data -R /var/www/rutorrent
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
htpasswd -c /var/www/rutorrent/.htpasswd (nombreusuario)
chown www-data:www-data -R /var/www
nano /etc/nginx/sites-available/default

Donde dice nombreusuario reemplaza por el nombre de usuario deseado para ingresar a rutorrent, luego introduce dos veces una contraseña.

En el archivo default edita lo siguiente

root /var/www;
index index.php index.html index.htm;

Descomenta las líneas para activar PHP

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have «cgi.fix_pathinfo = 0;» in php.ini

        # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Luego de estas líneas agregar

location /RPC2 {
        include scgi_params;
        scgi_pass 127.0.0.1:5000;
}

location /rutorrent {
        auth_basic «Restricted»;
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
}

Si deseas activar HTTPS repite los pasos anteriores en la sección “server { listen 443; …”

Reinicia los servicios

service nginx restart
service php5-fpm restart

Finalmente debes ajustar unos parámetros de la configuración de rutorrent

nano /var/www/rutorrent/conf/config.php

Edita las siguientes líneas para especificar las rutas de curl y stat

«curl» ==> ‘/usr/bin/curl’, // Something like /usr/bin/curl. If empty, will be found in PATH.
«stat» ==> ‘/usr/bin/stat’, // Something like /usr/bin/stat. If empty, will be found in PATH.

Si ingresas a rutorrent aparecerá que no se pudo conectar a rtorrent, porque aún no se ha iniciado. Para iniciarlo inicia sesión como torrent, corre el comando screen y luego rtorrent. El comando screen permitirá cerrar la terminal y dejar rtorrent ejecutándose en segundo plano.

Fuentes:

rtorrent + rutorrent con nginx: http://vassie.me/rtorrent-and-rutorrent-on-ubuntu-server-with-nginx/

rtorrent + rutorrent con apache: http://www.adminsehow.com/2013/11/installing-rtorrentrutorrent-on-debian-7-wheezy/

Permission Denied al montar cifs en Linux Raspberry PI

viernes, 8 de agosto de 2014 1 comentario

Al montar una unidad cifs en el Raspberry PI me salía el error “mount error(13): Permission denied”, siendo que la carpeta compartida no requería autenticación y al ingresar desde un computador lo hacía directamente sin solicitar identificación. La unidad compartida era el puerto USB de un router Dlink DIR-626L (alias rollo de papel confort).

root@mastodon:~# mount.cifs //IP/usb_A1 /mnt -o guest
mount error(13): Permission denied

Al consultar el registro dmesg aparecía esto referente al error de montaje:

[47912.021716] CIFS VFS: cifs_mount failed w/return code = –13

Luego de una búsqueda por internet hallé que era un bug en el proceso de autenticación, el que se resuelve especificando que realice la autenticación por NTLM con el siguiente comando:

mount.cifs //IP/usb_A1 /mnt -o guest,sec=ntlm

Con esto el montaje se realizó correctamente, se puede comprobar al consultar con el comando mount

root@mastodon:~# mount
/dev/root on / type ext4 (rw,noatime,data=ordered)
(…)
/dev/mmcblk0p1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
//IP/usb_A1 on /mnt type cifs (rw,relatime,vers=1.0,sec=ntlm,cache=strict,uid=0,noforceuid,gid=0,noforcegid,addr=IP,unix,posixpaths,…)

Para que se monte automáticamente al inicio del sistema agregué esta línea al archivo /etc/fstab

//IP/usb_A1   /mnt    cifs    guest,sec=ntlm,file_mode=0777,dir_mode=0777     0 0

Además del parámetro sec=ntlm agregué los parámetros file_mode y dir_mode para que todos los archivos y carpetas tengan permisos 777.

Driver RTL8192CU para Debian

jueves, 10 de abril de 2014 Sin comentarios

Tengo un adaptador inalámbrico USB que utiliza el chipset Realtek RTL8192CU, que soporta Wifi normas B, G y N hasta 300 Mbit/s. Ese adaptador hoy lo conecté al equipo para usarlo en Debian 7 y el sistema reconoció el adaptador como tal, pero no aparecía como disponible al poner cualquier comando que listara las tarjetas inalámbricas como ifconfig, iwconfig, rfkill, etc. Esta guía aplica para cualquier tarjeta con chipset RTL8192X.

Al revisar el dmesg encontré entre los mensajes estos

  • agent aborted loading rtlwifi/rtl8192cufw.bin (not found?)
  • rtlwifi:rtl_usb_probe():<0-0> Can’t init_sw_vars

Por el primer mensaje se podía deducir que faltaba el firmware en el controlador de la tarjeta en Debian, por lo que luego de buscar en Internet hallé que este componente se instala por separado y está en el paquete firmware-realtek. Este paquete está en los repositorios no libres, por lo que para instalarlo debes seguir estos pasos:

Agregar este repositorio a /etc/apt/sources.list

deb http://http.debian.net/debian/ wheezy main contrib non-free

Luego actualizar las listas e instalar el paquete

apt-get update
apt-get install firmware-realtek

Una vez instalado el firmware conectar el adaptador y probar su funcionamiento. Si ya estaba conectado debes desconectarlo y volver a conectarlo, de ahi probar su funcionamiento.

Fuente: https://wiki.debian.org/rtl819x