jueves, 5 de diciembre de 2013

Recuperación de datos

Hace un tiempo, acepté la tarea de tratar de recuperar información de un disco, al que luego de un problema con el suministro eléctrico, el usuario le instaló el sistema de fábrica que viene en una partición a parte, dedicada especialmente para la "recuperación".
Lo que más le importaban eran las fotografías que había perdido.
Este es un trabajo que suelo hacer sobre memorias extraíbles de cámaras fotográficas o pendrives, pero ahora me tocaba sobre un HDD; por lo que tener un servidor NFS en casa me viene al pelo para transferir los datos de recuperación.
Repaso los hechos:
Inicio la computadora afectada con un live cd y monto el sistema de archivos en red (previa instalación de paquetes - ver post anterior).
sudo mount -t nfs -o nfsvers=4 ip_servidor_NFS:/directorio/compartido ~/Público
Lo correcto sería montar como sólo lectura la partición a recuperar, para evitar escrituras accidentales y asegurarme de que sea la partición afectada
01 sudo mkdir /mnt/recuperame
02 sudo mount -t ntfs-3g -o ro /dev/sda1 /mnt/recuperame
si es la partición la podemos desmontar
01 sudo umount /mnt/recuperame
02 sudo rm /mnt/recuperame
y realizar una copia bit a bit de dicha partición en el servidor
01 dd if=/dev/sda1 of=~/Público/resguardo.dd
Este, es el momento perfecto para prepararse un mate, hacer compras, etc. Juro que va demorar bastante.
Bueno... Siempre que llovió, paró. Y esto en algún momento debería terminar.
Ahora puedo apagar la computadora afectada y trabajar en la mía sobre la imagen creada. Para esto necesito tener instalado el paquete testdisk y ejecutar:

sudo photorec resguardo.dd

 Elijo el dispositivo.
 también el tipo de partición; en este caso FAT y que busque en todo el disco (whole disk)

 selecciono la carpeta donde quedará el resguardo y en un instante comienza photorec a trabajar.



Quedando un montón de directorios del tipo recup_dir.1, recup_dir.2, etc.
Los archivos y carpetas no recuperan su nombre original, por lo que hay que seleccionar a mano lo que es basura y lo que sirve luego de recuperar todo, o me queda la posibilidad de hacer un script para ayudarme, pero esto último lo muestro en otro post.

Debo devolver la netbook. ¿Y ahora?

En una de las escuelas donde trabajaba me habían asignado una netbook de las que envía el estado.
La cuestión es que actualmente, al no tener horas cátedra en esa escuela debo devolver la net, para que me asignen, en la escuela donde trabajo actualmente, una nueva.
Ok, pero eso no es problema, o no sería, de no haber accedido a las diferentes cuentas que utilizo (homebanking, correo, redes sociales, etc.) y sabiendo que al borrar un archivo, este, en realidad no se borra, sino que se marca en el dispositivo como espacio disponible (sí, soy un poquito paranoico). 
Así que me decidí a realizar un borrado seguro de todo el disco para después instalar Huayra Linux (la distro del estado).
Luego de leer un poquito [1][2] hice lo siguiente:
Primero, inicié la net con la distribución de linux desde el pendrive.
Abrí un emulador de terminal y ejecuté lo siguiente:

01 sudo hdparm -W0 /dev/sdb

para desactivar la caché del disco y que las sobrescrituras impacten sobre el plato del disco y no mueran en la memoria caché. Siendo sdb el dispositivo a borrar.
El borrado seguro con 20 pasadas (20 re-escrituras):

01 sudo shred -vfz -n 20 /dev/sdb

Esto lo que hace es escribir en el disco, poniendo a 1 todos los bits del mismo, lo sobrescribe con valores aleatorios y por último coloca a 0 todos los bits del disco (va a demorar un poquito).
Y no olvidarme de volver a activar la memoria caché.
01 sudo hdparm -W1 /dev/sdb

 
Fuente:
[1] esdebian
[2] Pablo Martínez WebLog

martes, 21 de mayo de 2013

Instalando Android Studio en Fedora


