24 de octubre de 2017

Ubuntu de 64 bits en Onda Xiaoma 41

Recientemente adquirí un equipo realmente muy interesante, se trata de un Onda Xiaoma 41. Las características que iba buscando en esta ocasión eran tener un peso ligero (1,35kg), una pantalla decente (14,1" 1920x1080) y un precio reducido ($239,99). Y por si fuera poco, cuenta además con un procesador resultón (Celeron N3450) y SSD (64GB).

Onda Xiaoma 41 con Ubuntu 17.10

En su contra podemos decir bastantes cosas, porque en definitiva se ha recortado en él todo lo que se puede recortar y viene justito con lo mínimo. Pero quizás lo que a algunos les puede echar atrás es que el teclado no está en español. A éstos últimos decirles que no es un gran inconveniente que no se solucione con una pegatinas.

El curioso arranque UEFI de los Atom/Apollo Lake


Otro defecto, al menos para mi, es que trae instalado un Windows 10 que es lo que nos trae a este artículo en el que explicaré la instalación de Ubuntu 17.10.

Pero antes de eso, creo que interesa decir que en una ocasión anterior ya tuve un caso parecido, en concreto con el Lenovo ideapad 100S 11IBY. Equipo con un procesador Intel Atom, y cuya dificultad respecto a instalar sistemas como el de Ubuntu rádica en un arranque UEFI de 32 bits. Y tiene que ver con el caso actual del Onda Xiaoma, porque éste último cuenta con un procesador Intel Apollo Lake, heredero de esa tecnología Atom.

Dicho eso, y tal como ocurría en el caso anterior con los Atom, el problema a salvar reside simplemente en el arranque, tanto de los USB-Live que hagamos, como en la posterior instalación de Ubuntu en el equipo.

Y exactamente como en la ocasión anterior, la mejor ayuda la he encontrado en Linuxium:

http://linuxiumcomau.blogspot.com/

Preparando un ISO a medida

Afortunadamente la situación ha mejorado bastante, hasta el punto que para generar un archivo .iso preparado para arrancar y hacer arrancable nuestra distro favorita, tenemos un script que lo hace perfectamente bien. Se llama isorespin.sh y se puede encontrar en su web:

Customizing Ubuntu ISOs: Documentation and examples of how to use 'isorespin.sh'


Además del archivo script en el enlace viene muchísima y detallada información sobre su uso, pero por simplificar un poco las cosas, indicaré en pocos pasos su uso.

Lo primero es instalar algunos programas necesarios para poder usarlo sin problema, sin más, el comando para instalarlos todos es el siguiente:

sudo apt install -y squashfs-tools xorriso curl zenity

Lo siguiente es descargar el archivo script isorespin.sh, que recomiendo ubicar en alguna carpeta donde vayamos a realizar los cambios sobre el archivo ISO oficial que también tenemos que descargar. Una vez hecho, debemos darle permisos para poder ejecutarlo.

sudo chmod 755 isorespin.sh

Una vez tenemos todo preparado debemos tener claro el tipo de modificación que necesitamos realizar sobre el archivo ISO original. En el caso concreto del Xiaoma, se trata de un Apollo Lake, con lo que los cambios a realizar son los de adaptación a Apollo, que se añaden al script con la opción --apollo. El comando entonces sería algo así:

./isorespin.sh -i archivo_de_la_distro_oficial.iso --apollo

Lo dejamos trabajar, y al acabar nos habrá generado un nuevo archivo ISO basado en el que le hayamos pasado preparado para quemarlo en un USB.

Concretamente yo utilicé la versión final de Ubuntu 17.10 de 64 bits y como resultado obtuve el siguiente iso modificado:

linuxium-apollo-ubuntu-17.10-desktop-amd64.iso

Ahora tan sólo queda pasarlo a un pen drive para arrancar con él. Los pasos serán conocidos por muchos pero los pondré a continuación.

lsblk  // para obtener la ruta a nuestro USB, por ejemplo /dev/sdc1
sudo umount /dev/sdc1
sudo dd bs=4M status=progress if=linuxium-apollo-ubuntu-17.10-desktop-amd.iso of=/dev/sdc1


En este ejemplo he puesto como ruta /dev/sdc1 pero en cada caso particular habrá que poner el correcto correspondiente. ¡Mucho cuidado con no equivocarse!

7 de septiembre de 2017

Uso de FET para generar horarios para el colegio.

El uso básico del programa FET para elaborar horarios escolares, se puede encontrar en bastantes vídeos y manuales.

Esquemáticamente, para empezar hay que introducir los siguientes datos básicos:
  • Nombre del Centro.
  • Días por semana (5 - lunes, martes, miércoles, jueves y viernes).
  • Número de períodos/sesiones con las horas de inicio y fin (9:00, 9:45, ...).
  • Nombre de las materias que se imparten (Lengua, Matemáticas, Inglés, ...).
  • Tipos de materias que se imparten (Infantil y Primaria).
  • Profesores con los que cuenta el centro (Fulanita, Menganito, Sutanita, ...).
  • Grupos de alumnos que se quieren gestionar (I3A, I4B, 1ºA, 2ºB, ...).
  • Y por último y más importante las actividades.
 Las actividades hay que establecerlas especificando:
  • El profesor o profesores que entran en la sesión.
  • El tipo de actividad, si hemos distinguido entre Infantil y Primaria por ejemplo.
  • El grupo o grupos de alumnos que participan en la actividad.
  • La materia que se va a impartir en dicha sesión
  • El número de alumnos (se puede dejar en automático con -1)
  • El número de sesiones de esta actividad. ¡Pero ojo!
    • La duración se refiere a un mismo día
    • Si en la semana son 7 sesiones, dividiremos (split) en 5 días hábiles, y a dos de esas sesiones les daremos una duración de 2.
    • El Mínimo de días normalmente será 1, y el peso de esa restricción (weight) lo pondremos al 100% para que sea inflexible, o lo reduciremos en caso de que no lo sea.
Una vez introducidos los datos, ya podemos Generar el horario en la pestaña Horario. Pero normalmente tendremos que introducir antes otras restricciones, principalmente las de la pestaña Tiempo.
  • En Pausa estableceremos la hora del recreo.
  • En Profesores las horas de disponibilidad, no disponibilidad semanales.
  • En Actividades están las más útiles en mi opinión.
    • Actividades que tienen unos tiempos preferidos de tiempo
    • Mín de días entre grupos de actividades.
Una vez generado el horario nos dirá hasta qué punto se están cumpliendo las restricciones. Si nos sale cero o una cifra pequeña es que lo está resolviendo bien. Si es un horario complicado puede tardar en generarlo un minuto o dos. También nos dirá si hay alguna combinación imposible o en conflicto.

Seguidamente podemos consultar los resultados en la misma pestaña de Horario, principalmente lo podemos hacer por Profesores o por Alumnos. Dispondremos de las opciones de Tiempo y Lugar para bloquear actividades que nos interesen. Siendo un truco importante el hecho de que la última actividad que bloqueemos o desbloqueemos aparecerá al final de la lista de restricciones de Tiempo o Lugar al consultarla al completo con Todas.

Instalar el programa FET en Ubuntu

FET es un fantástico programa para poder crear horarios complejos para tu escuela o academia, se puede instalar en Ubuntu mediante dos métodos:

Forma sencilla


A través de la del Centro de Software de Ubuntu. No tiene ningún inconveniente, salvo que por lo general la versión que se instala no está totalmente actualizada.

También resulta sencillo hacerlo a través de terminal con el comando:

sudo apt-get install fet

Forma manual

Descargando su código fuente (http://lalescu.ro/liviu/fet/download.html) y compilándolo, que es principalmente de lo que va este artículo.

Lo primero que hay que saber de FET es el hecho de que está programado con el framework Qt. Por lo tanto para compilarlo, necesitaremos hacer uso del comando qmake, que normalmente no tendremos instalado y que en primer lugar deberemos de instalar del siguiente modo:

sudo apt-get install qt-sdk

Una vez disponemos del kit de desarrollo, nos vamos desde el terminal a la carpeta donde hemos descomprimido, y generamos los makefiles con el siguiente comando:

qmake fet.pro

Tardará unos diez minutos dependiendo de tu equipo, y luego terminamos de compilar poniendo tan sólo:

make

Una vez termine, ya estará listo el binario que podremos ejecutar directamente:

./fet

Y eso es todo.

7 de enero de 2017

Compartir escritorio de Ubuntu 16.04 de forma remota a través de Internet

En ocasiones, es muy útil poder acceder al escritorio de una máquina que no tenemos delante, y así resolver cualquier cuestión. Para ello existen las soluciones RDP, o Protocolo de Escritorio Remoto. En Ubuntu 16.04, vienen implementadas en la instalación básica, pero en muchos casos no conseguimos hacer que funcionen como nos gustaría. En este artículo voy a centrarme en los pequeños problemas que pueden dar y cómo se solucionan.



En primer lugar entender cómo funciona

El funcionamiento se hace a través de dos programas diferentes, el servidor y el cliente. El servidor lo haremos funcionar en la máquina que quiere compartir su escritorio, y el que viene instalado en Ubuntu se llama concretamente Compartición del escritorio. Por otra parte el cliente se ejecutará en el dispositivo desde el que queremos ver el escritorio de forma remota, y aunque hay varios el que viene por defecto actualmente se llama Cliente de escritorio remoto Remmina, o simplemente Remmina.

Otro punto importante a destacar, es que dichos programas pueden suponer un claro problema de seguridad por lo que su configuración inicial, sólo permite que funcionen dentro de la red local. Es decir, al hacer funcionar el servidor, abrirá un puerto TCP (por defecto el 5900) que sólo podrá ser visto por clientes que se encuentren dentro de la red local.

Eso no significa que no funcione igualmente bien desde equipos fuera de esa red local, desde cualquier otra conexión en Internet, y es lo que voy a explicar más adelante.

Por último aclarar que el protocolo que emplea este sistema se denomina VNC, y que existen otras aplicaciones que lo gestionan tanto para clientes como servidores. Por ejemplo para Android un cliente que está muy bien es VNC Viewer.

Configuración del servidor

Cómo he dicho antes, me limitaré a explicar los programas que actualmente trae Ubuntu, empezando por el servidor.

Poner en marcha el servidor, se hace sencillamente ejecutando el ya mencionado Compartición del escritorio, y marcando en la ventana de configuración que aparece, la opción de Permitir a otros usuarios ver mi escritorio. A partir de ahí se pone el servidor en funcionamiento y podremos acceder al mismo desde la red local.




Voy a explicar brevemente sus opciones.
  • Para permitir a otros interactuar con el escritorio, selecciona Permitir a otros usuarios controlar su escritorio. Esto permitirá a la otra persona mover su ratón, ejecutar aplicaciones y ver archivos en su equipo, dependiendo de la configuración de seguridad que esté usando.
  • Debe confirmar cada acceso a esta máquina. Si deshabilitas esta opción, no preguntará si desea permitir que alguien se conecte al equipo. Teniéndola activada es necesario estar presente para que puedan conectar.
  • Para solicitar a otras personas que usen una contraseña cuando se conecten al escritorio, selecciona Solicitar al usuario que introduzca esta contraseña. Si no se activa esta opción, cualquiera puede acceder.
  • Si el router de acceso a Internet es compatible con el protocolo UPnP y está habilitado, puede permitir que otros usuarios que no están en su red local vean su escritorio. Para ello, selecciona Configurar automáticamente el router UPnP para abrir y redirigir los puertos. Esta opción no es suficiente por si sola para compartir fuera de la red local.
  • Mostrar icono en el área de notificaciones. Para poder desconectar a alguien que está viendo el escritorio, hay que habilitar esta opción. Si seleccionas Siempre, este icono estará visible independientemente de si alguien está conectado o no.
Como he mencionando antes, la configuración es sencilla y en local funciona sin problemas una vez entendemos sus opciones. El caso más problemático será cuando lo que queremos es salir a Internet. Para eso lo mejor es dejar activada la opción UPnP, pues hoy en día casi todos los routers la soportan bien. Pero además debemos hacer algo más.


Hay un par de apartados de la configuración a los que sólo podemos acceder a través de dconf. Para cambiar la configuración de dconf, lo podemos hacer a través del terminal o de forma gráfica. Para hacerlo de forma gráfica hemos de instalar su editor:

sudo apt install dconf-editor
Luego lo llamaremos y ejecutaremos desde el dash o tablero, y nos dirigiremos al apartado org.gnome.desktop.remote-access


Dentro de dicho apartado, reconoceremos varias de las opciones que nos aparecían en la ventana de preferencias, y algunas más que son clave para lo que buscamos. Concretamente debemos modificar las opciones require-encryption y network-interface.

La opción require-encryption la deberemos desactivar en la mayoría de los casos, pues el tipo de cifrado puede que no sea el mismo para el dispositivo del servidor y del cliente.

La opción network-interface la debemos establecer correctamente, pues dejándola en blanco parece que limita la apertura del puerto a la red local. La deberemos especificar dependiendo de la interfaz que nos conecta a Internet y que podemos conocer con el comando ifconfig. Por lo general los valores válidos serán eth0 o wlan0, pero dependera del equipo concreto.

Conexión mediante el cliente

No voy a entrar en muchos detalles, la forma rápida de acceder a nuestro servidor una vez configurado, es usar un cliente, es este caso el ya comentado Remmina.


Es indispensable conocer la dirección IP del servidor, tanto si estamos conectando de forma local, como si lo hacemos a través de Internet. En el primer caso la podemos conocer usando el comando ifconfig, que nos proporcionará una IP del tipo 192.168.1.100

En caso de querer conectar a través de Internet una forma fácil de conocer la IP pública es acceder desde el mismo a alguna web que nos la proporcione, como por ejemplo http://www.cualesmiip.com/ y que será del tipo 216.58.210.163. También se puede obtener mediante el siguiente comando:

curl ipinfo.io/ip

Obviamente nuestro cliente no debe coincidir con la IP del servidor, deberán ser diferentes pues se tratan de dispositivos distintos con conexiones diferenciadas.

Pues bien, aclarado todo lo anterior, en la ventana de Remmina seleccionaremos como protocolo a usar VNC, escribiremos la dirección IP del servidor y le daremos a Conectar. Tras lo cual se nos abrirá el escritorio de forma remota y podremos observarlo o interactuar con él según la configuración específica que esté establecida en el servidor.