Todas las entradas de euge

Como clonar un disco linux al vuelo sin ninguna aplicación

Esta semana, debido a una cadena de catastrofes, me he visto obligado a instalar tres linux en tres ordenadores, dos de ellos para mis hijas.
Cuando hago esto siempre uso la misma filosofía, me preparo uno con todo lo necesario y luego lo clono todas las veces que se requiera.
En linux, esto es posible, ya que la gran mayoría de drivers se autoconfiguran.

Con la tecnica que os pondré, la copia es muy rápida, y la fragmentación queda reseteada.
A diferencia de las tecnicas tradicionales de clonado que usan la copia sector a sector, por ejemplo con el comando dd, nosotros copiaremos solo los ficheros existentes, por lo que la copia será extremadamente rapida.
Además la copia es online, es decir no hace falta arrancar con un sistema especial como con la mayoría de aplicaciones de clonado. En nuestro caso el sistema a copiar es el que está montado y usandose.

Pasos a seguir:

(entorno: Ordenador con Ubuntu, que es el que copiaremos a otro disco duro.
El sistema tiene el disco como /dev/sda y las copias se haran en un disco duro con adaptador usb, que el sistema ve en /dev/sdb.
En nuestro caso el disco principal tiene una partición primaria ext4 con todo el ubuntu en /dev/sda1 y una partición swap de 4gigs en /dev/sda5)




Lo primero es ponerse como root: ->sudo bash
Copiamos la tabla de particiones del disco principal al disco que tenemos pinchado en el usb.
->sgdisk -R=/dev/sdb /dev/sda

Creamos el sistema de ficheros en las particiones copiadas
->mkfs.ext4 /dev/sdb1
->mkswap /dev/sdb5


Ahora montaremos el disco duro usb y copiamos todos los datos de la partición primaria al disco duro destino.
El parametro x del cp, hace que solo copie los datos de la partición, con lo que no hay que preocuparse de si tenemos discos montados en el sistema principal, ya que no los copiará.
->cd /mnt
->mkdir kk
->mount /dev/sdb1 kk
->cp -ax / kk


Una vez acabado, pasamos a poner el arranque al disco.
Por seguridad con el grub siempre creo una cárcel chroot y entro en ella para no tener sustos.
Para ello, antes montamos los sistemas necesarios para nuestro chroot.
Este paso no es necesario si con el grub se usan los parametros –boot-directory, pero considero que así evitamos riesgos innecesarios.

->cd /mnt/kk
->mount -t proc proc proc/
->mount -t sysfs sys sys/
->mount -t bind /dev dev/
->chroot kk


Ahora con un editor cualquiera cambiamos todas las referencias de nuestro disco duro maestro y las cambiamos por la referencia del disco duro usb.
Esto solo es necesario hacerlo en los ficheros /etc/fstab y /boot/grub/grub.cfg de nuestro chroot.

OJO!!!! no cambiar los ficheros del disco duro original!!
Para saber nuestros id de bloque, la instrucción es:

->blkid

Finalmente en el chroot, ejecutar:

grub-install –force /dev/sdb

El force no recuerdo haberlo utilizado nunca, pero en esta ocasión el sistema me ha obligado a ponerlo por que se quejaba de la bios uefi.

El disco duro ya está copiado y listo para ser usado en el nuevo ordenador.

Programación MultiPlataforma: Un anillo para gobernarlos a todos

Cada poco tiempo surge un nuevo lenguaje de programación o un nuevo framework que supuestamente iba a suponer una revolución y iba a facilitar enormemente la vida al programador.
Las consecuencias no son siempre beneficiosas, más bien lo contrario y cuando echo la vista atras, veo que esta proliferación de lenguajes ha dejado muchos cadaveres en el camino, sobre todo de aquellas personas que no eligieron correctamente el sistema o lenguaje a aprender

Además ha habido importantes efectos colaterales negativos a nivel global, fruto del furor creativo, entre los que yo destacaría:

Fragmentación- Cada plataforma usa su propio lenguaje (IOS->objectiv C, Android->Java, Windows-> .NET, Web->Php,Java, Scripting->Perl,Python,Ruby)

Alejamiento del baremetal- Cada libreria, cada capa de abstracción, aleja un poco más al programador del verdadero campo de batalla, que realmente se libra en la placa pcb con los chips que hay soldados en ella.
Cuando un Maker tenga que hacer algo fuera del entorno comodo de un PC, por ejemplo si quiere programar un robot o una máquina, le costará adaptarse y entender los conceptos necesarios, si lo único que sabe es un lenguaje de última hornada que hace de carcel y no le deja escapar a etapas de más bajo nivel.