Desde su anuncio en I/O 2013, me dio curiosidad probarlo.
Hasta el momento nunca programé nada para Android pero siempre quise hacerlo, por lo que me pareció una buena oportunidad para comenzar (además, nunca me gustó Eclipse).
Entonces... ¿Qué necesito?
Tener el Oracle JDK instalado. En Fedora como en la mayoría de las distros nos vamos a encontrar con OpenJDK, pero nos va a pedir el otro.
Decargar el JDK correspondiente de su página e instalarlo:
01 su - # colocar el pass de root y...
02 rpm -Uvh jdk-7u21-linux-x64.rpm
03 alternatives --install /usr/bin/java java /usr/java/latest/jre/bin/java 20000
04 alternatives --install /usr/bin/javaws javaws /usr/java/latest/jre/bin/javaws 
   20000
05 alternatives --install /usr/bin/javac javac /usr/java/latest/jre/bin/javac 20000
06 alternatives --install /usr/bin/jar jar /usr/java/latest/jre/bin/jar 20000

Teniendo java instalado podemos instalar Android Studio v0.1 (por el número de versión, podríamos encontrarnos con algunas sorprecitas), descargándolo desde su página y lo descomprimimos en el directorio que queramos tenerlo instalado.
01 tar -zxvf android-studio-bundle-130.677228-linux.tgz

Ahora creamos un enlace para poder ejecutarlo desde cualquier lugar.
01 sudo ln -s /ruta/al/directorio/android-studio/bin/studio.sh 
   /usr/bin/androidstudio
(ACLARACIÓN: prestar atención a la ruta donde descomprimimos studio)
Ahora desde cualquier ubicación podemos llamarlo con

01 androidstudio
Y la frutilla del postre, creamos un lanzador para gnome. Creamos un archivo de nombre "AndroidStudio.desktop" con el siguiente contenido:
01 [Desktop Entry]
02 Name=Android Studio
03 GenericName=IDE para Android
04 X-GNOME-FullName=IDE para Android - Android Studio
05 Comment=Desarrolla aplicaciones para Android
06 Exec=androidstudio %F
07 Terminal=false
08 StartupNotify=true
09 Type=Application
10 Icon=/ruta/al/directorio/android-studio/bin/idea.png
11 Categories=Development;
12 Name[es_ES]=Android Studio
(ACLARACIÓN: prestar atención a la ruta del ícono)
lo guardamos y lo copiamos en /usr/share/applications
01 sudo cp AndroidStudio.desktop /usr/share/applications
Ya tenemos el lanzador dentro de la categoría "Programación"
Para camiar el tema y esquema de colores deben ir a View->Quick Switch Scheme...
Yo prefiero los esquemas oscuros, en mi caso elegí "Drácula".

Espero sus comentarios.
A ver quien se anima con un post de "hola mundo" sobre este IDE.


Fuentes:
http://developer.android.com/sdk/installing/studio.html
http://docs.oracle.com/javase/7/docs/webnotes/install/linux/linux-jdk.html
http://www.if-not-true-then-false.com/2010/install-sun-oracle-java-jdk-jre-7-on-fedora-centos-red-hat-rhel/
Android Studio en Fedora 18

miércoles, 24 de abril de 2013

NFS - Network File System (sobre otra distro)

Como había comentado en el post anterior, alguna vez me tocó configurar NTF en Ubuntu, Kubuntu, Debian, etc. y resultó un poco más simple hacerlo (a lo mejor un poco desactualizado).
En Fedora el paquete es nfs-utils, pero en esta distro hay que instalar estos:
01 sudo apt-get install nfs-common nfs-kernel-server

La configuración para el servidor

Editar el /etc/exports para agregar la misma línea que se añadió en el post anterior.
Ahora hay que exportar el sistema de archivos y reiniciar el servicio:
01 sudo exportfs -a
02 sudo /etc/init.d/nfs-kernel-server restart

Y se puede probarlo con
01 sudo rpcinfo -p

Del lado del cliente

Para comprobar la disponibilidad:
01 sudo showmount -e xxx.xxx.xxx.xxx

donde  xxx.xxx.xxx.xxx es la ip del servidor.
Y si todo va ok montarlo con
01 sudo mount xxx.xxx.xxx.xxx:/ruta/directorio/compartido ~/Público
quedando montado en el directorio Público de tu home.
Eso si, NFS v3.

NFS v4 - Network File System

