La materia de esta contribución ya es muy específica a la forma como realizo el proyecto del Carina. Como creo que esto impactará nuestra afición algún día y para los que embarquen en este rama de nuestra afición será de algún interés como he reñido en avanzar.
Esta imagen de la estructura informática de mi taller también indica la estructura de como pienso realizar la estructura informática de mi modelo de velero Carina.
El hombrecito a la izquierda abajo soy yo sentado frente a mi ordenador en la mesa de mi "oficina" que es parte de mi taller.
Aquí una foto de hoy que explica lo del laboratorio electrónico y la oficina en mi taller estar la una junto a la otra! Entre los 2 puestos de trabajo en mi taller pueden ver mi ordenador entre esos puestos. Tenga la pared lateral desmontada, pues uso el botón en la placa madre para arrancar el ordenador. También pueden ver una de las 2 pantallas que tengo conectadas al ordenador.
A la derecha del hombrecito, yo,esta el servidor. Pueden verlo sobre la mesa del laboratorio. Estoy empezando a armarlo. Para ello uso la placa madre "ASUS P6T WS Professional" que me compré hace ya bastante tiempo cuando mi ordenador dejo de poder ser arrancado usando Windows 10 Pro. esta placa madre es equivalente a la que uso en mi ordenador, pero la versión professional que entre otras tiene 2 portales para conectar Ethernet Gigabit. Uno de los portales Ethernet los uso para conectar a mi modem DSL, Fritzbox, por la cual tengo acceso al Internet de banda ancha. Por el otro portal Ethernet estará conectado mi ordenador, las líneas de 2 flechas indican esto en el gráfico. Eso permite usar el ordenador que usaré como servidor como portal al Internet y aislar mi red interna del taller del Internet. Es una protección adicional. Como a razón de mis primeros experimentos con las placas Raspi un ataque del Internet volvió mi ordenador inusable!
3 motivos me permiten realizar este servidor y como consecuencia el definir la estructura informática de mi taller.
La una razón es que la placa madre la tengo sin usar y una buena placa gráfica.
La segunda razón es que el costo del procesador Intel(R) Core(TM) i7 CPU 920 @ 2.67 GHz. Lo ofrecen en ebay arrancado por menos de 22 USDs!
La tercera razón es la disponibilidad de estas tecnologías en el procesador usado:
Intel® Turbo Boost Technology
Intel® Hyper-Threading Technology
Intel® Virtualization Technology (VT-x)
Intel® VT-x with Extended Page Tables (EPT)
Estos datos los tengo de la hoja de datos de Intel
aquí!. ya entraré en detalles al presentar la funcionalidad "Hypervisor tipo 1 que juega un gran papel en el porque he definido la estructura informática de mi taller tal cual lo muestra el gráfico.
El servidor conecta a mis placas Raspi por WiFi, lo que quier decir en el gráfico el símbolo de una antena. Las placas Raspi, la versión 3B por ejemplo ya viene con WiFi y Bluetooth integrado, pero un módulo WiFi para USB cuesta menos de 7 Euros. Por eso las 2 placas Raspi que muestro en el gráfico con los 3 puntos diciendo que pueden ser mucho mas placas Raspi y es por ese modo inalámbrico que el servidor se comunica con las placas Raspi. Eso indica que será posible que un smartphone controle mi velero en un futuro por medio de las placas Raspi!
Como ejemplos a los usos de la placa Raspi a la derecha muestro como es posible controlar múltiples placas Arduino por el bus I2C, hasta por WiFi es posible. Menciono aquí explícitamente las placas Arduino UNO porque las realidades me han demostrado que estas placas compradas en la China se consiguen por precios empezando por menos de 2 Euros! Yo me compré una para verificarlo por menos de 4 USDs. A ese precio las placas Arduino UNO son mas económicas que comprando la componente AVRmega328P y así son una excelente forma de mover el control específico de sensores y actores de la placa Raspi a una placa Arduino UNO y de controlar estas desde un Raspi.
A la izquierda muestro la otra posibilidad que estaré usando en mi velero Carina, las placas LPCXpresso, en especial la LPCXpresso 1769. Se que Arduino a publicado y hecho disponibles nuevas variantes con controladores ARM, pero para mis propósitos la placa LPCXpresso 1769 es mas adecuada por tener como periferia un decodificador de cuadratura, funcionalidad requerida para monitorear las posiciones de los motores de paso que uso como winches y de los sensores angulares magnéticos que monitorean y entregan la información de la posición actual del motor de paso o de los palos de las 2 velas del velero Carina que uso! Ya he hablado de ello antes en este hilo! A la izquierda de la imagen de la placa LPCXpresso1769 se encuentran las placas que conforman el kit de evaluación del controlador de motores de paso TMC2130, la
TMC2130-EVAL. Como la empresa Trinamic ofrece el acceso al código que implementa la funcionalidad del controlador ARM Cortex M0 que se encuentra en la placa izquierda del kit, tengo pensado pasar este código a la placa LPCXpresso!
Esto la presentación de la estructura informática y el aspecto físico de esta. Paso ahora a la estructura informática, la software!
Ya durante mis primeros experimentos con la placa RaspBerry Pi, corto Raspi, B+, pude verifiar lo siguiente:
Usando la software
"Teamviewer" puedo controlar las placas Raspi desde mi ordenador con Windows 10 como si tuviera mi teclado, mi ratón y la pantalla conectadas a la placa Raspi. Cada placa Raspi entonces hace aparecer su "escritorio" o la consola del sistema operacional Raspian en su propia ventana del PC con Windows. Así no necesito cambiar de puesto a la mesa del laboratorio electrónico mas que para armar circuitos el resto lo hago desde mi ordenador en mi "oficina"! Teamviewer es gratuito para uso personal no empresarial. Por razones de seguridad, creo haber aprendido la lección, implementaré previo a activar el entorno todas las posibilidades de seguridad que he estado estudiando en los últimos demasiados meses!
Empieza por usar canales de comunicación "ssh", "secure shell", que encriptan los datos transferidos y ademas requiere identificarse. Existen varios parámetros para dificultar el acceso de atacantes desde el Internet:
El usar ssh es el primero.
El requerir la identificación por clave el segundo parámetro.
Tercero es el usar adicionalmente "llaves". Para ello se generan llaves, pública y privada. Así solo cuando ambos lados tienen sus llaves es posible establecer la comunicación.
Cuarta es limitar el establecer canales de comunicación entre ordenadores conocidos y documentados en una lista.
Quinto es limitar el acceso a las placas Raspi solo por ordenadores "locales"!
Sexto es definir portales, es un numeral en la declaración que define cual portal es usado por una aplicación. Usando valores del numeral no usuales representa una barrera adicional. Claro que el servidor tiene que ser protegido para evitar que terceros pudieran acceder a estos daos en mi servidor! creo que así, siendo persona privada exclusivamente activa en sus aficiones el esfuerzo para acceder es demasiado grande para justificar el costo a un posible atacante casual!
Estos aspectos de seguridad me han hecho iniciar estudios tanto sobre criptología,
aquí el enlace al curso gratuito de la universidad de Stanford ofrecido por medio de la plataforma
"Coursera"! Adicionalmente los libros de la editorial
Packt ofrecen la posibilidad de estudiar el como se realizan ataques y de como, sabiendo de las técnicas se puede uno proteger. El lenguaje "Python", medio muy eficiente para programar las placas Raspi, disponible de forma gratuita tanto para las placas Raspi, como para ordenadores con Windows y otros, es usado por muchos atacantes y a la vez es una buena forma de implementar seguridad. Claro que to esto va en paralelo a estudiar a forno el sistema operacional "Linux", so que usan las placas Raspi.
Pero sigamos con otros aspectos esenciales y muy interesantes, al menos para mi y que son la razón entre las otras razones para implementar el servidor. El término clave aquí es la "virtualización"! Suena horrible, teórico y intimidante! Me encontré con esto cuando realicé que programadores usan entornos virtuales para proteger el sistema operacional de sus plataformas de trabajo. Un sistema virtual es un programa que realiza en el entorno una segunda "máquina", un segundo entorno del sistema. No real como lo representa por ejemplo Windows andando en el ordenador, sino imaginado, virtual! así cualquier barbaridad que pueda ocurrir programando se limita el sistema virtual y no afecta el sistema real, aquí por ejemplo Windows 10. Ademas evita que la instalación de utilidades en forma de programas acabe llenando Windows con "basura" que afecta rindiendo el ordenador o incapaz de ejecutar y lo vuelve lento. Usando el principio de virtualización cualquier cosa que instale u operé en el entorno virtual queda encapsulado en el entorno virtual y cuando cierro este entorno virtual todo desaparece!
De forma típica para mí, empecé a investigar el tema de la virtualización y de encontrar el procedimiento de trabajo apropiado para beneficiarme de la técnica de virtualización! Resulta que existen 2 tipos de virtualización.
El tipo 2 equivale a lo recién presentado. Aquí un sistema operacional, por ejemplo Windows o Ubuntu, controlan el ordenador tal cual lo conocemos como usuarios de ordenadores y el entorno virtual es una software que ejecuto como aplicación en Windows por ejemplo.
El tipo 1 es el que me fascinó por hacer posible redefinir el entorno informático de mi taller! Ahora tengo que introducir otro término, el llamado "Hipervisor!
Aquí el enlace a una página Wiki en Español que permite informarse en detalle. Esta funcionalidad existe en los 2 tipos que acabo de presentar y que así me permite presentar el como el servidor en conjunto con un hipervisor tipo 1 que presenta el como realizo el servidor presentado en el gráfico de mi entorno!
Aquí la software de virtualización, el tal hypervisor tipo 1, es ejecutado antes de inicializar el sistema operacional, por ejemplo Linux o Windows.
Aunque el gráfico no me gusta, creo que presenta de forma gráfico la diferencia entre un hypervisor tipo 1 y 2. Como lo muestra el gráfico el hypervisor tipo 1 es instalado y ejecutado previo a los sistemas operacionales. En mi servidor instalaré un hipervisor, tiene que ser gratuito para uso personal no empresarial y a través del hipervisor ejecutaré 2 sistemas operacionales, Ubuntu 16.04 TLS y Windows 10. Ambos sistemas operacionales son ejecutados en paralelo! Esto significa que sobre un mismo sistema de servidor físico puedo activar "Windows 10 Pro" y "Ubuntu 16.04 TLS" "Teamviewer" y presentar sus "escritorios" en sendas ventanas de mi ordenador Windows 10, aquel donde aparece el usuario en el gráfico, yo al mismo tiempo! es como si tuviera 2 servidores físicos. Uno ejecutando Windows, el otro Ubuntu! Ambos los opera desde mi ordenador!
Pero eso no es todo! Existen las funcionalidades en el procesador utilizado:
Intel® Turbo Boost Technology
Intel® Hyper-Threading Technology
Intel® Virtualization Technology (VT-x)
Intel® VT-x with Extended Page Tables (EPT)
Esto significa que el procesador que tengo y donde puedo comprar uno adicional para el servidor por menos de 30 Euros apoya la funcionalidad del hipervisor en su hardware interna haciendo así posible que cada sistema operacional tenga la impresión de tener bajo control exclusivo la hardware del acelerador gracias a estas funcionalidades!
Así en suma: Puedo, desde mi ordenador Windows 10 puedo controlar las placas Raspi y los 2 sistemas operacionales en el servidor gracias a que cada uno aparece en su propia ventana con su escritorio. Existen razones por la cual el tener Ubuntu 16.04 y Windows 10 Pro en paralelo y al tiempo y operables desde el escritorio de mi "oficina". Además, gracias a la aplicación "Paragon" puede acceder a los discos duros de Ubuntu desde el file explorer de Windows 10 Pro de mi ordenador. Para mí, que alegría. En el curso del 2017 tendré el entorno completo implementado si mi salud lo permite! Quizá alguno a quien esto interesa, puede entenderme porque me opuse a apoyar la realización de placas específicas para el modelismo naval y que tantos ataques personales causaron! Todo esto que he logrado hasta el día de hoy y que me abre estas excelentes perspectivas ha sido mi motivo. Yo quiero seguir mis estudios y experimentos en el entorno de mi proyecto del velero Carina y no ser el mil y uno que realiza nuevas placas tal cual se encuentran en cantidades ya en el Internet! La vida es de limitada longitud y tenemos que decidirnos por que ruta ir!