Es por esto, que a la gente que empieza y que quieran llegar a ser Makers competentes, les recomiendo retroceder unos pasos y estudiar los lenguajes C y C++.
Esto no significa quedarse anclado en el pasado, más bien al contrario, estos lenguajes son tan potentes que tan solo se necesita trabajar librerías que incorporen todas las tecnologías modernas importantes.
Existe una librería, de calidad exquisita, con una larguísima historia, de codigo libre con licencia LGPL, y su nombre es Qt.
Esta librería es multidisciplinar (UI gráfico,red,sistema) y multiplataforma.
La potencia que implica la frase anterior no se puede subestimar, estamos hablando de que usando C++ y la librería Qt se puede realizar un único programa que funcionará en todos los sistemas actuales sin practicamente modificaciones.
Esto incluye telefonos Iphone, Android, WindowsPhone, sistemas de escritorio, como Windows, Linux y MacOS, y cualquier sistema embedded (Raspberry, ODroid,CubieBoard, BeagleBoard,etc..)
Además se ejecutará de forma nativa en el procesador, sin intérpretes intermedios, con lo que la velocidad y la gestion de los recursos es dificilmente superable.

Si te ha interesado el tema, aquí tienes todo lo necesario para continuar: http://www.qt.io

Como tomar el control total de tu red

En este artículo explicaré como tomar el control de todo el tráfico que entra y sale de nuestras casas/empresas.
Hoy en día con la irrupción de embeddeds como la raspberry pi es muy útil usarlas para el control y gestión del tráfico, aparte de otras funciones como seguridad, domótica, etc..

Cuando la compañía telefónica nos instala un router, éste se encargará de controlar el firewall y gestionar todos los accesos a nuestra red. El problema es que el router equivale a una caja negra que desconocemos y el control del tráfico es demasiado importante como para darselo a algo que no podemos controlar y en el que no confiamos.
La técnica oficial para adquirir el control del tráfico, pero que solo se permite en algunos routers avanzados, es poner a éstos en modo bridge y instalar en el servidor el protocolo pppoe para que hable directamente con los gateways de la compañia telefónica. Esta opción aparte de no ser universal, es compleja ya que tendremos que instalar y configurar todo el software para el procesado del trafico ppp en el servidor.

La opción que os propongo es una alternativa no oficial, pero funciona en todos los routers que han pasado por mis manos durante muchos años, y es muy sencilla de realizar.
Se trata de robar la ip publica al router, y sustituirla por una ip publica falsa compatible. De esta manera contaremos con la ventaja de que todo el trabajo de realizar la comunicación pppoe la seguirá haciendo el router y nos irá pasando todas las tramas ethernet ya decodificadas,con lo que ahorramos ciclos de cpu y no tendremos que instalar ningun software en el servidor.

Ventajas
Tener una configuración como la que propongo tiene multiples ventajas:

  • Control total del trafico de entrada y salida a internet. Podremos ver todos los ataques y trafico no standard que venga por nuestra linea, y lo podremos filtrar de una manera global.
    Por ejemplo podremos ejecutar en el servidor el script de procrastinación que publiqué hace un tiempo, y el programa afectará a todos los dispositivos de la red sin necesidad de ningún paso adicional.
  • Podremos implementar en el servidor políticas QoS en la red para dar prioridad a los dispositivos que elijamos.
  • No hara falta tocar nunca más las tablas napt del router, todo el control se hará con el servidor.No importarán los filtros ni troyanos ni servicios que suelen venir instalados en el router.
  • Por ejemplo se podrá poner un servidor web en el servidor sin importar que el router tenga su propia web, y la web del servidor será la visible en internet.
  • El router será completamente inaccesible desde internet, ya que su ip ni siquiera existirá realmente en internet. Ningun hacker podrá acceder a él, ni siquiera la compañía telefonica, al menos con trafico ip.
Por último solo me queda comentar que este hack no es conocido por los técnicos de Telefónica, así que si algún día teneis una incidencia es mejor volver a la configuración original temporalmente, ya que quedaran bastante sorprendidos al ver que un router pueda llegar a funcionar sin ip pública.


Instrucciones (Ejemplo IP Pública: 213.97.57.33 Red local:192.168.0.0)

En el router:
En el menu WAN deshabilitaremos el NAPT ya que éste lo realizará el servidor.
En este menu tambien deshabilitaremos la ip local y la ip remota y las dejaremos en blanco ya que el router solo tiene que pasar los paquetes sin procesarlos y como ip usará la del servidor.
En algunos routers no dejan poner una ip en blanco, y si funciona poner ip=0.0.0.0 o 1.1.1.1

El siguiente paso es ir al menu de LAN,
aquí meteremos 2 ip’s ya que internamente los routers establecen un bridge y en nuestro caso queremos añadir dos redes, la publica y la local.
Para ello pondremos una primera ip que es 213.97.57.34 que es para la red publica, y otra ip para la comunicación con la LAN que puede ser la 192.168.0.2.
El router ya lo tenemos listo