Me decidí a escribir este post debido a que he usado nfs en Ubuntu y Debian y recuerdo lo fácil que configurar el servidor; pero en Fedora tuve que renegar un poco y buscar bastante información. Tuvo que ver con usar la última versión de NFS (v4) y no encontrar el nombre del servicio que debía habilitar en firewall para que funcione (en las versiones antiguas tenían otro nombre u otra manera de habilitarlos, cargarlos, activarlos). Y como no soy un genio, me dio trabajo.
Ok, pero... ¿para qué me sirve NFS? (no confundirse con NTFS, perdón por la mala palabra;-)
Bueno, básicamente sirve para compartir archivos en red, pero a lo Gnu/Linux style. Nada de redes uindous ni samba. Si están bien las configuraciones basta con montar el directorio remoto compartido para usarlo.
Lo primero que se nota es la velocidad de transferencia. Si, se nota.
Se puede observar una muy buena comparativa entre NFS, FTP, SSH y SMB que se resume en las siguientes tasas de transferencia:

NFS 73Mb/seg
FTP 26Mb/seg
SSH 16Mb/seg
SMB 20Mb/seg

Sin más chachara, manos a la obra...

Para el servidor

Primero lo primero; instalar los paquetes necesarios. Estoy usando Fedora 18 así que:
01 sudo yum -y install nfs-utils system-config-firewall
Cuando termine, hay que activar los nfs necesarios con
01 sudo firewall-config
Después editar el archivo /etc/idmapd.conf (como root por supuesto).
Hay que configurar (si es que no se hizo durante la instalación del sistema) el dominio y desmarcar las líneas [Mapping] para los usuarios nfsnobody.
Ahora se deberían iniciar los servicios rpcbind, nfs-lock, nfs-idmap y nfs-mountd.

01 sudo systemctl start rpcbind.service
02 sudo systemctl start nfs-lock.service
03 sudo systemctl start nfs-idmap.service
04 sudo systemctl start nfs-mountd.service

Además, sería conveniente que se inicien durante el arranque:
01 sudo systemctl enable rpcbind.service
02 sudo systemctl enable nfs-lock.service
03 sudo systemctl enable nfs-idmap.service
04 sudo systemctl enable nfs-mountd.service  
También editar el /etc/exports para agregar la siguiente línea:
/home/usuario/Público 10.0.0.1/24(rw,no_root_squash,no_all_squash,nohide,
                                  no_subtree_check,insecure,sync)
Se debe colocar el rango de ips que tendrán acceso al recurso y el directorio a compartir.

/home/usuario/Público Directorio compartido
rw Lectura/Escritura
sync Síncrono (Tarda un poquito más que con async pero brinda un grado más de seguridad contra errores)
no_root_squash Activa los privilegios de root
no_all_squash Idem anterior pero para el usuario
nohide Que no esté oculto
insecure Hace que NFS use puertos sin privilegios (arriba de 1024)
Guardar y recargar con:
01 sudo /usr/sbin/exportfs -rv
Queda editar el archivo /etc/hosts.allow para permitir a los clientes acceder al servicio; indicando el servicio y el rango de ips.
rpcbind: 10.0.0.1/24
Reiniciar o recargar el firewall.

Cliente

Montar y listo
sudo mount -t nfs -o nfsvers=4 10.0.0.4:/home/usuario/Público ~/Público
Especificar la ip del servidor o dominio, el recurso compartido y el directorio de montaje. En mi caso, como la red usa DHCP debo colocar la ip (por no ser estática).

Fuentes:


sábado, 9 de febrero de 2013

Mi primer ¡Hola Mundo!

Mirá papá. Mi primer hola mundo.
¡Qué emoción!

  
 


Adjunto el código del bebé:

01     .section .rodata
02     .MSG
03         .string "¡Hola Mundo!"
04  
05     .section .text
06     .globl main
07 main:
08     movl $.MSG,(%esp)
09     call puts
10     movl $1,%eax
11     movl $0,%ebx
12     int $0x80
Jajaja! Lo compiló con gcc.

Escuchen como tipea:

viernes, 12 de octubre de 2012

Veo veo... qué ves?


En la foto se observan a alumnos de 5to año "C" de la Escuela Técnica "Amalia del Valle Herrera de Aguirre" que participan del proyecto intercatedra entre las asignaturas Geografía e Historia con colaboración de Docentes TIC, denominado como el título de este post "VEO VEO...QUE VES?"; dando inicio en el día de la fecha a las actividades de revelamiento en las distintas calles de Paso de los Libres.
El mismo consiste en tomar registros fotográficos y datos de los negocios, iglesias, plazas, escuelas, etc. para subirlo a Google maps, además de ser presentado durante la semana de la Educación Técnica en la Muestra Científico-tecnológica Y De Prácticas Profesionalizantes.
A continuación se ve la zona que recorrerán (centro).
Ver mapa más grande