En el servidor:
Ponemos dos ip’s, la primera es la ip publica robada del router, en nuestro caso 213.97.57.33 con netmask 255.255.255.248 y gateway 213.97.57.34 (la falsa del router), y despues una segunda ip 192.168.0.1 netmask 255.255.255.0 que hará de gateway de toda la intranet.

En todos los dispositivos de la intranet:
Ip automatica o fija y gateway=192.168.0.1 que será el servidor.



Eso es todo, a partir de ahora absolutamente todo el trafico que viene de la operadora pasará por vuestro gadget.

Impresión 3D, panorama actual

Seguramente todo el mundo ha escuchado en alguna ocasion la revolución que supondrá la popularización de las impresoras 3D. Estos aparatos se han vuelto tan accesibles que cualquiera puede adquirir uno para su uso en casa o en el trabajo.
Es una herramienta increíble, pero poseer la impresora es solo el primer paso de un largo camino hasta poder imprimir las piezas que pensamos, y aprovechar así todo el potencial de la impresora..
Este post tiene como único propósito enseñar las opciones que existen hoy en día con las impresoras de fusión FDM, y mostrar por cuales nos hemos decantado en Cabania para enseñar a los alumnos.

DISEÑO 3D

Primero necesitarás un programa para diseñar tu objeto, la mayor parte de programas de diseño 3d son de uso profesional y tienen un coste prohibitivo para un uso amateur o simplemente con propositos educativos como tenemos en Cabania.
Afortunadamente desde hace relativamente poco tiempo existen alternativas libres con un gran potencial y listas para usar, que nosotros recomendamos encarecidamente, y es el que enseñamos en Cabania a los alumnos.

FREECAD – Programa libre con gran potencial, es el que usamos en Cabania para uso propio y el que enseñamos a los alumnos. Es un programa paramétrico y diseñado para hacer piezas complejas, entrando en la liga de los programas profesionales de diseño 3D, por lo que si algún día un alumno quiere pasar a usar los programas profesionales lo tienen mucho más fácil.
OpenScad– Programa libre de uso avanzado, ya que los objetos se crean programando en vez de ser dibujados como los programas de diseño tradicionales.
Blender– Programa libre completamente profesional, para un uso más artístico que técnico. Se usa para hacer películas de animación 3D, y es muy utilizado para el modelado de piezas no técnicas.
Sketchup– Programa gratuito en la version basica. Se caracteriza por un fácil uso. Su objetivo es
SolidWorks,Catia,etc.. Programas paramétricos de coste muy elevado, que se usan en la industria para usos profesionales.

PROGRAMA DE IMPRESION

El programa de diseño 3d al final del proceso sacará un fichero en formato stl.
Ahora hace falta un programa que lea ese fichero, y internamente coja el objeto, lo haga rebanadas, y mande a la impresora la información de como hacer esas rabanadas una a una.
En el caso de la Prusa, dos de las opciones más populares son CURA y SLIC3R.
Ambos programas son libres.
CURA El más recomendado para iniciarse, de muy fácil manejo y buenas prestaciones en general. Un buen todoterreno.
SLIC3R Más complejo pero puedes tener mayor control de los procesos de la impresora.

FIRMWARE DE LA IMPRESORA

Finalmente la impresora, no deja de ser un pequeño ordenador que maneja la mecánica, el extrusor y otros sensores electrónicos. Este ordenador necesita un software que se comunicará con el ordenador y ejecutará sus ordenes a través un lenguaje standard conocido como GCODE.
Para el caso de la impresora Prusa, tenemos softwares como Marlin, Sprinter,Repetier,etc.

Para terminar un video de mi sobrino Pau usando el FreeCad y posteriormente el CURA para ajustar la impresión.

Un pequeño script para luchar contra la procrastinación

Si usais linux habitualmente, os dejo un tip que puede seros muy útil para evitar distracciones.
Se trata de un script que usa la funcionalidad de filtrado del firewall de linux.
Este es el script que uso yo, podeis modificar y añadir tantas webs como querais.


productividad.sh

webs="burbuja meneame hackaday elpais eleconomista slashdot chess"
for web in $webs
do
iptables -I OUTPUT -p udp --dport 53 -m string --string "$web" --algo bm -j DROP
iptables -I OUTPUT -p tcp --dport 53 -m string --string "$web" --algo bm -j DROP
done



Se ha de ejecutar como root por lo tanto: sudo productividad.sh

Otro día pondré otro pequeño script que sirve para fitrar centralmente todos los accesos de una red,por ejemplo tu casa, a webs o servicios, como facebook, snapchat, etc…
De esta manera puedes filtrar a ciertas horas estos servicios para que tus hijos no sean víctimas de la procrastinación y no hace falta requisarles el móvil o ordenador para que hagan sus tareas, y con la ventaja de no tener que instalar ningun programa en ningún dispositivo.