domingo, 12 de marzo de 2017

Cómo compilo e instalo un kernel en Ubuntu Linux?

Los torneos juveniles Evita sirvieron como propuesta a la juventud con el objetivo de manifestar la solidaridad y respeto a través del deporte, tanto en deportes individuales como en equipo Durante el discurso de inauguración de los torneos de 1948, Juan Perón enseña cómo compilar un kernel en Ubuntu.

Queridos niños!

Siento una enorme satisfacción inaugurar estos Juegos Nacionales Evita, bajo cuya bandera competirán limpiamente la juventud de la Nación. Son ustedes dignos representantes de esta tierra, y la felicidad y bondad rebosa en sus sanos corazones. No hacen más que agraciar a este viejo soldado.

Nuestra Nación se constituye por ineludible necesidad que la historia mediante un acto que engendra la Justicia pero también la necesidad: la de formar hombres de mentes sanas en cuerpos sanos.

El cuerpo puede ser maleado y tornado, a fin de hacer de él una herramienta de creación. Sin embargo, la mente, que es el sujeto creativo, ha de ser libre, y hemos de proponer para ella toda funciones de aprendizaje, para que - por medio de una cultura autóctona sana y positiva - los niños de hoy se conviertan en los mejores hombres del mañana, aquellos que puedan llevar el país en la senda de la grandeza.

La Nueva Argentina ha decidido para vosotros tal signo, de carácter eminentemente social. El deporte es una manera permitirá atresar corazones y mentes.


Pues bien, el corazón de nuestro Movimiento, el Justicialismo, está en Evita, y su músculo son los hombres que trabajan. Por fiel reflejo, nuestro sistema informático consta de un corazón: su Kernel Linux, y su músculo son las aplicaciones GNU. La realidad efectiva es que - en mi carácter de Conductor del Movimiento - os proveo de Kernels que se actualizan automáticamente cada tantos días a través de los repositorios oficiales de Ubuntu. En particular, estos Kernels oficiales representan versiones probadas de hace unos meses atrás, yy como tal son muy adecuadas para Ubuntu.

Sin embargo, nada impedirá a vosotros mismos compilar un Kernel propio, de factura más moderna, afinada y experimental. Y si lo deseamos, también podremos instalarlo en nuestro sistema para evaluarlo.

Tal acción no es simple, pero si vuestra alma es pura y desean la aventura, os instruiré como Conductor didacta para llevarlos a un buen resultado deportivo.

Vean niños, para compilar un Kernel, primero debemos descargar el árbol completo de su código fuente desde la web oficial del Kernel Linux, y luego crear un archivo de configuración para el procedimiento particular que querramos. Confome el procedimiento esté finalizado, podremos instalarlo.

En este caso utilizaré una versión del Kernel Linux estable, la 4.9.11, de muy reciente liberación. Es natural que salgan iteraciones nuevas cada pocos días, de modo que será poco deportivo correr "detrás del último Kernel". Mas bien consideren tal versión como un ejemplo avanzado al momento de este discurso. Pues bien, os enseñaré cómo compilar dicho kernel para Ubuntu, y crear a partir de la compilación un paquete .deb instalable.

¿Porqué compilar un kernel personalizado?

Compilar nuestro propio Kernel tiene sus ventajas y desventajas. Para cambiar el comportamiento del Kernel, uno debe compilarlo y luego reiniciar el equipo para que se cargue esta versión diferente de Linux. Ahora bien, la mayoría de las funcionalidades del Kernel Linux están contenidas en módulos opcionales. Algunos de los beneficios de contar con un Kernel personalizado son:
  1. Soporte de mayor variedad de hardware, incluyendo el de reciente aparición.
  2. Remoción de controladores y módulos no deseados/requeridos del Kernel, para agilizar su operatoria.
  3. Inicio más veloz, debido a tratarse de un Kernel "deportivo".
  4. Seguridad incrementada, debido a características/módulos/controladores adicionales agregadas o removidos.
  5. Aprenderán acerca del Kernel y su uso avanzado.
  6. Siempre correrán un Kernel de última factura.
  7. Menor empleo de memoria RAM.
Nota: Estas instrucciones son a modo de ejemplo, y fueron evaluadas tanto en Ubuntu Linux v14.04.4/16.04.2 LTS.

Requisitos

Daré por sentado que contamos la revisación médica, que vuestros padres poseen el carnet del Partido. Además, necesitaremos unos 10 GB de espacio libre en disco, amén de tiempo (idealmente un par de horas).

Instalar los paquetes requeridos

Abrimos una terminal y ingresamos el siguiente Comando de Organización para instalar las dependencias necesarias para la compilación del kernel:

sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc

...el sistema nos devolverá algo como:

Fig.01: Instalando el compilador gcc y sus muchachos peronistas

Acto seguido instalaremos el paquete kernel-package. Tendremos dos opciones, una instalarlo con toda la paquetería requerida (lo que rondará 1 GB de descargas)

sudo apt-get install kernel-package

...pero también podríamos usar el siguiente comando, que prescinde instalar paquetes adicionales relativamente innecesarios en ciertas condiciones. Si tienen dudas, ingresarán el comando anterior.

sudo apt-get --no-install-recommends install kernel-package

...el sistema devolverá algo como:
Fig.02: Instalando las utilidades necesarias para compilar el Kernel Linux.

Descargar el código fuente del kernel Linux

Ingresamos los siguientes comandos para descargarnos tanto el código fuente como las llaves PGP del mismo usaremos el comando wget, de la siguiente manera (naturalmente, modificaremos la URL correspondiente a la versión que deseemos):

cd ~ ;
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.14.tar.sign
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.9.14.tar.xz

...el sistema nos devolverá algo como:
Fig.03: Usando wget para bajarnos un árbol completo de código fuente de una versión reciente del Kernel Linux, desde la web oficial kernel.org

El acto de descargar el árbol de código fuente termina aquí. Sin embargo, os recomiendo realizar una verificación de autenticidad de la firma del mismo, para asegurarnos que no exista una descarga fallada o - mucho peor - una suplantación de Kernels por uno falso hackeado.

Para ello utilizaremos las herramientas de GnuPG para verificar la autenticidad de la afiliación al Partido Justicialista, es decir, confirmar la validez las firmas del Kernel. Para ello en este caso ingresamos:

unxz linux-4.9.14.tar.xz
gpg --verify linux-4.9.14.tar.sign

Tras unos segundos, Ubuntu verificará y nos devolverá algo como:

gpg: asumiendo que hay datos firmados en «linux-4.9.14.tar»
gpg: Firmado el dom 12 mar 2017 02:42:41 ART usando clave RSA ID 6092693E
gpg: Imposible comprobar la firma: clave pública no encontrada

Normalmente indicará que no podremos comprobar la firma, pues no la tendremos cargada en nuestro criptosistema. Para ver de quién es, debemos obtener las llaves del servidor público de llaves PGP a fin de verificar esta firma (en el ejemplo, la firma RSA key ID 6092693E). Ello lo haremos con:

gpg --keyserver hkp://keys.gnupg.net --recv-keys 6092693E

...y el sistema mostrará en pantalla:

gpg: solicitando clave 6092693E de hkp servidor keys.gnupg.net
gpg: clave 6092693E: clave pública "Greg Kroah-Hartman (Linux kernel stable release signing key) " importada
gpg: clave 6092693E: clave pública "Greg Kroah-Hartman (Linux kernel stable release signing key) " importada
gpg: 3 dudosa(s) necesaria(s), 1 completa(s) necesaria(s),
modelo de confianza PGP
gpg: nivel: 0  validez:   1  firmada:   1  confianza: 0-, 0q, 0n, 0m, 0f, 1u
gpg: nivel: 1  validez:   1  firmada:   0  confianza: 0-, 0q, 0n, 0m, 1f, 0u
gpg: Cantidad total procesada: 2
gpg:               importadas: 2  (RSA: 2)


Ahora que bajamos la firma digital de quien mantiene el Kernel Linux, comprobamos que el árbol comprimido esté firmado y no esté modificado por extraños:

gpg --verify linux-4.9.14.tar.sign

...el sistema nos indicará:

gpg: asumiendo que hay datos firmados en «linux-4.9.14.tar»
gpg: Firmado el dom 12 mar 2017 02:42:41 ART usando clave RSA ID 6092693E
gpg: Firma correcta de «Greg Kroah-Hartman (Linux kernel stable release signing key) »
gpg: AVISO: ¡Esta clave no está certificada por una firma de confianza!
gpg:          No hay indicios de que la firma pertenezca al propietario.
Huellas digitales de la clave primaria: 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E

Esto nos indica una firma pública exustente de Greg Kroah-Hartman y nos otorga la verificación por huella digital. Las personas que usualmente publican los Kernels Linux son su creador Linus Torvalds y Greg Kroah-Hartman, En el ejemplo tenemos la firma del segundo, y si bien no tenemos certificada su firma en nuestro propio criptosistema, bien podremos corroborar sus huellas digitales de la clave primaria. Al coincidir con las que ellos proveen públicamente. En este caso es la del compañero Greg, de modo que está todo OK.

Linus TorvaldsABAF 11C6 5A29 70B1 30AB  E3C4 79BE 3E43 0041 1886
Greg Kroah-Hartman 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E

En cambio, si recibiésemos la advertencia de “BAD signature” ("firma MALA") por parte del comando “gpg --verify”, y la huella digital no coincidiese con la de estos compañeros, significaría que la copia del árbol del Kernel que hemos descargado fue creada y publicada por otra persona, y podríamos definir que no es auténtica y podría tener infiltrados al Movimiento.

Una vez cumplimentada esta rutina de seguridad, podremos con tranquilidaddescomprimir el árbol del Kernel en nuestro equipo con el programa tar. Acto seguido verificaremos su contenido. Ello lo haremos con los siguientes Comandos de Organización:

cd ~
tar xvf linux-4.9.14.tar ;

cd ~/linux-4.9.14/ ;
ls


...la devolución en pantalla será intensa, pero reflejará algo como:

linux-4.9.14/
linux-4.9.14/.cocciconfig
linux-4.9.14/.get_maintainer.ignore
linux-4.9.14/.gitattributes
linux-4.9.14/.gitignore
linux-4.9.14/.mailmap
linux-4.9.14/COPYING
linux-4.9.14/CREDITS
linux-4.9.14/Documentation/
linux-4.9.14/Documentation/.gitignore
linux-4.9.14/Documentation/00-INDEX
linux-4.9.14/Documentation/ABI/
linux-4.9.14/Documentation/ABI/README
linux-4.9.14/Documentation/ABI/obsolete/
linux-4.9.14/Documentation/ABI/obsolete/proc-sys-vm-nr_pdflush_threads
linux-4.9.14/Documentation/ABI/obsolete/sysfs-block-zram
linux-4.9.14/Documentation/ABI/obsolete/sysfs-bus-usb
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-arvo
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-isku
linux-4.9.14/Documentation/ABI/obsolete/sysfs-driver-hid-roccat-koneplus
...etc
...etc
linux-4.9.14/virt/kvm/kvm_main.c
linux-4.9.14/virt/kvm/vfio.c
linux-4.9.14/virt/kvm/vfio.h
linux-4.9.14/virt/lib/
linux-4.9.14/virt/lib/Kconfig
linux-4.9.14/virt/lib/Makefile
linux-4.9.14/virt/lib/irqbypass.c


linux-4.9.14

arch   COPYING Documentation  fs ipc  kernel       Makefile README  scripts   tools
block  CREDITS drivers        include Kbuild  lib       mm REPORTING-BUGS security  usr
certs  crypto firmware       init Kconfig  MAINTAINERS  net samples  sound   virt

Configurar el Kernel Linux

Primero, copiamos el archivo .config existente de nuestro Kernel Linux actual para que el nuevo lo replique:

cd ~/linux-4.9.14
cp -v /boot/config-$(uname -r) .config


...el sistema nos devolverá algo como:

'/boot/config-4.4.0-62-generic' -> '.config'

Esto hará que el Kernel nuevo ya esté configurado como el que tenemos, salvo los componentes nuevos que se le hayan incorporado. Para configurar el Kernel nuevo, ejecutamos el siguiente comando:

make menuconfig

...la devolución en pantalla:
 Fig.04: Iniciando menuconfig
ADVERTENCIA: Si no trabajamos con conocimiento o cuidado, podríamos retirar el controlador o soporte de un dispositivo imprescindible y resultarnos en un Kernel "muerto" o no funcional. Por ejemplo, si se quita soporte EXT4 (el sistema de archivos genérico de Linux) , el sistema directamente podría no arrancar. Si estamos en duda, simplemente dejemos el componente activado como lo está, por defecto.

Nos aseguramos de guardar los cambios antes de salir de menuconfig.

Compilar el Kernel Linux

Necesitamos limpiar el árbol de código fuente y resetear los parámetros de kernel-package, y para ello ingresamos:

make-kpkg clean

Los resultados serán similares a:
Fig.06: Ejecutando el comando make-kpkg

Finalmente podremos compilar el Kernel personalizado. Para ello podríamos ingresar:

fakeroot make-kpkg --initrd --revision=1.0.peronista kernel_image kernel_headers

Para acelerar el proceso de compilación podremos hacer uso de la opción -j  (-j 7 significa que empleamos todos los 8 núcleos de nuestro procesador para la tarea computacional de compilar el Kernel Linux):

fakeroot make-kpkg --initrd --revision=1.0.peronista kernel_image kernel_headers -j 7

Ejemplo de devolución:

Fig.07: Comenzando a compilar el Kernel personalizado.

El programa fakeroot ejecutará el comando llamado make-kpkg en un entorno donde simula tener privilegios de administrador a fin de hacer la manipulación de archivos. Esto es útil pues nos permitir que la masa, en forma de usuarios simples sin privilegios, creen archivos contenedores (tar, ar, .deb etc.) mientras que los archivos contenidos en ellos sean creados con permisos pasavantes de administración. El comando make-kpkg - en tanto - compila paquetes de kernel a partir del código fuente del kernel linux. Las opciones que le hemos provisto son:
  • --initrd : Crea una imagen initrd.
  • --revision=1.0.peronista : Establece una revisión específica que se nos ocurra para nuestro kernel, como por ejemplo 1.0.montoto, etc.
  • kernel_image : Este indicador de destino le ordena producir un empaquetado Debian de la imagen del código fuente del kernel Linux, y cualquier módulo que hayamos configurado previamente en el archivo de configuración del kernel .config.
  • kernel_headers : Este indicador de destino le ordena producir un paquete Debian de la imagen del encabezado del kernel.
Tengamos en cuenta que la compilación del kernel puede llevar un tiempo, dependiendo de la potencia del equipo. Por ejemplo, en un equipo i5 de cuatro núcleos con 4 GB de memoria RAM llevó una hora. Al final, deberíamos ver algo como lo siguiente:

test ! -e debian/control~ || rm -f debian/control~
dpkg-gencontrol -isp -DArchitecture=amd64 -plinux-headers-4.9.14 \
                                          -P/tmp/linux-4.9.14/debian/linux-headers-4.9.14/
dpkg-gencontrol: warning: -isp is deprecated; it is without effect
create_md5sums_fn () { cd $1 ; find . -type f ! -regex './DEBIAN/.*' ! -regex './var/.*'      -printf '%P\0' | xargs -r0 md5sum > DEBIAN/md5sums ; if [ -z "DEBIAN/md5sums" ] ; then rm -f "DEBIAN/md5sums" ; fi ; } ; create_md5sums_fn                   /tmp/linux-4.9.11/debian/linux-headers-4.9.11
chown -R root:root                  /tmp/linux-4.9.14/debian/linux-headers-4.9.14
chmod -R og=rX                      /tmp/linux-4.9.14/debian/linux-headers-4.9.14
dpkg --build                        /tmp/linux-4.9.14/debian/linux-headers-4.9.14 ..
dpkg-deb: building package `linux-headers-4.9.14' in `../linux-headers-4.9.14_1.0.peronista_amd64.deb'.
cp -pf debian/control.dist          debian/control
make[2]: Leaving directory '/tmp/linux-4.9.14'
make[1]: Leaving directory '/tmp/linux-4.9.14'

Finalmente verificamos la exisencia de los archivos .deb de los paquetes del kernel:

ls ../*.deb 

...y debería indicarnos los dos paquetes, el encabezado y la imagen del Kernel peronista:

 
../linux-headers-4.9.14_1.0.peronista_amd64.deb  ../linux-image-4.9.14_1.0.peronista_amd64.deb 

Instalar el kernel personalizado

Una vez que se han generado los paquetes con los encabezados y la imagen del kernel personalizado, podremos instalarlo. Para ello tipeamos el siguiente comando dkpg para instalar el kernel personalizado en nuestro sistema:

cd ..
sudo dpkg -i linux-headers-4.9.14_1.0.peronista_amd64.deb
sudo dpkg -i linux-image-4.9.14_1.0.peronista_amd64.deb


La instalación de ambos debería suceder sin incidentes:

Selecting previously unselected package linux-headers-4.9.14.
(Reading database ... 96175 files and directories currently installed.)
Preparing to unpack linux-headers-4.9.14_1.0.peronista_amd64.deb ...
Unpacking linux-headers-4.9.14 (1.0.peronista) ...
Setting up linux-headers-4.9.14 (1.0.peronista) ...
Examining /etc/kernel/header_postinst.d.
Selecting previously unselected package linux-image-4.9.11.
(Reading database ... 110487 files and directories currently installed.)
Preparing to unpack linux-image-4.9.14_1.0.peronista_amd64.deb ...
Done.
Unpacking linux-image-4.9.14 (1.0.peronista) ...
Setting up linux-image-4.9.14 (1.0.peronista) ...
 
 Hmm. There is a symbolic link /lib/modules/4.9.14/build
 However, I can not read it: No such file or directory
 Therefore, I am deleting /lib/modules/4.9.14/build
 
 
 Hmm. The package shipped with a symbolic link /lib/modules/4.9.14/source
 However, I can not read the target: No such file or directory
 Therefore, I am deleting /lib/modules/4.9.11/source
 
Running depmod.
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/apt-auto-removal 4.9.11 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 4.9.11 /boot/vmlinuz-4.9.14
update-initramfs: Generating /boot/initrd.img-4.9.14
W: mdadm: /etc/mdadm/mdadm.conf defines no arrays.
run-parts: executing /etc/kernel/postinst.d/unattended-upgrades 4.9.14 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/update-notifier 4.9.14 /boot/vmlinuz-4.9.14
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 4.9.14 /boot/vmlinuz-4.9.14
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.14
Found initrd image: /boot/initrd.img-4.9.14
Found linux image: /boot/vmlinuz-4.4.0-62-generic
Found initrd image: /boot/initrd.img-4.4.0-62-generic
Found linux image: /boot/vmlinuz-4.4.0-21-generic
Found initrd image: /boot/initrd.img-4.4.0-21-generic
done

Reiniciamos el equipo

Ingresamos el siguiente comando:

sudo reboot

Verificamos que todo funcione correctamente

Tipeamos el siguiente comando para verificar que el Kernel nuevo esté cargado y funcionando correctamente. Debería iniciar correctamente, y en tal caso deberíamos probar los siguientes comandos para revisar que no tenga errores indicados.

uname -a
uname -r
uname -mrs

dmesg | more
dmesg | egrep -i --color 'error|critical|failed'


Por ejemplo:

Linux ubuntu-pj 4.9.14 #1 SMP Sun Mar 12 21:10:55 GMT 2017 x86_64 x86_64 x86_64 GNU/Linux

Y aquí lo tenemos, el Linux Kernel en su versión 4.9.14 peronista, instalado y operando correctamente.

Desinstalación de un Kernel Personalizado


Si por algún motivo deseamos desinstalar el Kernel que hemos instalado, sólo hemos de iniciar uno de los anteriores durante el menú de inicio de Ubuntu. En el caso de Grub, podremos iniciar Ubuntu con las opciones avanzadas y escoger arrancar un Kernel anterior. Una vez iniciado el sistema abrimos una terminal con Ctrl+Alt+T e ingresamos:

sudo apt purge linux-image-4.9.14_1.0.peronista_amd64.deb
sudo apt purge linux-headers-4.9.14_1.0.peronista_amd64.deb

sudo update-grub

Naturalmente, también podríamos eliminar el directorio temporal creado con:

sudo rm -r ~/linux-4.9.14/


Finalmente, reiniciamos el sistema:

sudo reboot 

martes, 7 de marzo de 2017

¿Cómo puedo instalar clones de juegos clásicos en Ubuntu?


El 6 de marzo de 1953 frente al logro social de inaugurar el Ciclo Lectivo en un nuevo Hogar Escuela Eva Perón, Juan Perón aprovecha para educar sobre cómo instalar programas en Ubuntu, y en particular clones libres de juegos clásicos.

Compañeros, es bajo la advocación y recuerdo de Eva Perón que quiero dejar inaugurado este hogar escuela pensando que ella los tutelará a todos desde el más allá, donde estoy persuadido que seguirá pensando y luchando por todos nosotros.
La educación es un bien social imprescindible para el crecimiento de los pueblos. Es ello el motivo de que nuestro Movimiento encarne sin trepidación los derechos de los educandos, y también los de aquellos que - como didactas - han dedicado a este apostolado su vida.

Sabemos que un hombre puede transmitir su conocimiento, no obstante la mejor de las enseñanzas es la que obra por el ejemplo. Toda acción constituye entonces una enseñanza que - cuando es así elevada - no requiere instruirse, sino hacerse. Así el niño comprenderá como si estuviese jugando, la cual es, en mi opinión, la manera más sana en la que se puede aprender.


Nuestro sistema operativo GNU con Linux, en su variante Ubuntera, cuenta con enormes facilidades para la enseñanza, y en ocasiones me han preguntado porqué no hago más por transmitirlas. He dicho que mis palabras son las de un Conductor, y que en ellas intento obrar por el ejemplo, para quienes así lo necesiten. Sin embargo, en esta gran ocasión, detallaré más lo que estoy haciendo para beneficio de todos. Recuerden: sensibilidad e imaginación son base para ver, ver es base para apreciar, apreciar es base para resolver, y resolver base para actuar.

La instalación de juegos es una acción propicia para saber más de estos cometidos prácticos.

En Ubuntu podremos instalar desde juegos muy someros para la terminal hasta los más tecnológicos y avanzados desarrollos lúdicos, con grafismos alucinantes. Los juegos de terminal de texto eran populares entonces, pero hoy a muchos podrían a muchos parecerles superados.



Naturalmente que este no es el caso, pero hoy profundizaremos sobre juegos para las terminales gráficas, aquella llamada "X", conformando opciones que interesen y sirvan a todos para jugar. Ya he indicado cómo instalar y jugar a Micropolis y Pingus, clones de los clásicos Simcity de Maxis (1989) y Lemmings de Psygnosis (1991). En el primero  replicaremos un barón del conurbano en el conocido juego sinfín de construcción de ciudades (al que se le incorporaron funcionalidades que recién aparecerían en las siguientes versiones).
...en tanto que en el segundo debemos conducir una tonta horda de pingüinos a salvo mediante órdenes de conducción que no los lleven a la muerte.

Esos ya los he explicado. Nuestro poderoso Movimiento también ha desarrollado otros juegos clásicos simples que podremos instalar en nuestro sistema y usarlos también para aprender.  El procedimiento de instalar juegos es similar al de instalar cualquier otro tipo de paquete de software libre, y nos permite entender mejor nuestro sistema operativo, lograr un mejor manejo del mouse y los dispositivos de entrada para aquellos que son absolutos principiantes, y porqué no, nos otorgan un merecido y sano divertimento.

Podremos instalar otros dos juegos arcade de una sola vez, haciendo uso de la terminal y el programa apt, el cual es un gestor de paquetes bien dotado. Para ello primero abrimos la terminal con Ctrl+Alt+t, y a continuación ingresaremos un comando encadenado, tipeando lo siguiente:


sudo apt install moon-lander funnyboat alienblaster

Vean señores, se dice comando encadenado pues el mismo consta de varias órdenes en una. Las desglosaremos individualmente para su comprensión, a saber:  

  sudo es un comando que significa "realizar como súper usuario" (en inglés, super-user do, abreviado sudo. Toda vez que ingresemos esta orden en particular como prefijo de otras, el sistema nos solicitará nuestra contraseña de superusuario para continuar, y se la empleará como orden "llave" cuando se desee realizar cualquier tipo modificación al sistema (por ejemplo, instalar o desinstalar un programa).

  apt es el programa de instalación o desinstalación de paquetes y en este caso es la orden principal de todo este comando en particular. A continuación le indicamos qué queremos hacer con apt, por lo que le indicamos el sufijo install ("instalar"). Y finalmente se indican los nombres de paquetes a instalar, en este caso los paquetes de los juegos moon-lander y funnyboat.

En resúmen, sudo apt install moon-lander funnyboat le está ordenando al intérprete de comandos que como superusuarios, deseamos establecer una acción de modificación del sistema, en la cual ordenamos que apt descargue de internet e instale los paquetes moon-lander y funnyboat. Al presionar Enter, el sistema nos solicitará nuestra contraseña "a ciegas", y una vez ingresada la misma, procederá a la descarga e instalación.

Una vez que lo haya terminado, para ejecutar el primer juego debemos ir a Aplicaciones / Juegos / Moon Lander.

Se trata de una versión del clásico Lunar Lander, en el cual habremos de depositar suavemente nuestra cohete espacial en una de las zonas designadas en un cuerpo planetario (considerando acción gravitatoria, potencia y consumo de combustible de nuestros retrocohetes). Usaremos las Flechas del cursor para activar los mismos, activándolos intermitentemente cual Neil Armstrong.

El segundo es una arcade 2D que podremos encontrar en Aplicaciones / Juegos / Funnyboat. Nos haremos a la mar en un simpático vaporcito saltarín. Lo manejamos con las flechas del cursor y disparamos su cañoncito con la barra espaciadora.
El tercero es un clónico de los clásicos fichines con scroll vertical, para reventar naves espaciales y recoger Powerups. Lo encontraremos en Aplicaciones / Juegos / Alienblaster.
Además de los arcades, otras de los softwares lúdicos favoritos son los solitarios, ya que todo entorno operativo gráfico que se precie incluye alguno capaz de distraernos. En su momento, tenían la secreta intención de adiestrar al usuario en el uso del entonces novedoso ratón. Nuestro sistema operativo posee varios paquetes de solitarios, que podremos instalar desde la terminal si ingresamos el comando:

sudo apt install ace-of-penguins

...se instalará en Aplicaciones / Juegos un combo de juegos de solitarios para nuestro entorno gráfico. Entre ellos los consabidos solitarios de baraja inglesa, el FreeCell, Golf, Spider, Thornq y aquél que es "el de Window$". También tendremos un buscaminas, el juego de fichas Taipei, el damas chinas ("pegged") etc.

Si somos muy fanáticos de los solitarios de cartas, podremos instalar el gestor de solitarios PySolFC con:

sudo apt install pysolfc pysolfc-cardsets

Lo ejecutamos desde Aplicaciones / Juegos / PySol Fan Club Edition.



Se trata de un enorme conjunto de solitarios de baraja, totalmente configurables. Podremos elegir entre los distintos juegos soliarios de baraja desde el menú Select. Allí tendremos los más comunes (submenú "Popular games"), junto con una variedad muy grande de distinto tipo de solitarios, todos ellos categorizados.

Mediante la Ctrl+E podremos elegir entre distintas barajas para jugar. Atento al tamaño de los monitores actuales, recomiendo las barajas de tamaño extra-grande listadas bajo la categoría Size / XLarge cardsets.
Desde el menú Options / mouse podremos configurar cómo queremos usar el ratón (arrastrar y soltar o como yo prefiero, "apuntar y cliquear"). Mediante la tecla H nos sugerirá una jugada, mientras que Ctrl+D activa/desactiva la modalidad "demostración".

Podremos activar la opción de autoresolución (Autodrop), la cual ejecuta automáticamente los apilamientos y hace mas ameno el juego computado.
En tanto, podremos instalar un completo juego de Póker, tanto para jugar contra jugadores controlados por la CPU, como para loguearnos a servidores públicos de póker online. Lo haremos con:

sudo apt install pokerth


También podemos desear clásicos de tiros, que involucran muerte y destrucción. Por ejemplo ingresando:

sudo apt install freedoom

....instalaremos un clon liberado bajo GPLv2 del mítico superclásico de acción Doom, de John Romero para Id Software. Se trata de un shooter tridimensional en primera persona, en el cual habremos de ingresar a una base infestada de horripilantes alienígenos gorilas a los cuales debemos eliminar con un pesado arsenal.
Otros juegos tienen reminiscencias clásicas pero con ideas totalmente novedosas. Un ejemplo es Rocks n Diamods ("rocas y diamantes"), que podremos instalar con:

sudo apt install rocksndiamonds

La instalación incluye solamente lo que podemos llamar un frontend del juego, pero los niveles y los contenidos debemos descargarlos específicamente. Afortunadamente ello es simple pues existe un módulo que se activará automáticamente durante la instalación. Simplemente seleccionaremos qué módulos deseamos instalar.

Yo he seleccionado todos. Debemos usar la tecla Tab y presionar el botón aceptar para comenzar la descarga, la cual llevará unos escasos segundos o minutos.

Una vez concluida la descarga tendremos un juego puzzle, que podremos ejecutarlo con el comando:

rocksndiamonds

...o podremos crear un lanzador para el mismo en Aplicaciones / Juegos.

El juego en sí tiene contiene elementos del clásico Boulder dash, así como Sokoban, bomberman y varios otros. Debemos mover al personaje cavando túneles y recoger los diamantes necesarios y luego alcanzar la salida, mientras que debemos evitar ser aplastados o encerrados por las rocas que pueden caer por gravedad. En un inicio los niveles serán sencillos, pero con el correr de los mismos se irán tornando en puzzles cada vez más complicados.

Naturalmente que también tendremos un clon de Sokoban (aquel juego donde había que empujar inteligentemente cajas), instalando el Xye. Lo haremos con:

sudo apt install xye

...y lo ejecutaremos desde Aplicaciones / Juegos / Xye.

En el controlaremos a nuestro personaje, una canica verde, y habremos de empujar las cajas amarillas, mientras "comemos" o nos desplazamos a lo largo del campo de juego.
Finalmente, podríamos querer instalar los clones del clásico de clásicos: la obra maestra del compañero Alexei Pajitnov: el Tetris. Se trata de un puzzle en base a los tetraminos soviéticos. Y en su honor contaremos no con uno, sino con dos clones:

sudo apt install ltris quadrapassel

Ltris es una variante moderna que cuenta con la opción de jugar de a dos o contra hsta 3 jugadores controlados por la CPU, incluso en pantalla completa.
Mientras tanto, Quadrapassel es una variante simple y directa, que cuenta con una opción de pausa.

sudo apt install blockout2 

Este tercer clon mas bien es una iteración libre del Blockout II de Jean-Luc Pons, de 1989. En ella empleamos tetraminos, pero en un entorno tridimensional.





sábado, 4 de marzo de 2017

¿Cómo aíslo sectores defectuosos de un disco rígido con Ubuntu?

¡Compañeros!

Nuestro Movimiento no es gregario, sino que consta de múltiples sectores que responden a diferentes visiones y se han mancomunado pues comparten un objetivo en común: la liberación de la Patria, sus trabajadores y su Software. A los muchachos les gusta ponerse calificativos, los hay ortodoxos, los hay heterodoxos, los hay combativos, los hay contemplativos, pero todos trabajan.

Si algún sector se pone incordioso, bien podremos aislarlo para que no sea imberbe, y que una manzana podrida no arruine el cajón. Esto es así pues nuestro movimiento cuenta con sus propias autodefensas.

Esto, que existe en la política, también tiene su correlato en la informática. Vean señores, una de las noxas más corrientes que pueden afectar a los discos rígidos convencionales son los sectores dañados. Si bien es cierto que muchos discos rígidos puede imitar al Rastrojero en el sentido de durar años sin problemas mecánicos, también es cierto el hecho de que otros puede "cariarse". Se sufrirán así errores de lecto-escritura en el plato soporte que podrían comprometer los datos y - si el disco es aquél en el cual está instalado el Ubuntu - podría suceder que el sistema operativo siquiera pueda arrancar...

Este tipo de excrecencias - si bien minoritarias - existen, y de ser capaces de enfrentarlas con software libre.

Ya he explicado cómo hacer uso del sistema SMART para analizar el desempeño y los posibles errores de nuestro disco rígido. Recomiendo hacer ello en primer lugar, pues gracias a los modernos sistemas de archivos como el EXT4 empleado por nuestro Ubuntu, podremos zafar de no pocos incidentes de disco.


Sin embargo, si nuestro disco está parcialmente dañado - y sobre todo, si se trata del disco de arranque donde está instalado Ubuntu - habremos de tomar medidas más serias para intentar solucionar el problema.


Para reparar sectores dañados de un disco duro, necesitamos tener Ubuntu 12.04 LTS o superior. Más que reparar, lo que haremos es aislar esos sectores dañados para que Ubuntu no escriba ni lea en ellos.

Primero tenemos que saber es dónde están los sectores defectuosos y para saber ese dato vamos a Aplicaciones / Accesorios / Discos, seleccionamos el disco que está dañado. Debemos prestar atención pues estará nomenclado como /dev/sdiX. Recordemos que en GNU Linux, /dev/sd indica el dispositivo de disco rígido, en tanto que i indica el identificador del mismo, y que X es el número de la partición a reparar.Por ejemplo, en nuestro ejemplo será el disco /dev/sda1

Lo seleccionamos y hacemos clic en el botón “Ver datos SMART“.
Sectores defectuosos
Vean señores, si la unidad de disco que queremos reparar es la que contiene el sistema operativo, o directamente si Ubuntu no arranca por error en disco, tendremos que revisar el rígido en modo live - esto es, arrancando Ubuntu en modo "prueba" desde un DVD o pendrive de instalación - pues el disco rígido no podrá ser montado ("activado").
Por el contrario, si el disco rígido no contenía el sistema operativo (o sea, se trata de un disco secundario), esto no será necesario y podremos tomar esta acción desde nuestro Ubuntu ya instalado.

Una vez arrancado el sistema operativo, abrimos una terminal con Ctrl+Alt+T e insertamos el siguiente comando:

 sudo fsck -c -y -v /dev/sdaX

Os indicaré las opciones del comando fsck a fin didáctico:

  • -a. Confirma automáticamente. No recomendado.
  • -c. Comprueba los bloques en el disco.
  • -f . Fuerza el chequeo aunque todo parezca OK.
  • -v . (verbose) despliega más información.
  • -r . Modo interactivo. Espera nuestra respuesta.
  • -y. Asume que nuestra respuesta será siempre afirmativa.
Si encontramos errores físicos en el disco, también podríamos querer revisar su superficie entera (o sea, todo el disco en lugar de una partición) con el comando badblocks para analizar los sectores defectuosos. Para ello sí o sí habremos de arrancar con un LiveDVD o pendrive, y ejecutamos el comando:

sudo badblocks -s -v -n -f /dev/sda

Nuevamente os indicaré el significado de los sufijos:
  • -s. Nos muestra el proceso de escaneo del disco, mostrándonos los sectores ya chequeados.
  • -v. Nos indica el modo de escritura utilizado.
  • -n. Nos pone en modo no destructivo, esto quiere decir que se recuperarán los sectores dañados y la información en el disco duro no será dañada o eliminada.
  • -f. Reparará los sectores dañados.
Es mejor hacerlo siempre desde modo live ya que puede fallar el sistema y es más seguro. Este proceso puede durar horas pero es bastante efectivo para seguir operando el sistema.

La única verdad es la realidad, y esta dicta que una vez terminado el proceso paliativo sobre el disco rígido, siempre será recomendable someterlo a un formateado completo (que se llama "de alta") para volver a utilizarlo sin riesgos.

Como corolario será útil comprender también que los discos rígidos convencionales seguirán empleando por varios años mas. De momento tienen una mejor relación giga por peso, y nos ofrecen una solución muy aceptable para grandes volúmenes de información. Pero tienen ya un reemplazo previsto: de un tiempo a esta parte he recomendado a la Masa utilizar como medios de instalación para Ubuntu los modernos discos de estado sólido peronistas (SDD). A diferencia de los discos rígidos convencionales (HDD, que constan de un plato rotativo y electromagnetizado en su interior), los de estado sólido consisten en una memoria flash sin partes móviles, y son apreciablemente más veloces y resistentes a los golpes. Así hemos de ser los Justicialistas.

jueves, 2 de marzo de 2017

¿Cómo instalo Skype 5 Beta en Ubuntu?

¡Descamisados!


La lid que hemos de afrontar no es otra que una verdadera lucha por la Liberación, pero no podremos hacerlo solos. Son continentes enteros los que se están liberando, y con ellos se encuentra nuestro destino.

La grandeza de la Patria puede lograrse de una única manera: con el bienestar su Pueblo. Y para ello es fundamental que la Columna Vertebral de nuestro Movimiento - que son los hombres que trabajan - se unan decididamente en pos de dicha Liberación. La fraternal unión de los hermanos de nación, de esta manera constituida, no sólo será invencible, sino que será inquebrantable.

Para ello es importante una buena comprensión y un alto entendimiento de las necesidades del otro. Y ello no puede lograrse sino siendo un hombre del Pueblo. Por tal motivo nunca podrá la oligarquía comprender la grandeza de la Nación, y mucho menos hacerla efectiva. Sus escasos miembros conciben una República baldía, atenta sólo a sus espúreos intereses, y tal sentir lo llevarán también a su software.

Skype es un software privativo para videollamadas que se integra opcionalmente con Ubuntu desde su versión 9.04LTS, pero realmente el cliente nativo para Linux no contaba con versiones actualizadas desde hacía años, cayendo casi en la categoría de software privativo "abandonware". La última versión nativa Justicialista consiste en la 4.3.0.37 de 2014, escrita en QT, la cual he seguido empleando y - por así decirlo - es bastante confiable.

El Capital, escondido es sus asquerosas madrigueras, ocasionalmente sale para afectar a los hombres probos. El hecho de que Micro$oft adquiriese $kype hizo presente entonces las consabidas artimañas a las que nos tiene acostumbrados la Oligarquía cuando desea cercenar derechos adquiridos: comenzaron a hacer circular rumores referentes a "cancelar el servicio para mejorar la experiencia", "anular las aplicaciones dedicadas en pos de webapps multiplataforma", "promover la convergencia para dispositivos móviles", "reemplazar un servicio interpares por un modelo orientado a la nube", amén de sandeces perimidas por el estilo...

La defensa de los derechos de los trabajadores ha de ser una de las premisas bajo las cual hemos de cobijarnos. Por tal motivo, tengo razones para recomendarles, como Conductor, no instalar clientes orientado a nube; todos sabemos que ello es un remedio para zonzos, destinado a una enfermedad que nadie tiene. Significa confiar nuestras comunicaciones privadas a un servidor proporcionado por terceros. De hacer así, poco habríamos avanzado desde el viejo teléfono...

Mi recomendación reside en emplear clientes libres, distribuidos y cifrados capaces de entablar comunicaciones interpares, tales como Ring (el favorito de Evita), o eventualmente Wire.

En particular, he notado que el nuevo cliente, si bien cuenta con todas las opciones del Skype para la Web, es de ejecución más lenta que el viejo cliente nativo para Linux.

Aún así, podríamos querer instalar la nueva versión de $kype para Linux en su versión 5.0.0.5 beta (paquete identificado como skypeforlinux). Incluso podremos contar con ambas versiones instaladas a la vez, pues el paquete del viejo cliente se llama simplemente skype y no "interfiere" con el nuevo en tanto no usemos ambos al unísono. Al ser así, podremos instalar esta nueva versión para Linux y evaluarla.

Como primer temperamento descargamos el cliente empaquetado de Skype 5 beta desde aqui.

Una vez descargado el paquete, podremos instalarlo haciendo doble clic en él y presionando el botón Instalar Paquete.

Otra forma de instalarlo es desde la Terminal, abriendo una con Ctrl+Alt+T e ingresando los siguientes Comandos de Organización:

cd ~/Descargas ;
sudo dpkg -i skypeforlinux-64.deb ;


Una vez instalado, simplemente debemos ejecutar el cliente desde Aplicaciones / Internet / Skype.

Naturalmente que en primera instancia nos solicitará usuario y contraseña de Skype, necesarios para darnos de alta. Conforme nos conectemos, tendremos a nuestra disposición la moderna interfaz de usuario de Skype.

Entre las características nuevas implementadas en $kype 5.0.0.5 encontramos:
  • Videollamadas par-a-par. Si bien el viejo cliente QT para Linux era capaz de hacerlas, la versión antigua de la webapp sólo podía hacer uso de llamadas de voz. Ahora se integró la funcionalidad de videollamada, y funciona bien.
  • Hacer llamadas con Crédito Skype: Por fin se pueden usar los créditos Skype (en dólares) para hacer llamadas a teléfonos de línea y celulares.
  • Compartir pantalla: Esta función presente en la aplicación QT ahora ha sido replicada y se puede mostrar el escritorio con los clientes que se ejecutan en Windows 7, Mac, etc.

De momento no se pueden emplear llamadas en conferencia.

Si deseamos desinstalar el cliente nuevo de Skype, podremos hacer uso de la terminal e ingresar la orden:

sudo apt remove skypeforlinux

Cómo ejecuto programas gráficos en un servidor SSH y los recibo en un cliente gráfico?

¡Trabajadores!


Antes de que finalizara la conflagración que se había desatado, comprendimos la situación histórica en la que nos veríamos envueltos como nación neutral y acreedora. Vislumbramos que nos querrían hacer pagar la Segunda Guerra como nos habían hecho pagar la Primera. A ello opusimos lo que siempre ha de hacerse: una clara planificación.

Concebimos una acción de acreencia según la cual nuestros deudores harían honor no en el metálico devaluado que planteaban darnos en sus términos y  tiempos, sino que entendimos aquel viejo refrán que reza "quien pone al juego sus dineros no ha de hacer cuenta de ellos". Terminaron largando los teléfonos, los servicios, los trenes.

Ello es así, pues quien planifica, gana. Desde un inicio planifiqué  la arquitectura de GNU de manera similar a la de UNIX, y como tal, su capacidad de operar como cliente de servidores remotos. Esto era así porque en aquel entonces las computadoras aún no eran esencialmente "hogareñas" ni "personales", sino mas bien equipos de uso público y compartido.

Este accionar social en la informática no es pernicioso sino muy positivo: enseña la noción básica del comportamiento humanista: el compartir. No solamente debemos compartir el conocimiento representado por nuestro software, sino también el material donde el mismo corre.

Al constituirse las computadoras personales ("PC") y dotarse a estas con GNU con Linux, hemos logrado un ápice en el desarrollo doctrinal, pues tendremos la Justicia Social y lo mejor de los dos mundos, y ello nos permitirá lograr el éxito en los más dispares de los escenarios.



Consideremos un ejemplo, que es la manera a través de la cual ha enseñar todo didacta.

En muchos casos no tendremos acceso físico a una computadora, mas contaremos con la opción de contactarnos con ella telemáticamente. Personalmente favorezco el uso del cliente-servidor cifrado OpenSSH (Secure Shell). Como ya he explicado, ejecutando un cliente de conexión en nuestra terminal local, podremos "entrar a otro equipo remoto", ejecutar programas en dicho sistema, y recibir los resultados en nuestra terminal local. Esto es posible tanto dentro de la red local (LAN) como a través de internet, y avala amplias posibilidades.

Es sabido que normalmente la terminal opera enviando únicamente caracteres, de manera que se trata de un entorno "sólo texto" rápido y capaz de ser utilizado sin toses en situaciones donde  la velocidad de conexión se encuentra muy restringida. Existen una amplísima variedad de programas "solo texto", y podremos hacer todo tipo de tareas con ellos (limitados siempre a trabajar con caracteres puros).

Ahora bien, otra posibilidad muy interesante consiste en utilizar el potente
modelo gráfico de GNU, el servidor "X", para hacer lo mismo pero con nuestra terminal gráfica. Significa que podremos ejecutar en otro equipo aplicaciones gráficas, y "traernos" dichas ventanas gráficas hacia nuestro equipo local.


Esto es así por la mismo motivo descripto anteriormente: GNU está concebido de una manera tal, que el sistema  gráficos es antes que nada un sistema cliente-servidor, y si bien el servidor y el cliente se encuentran normalmente en el mismo equipo y operan prácticamente en tiempo real, nada impide que podamos trabajar de una manera en la cual el servidor gráfico "X" sea remoto, y el cliente gráfico "X" sea local. En tal caso coloquialmente decimos que nos estamos "trayendo las X".


La única limitante es la velocidad de conexión, pues "traernos las X" requiere un ancho de banda apreciablemente mayor que operar en una temrinal "solo texto". Pero fuera de ello, trabajar de tal manera es sumamente sencillo.

Normalmente nuestro sistema Ubuntu debería ya tener todo instalado para hacerlo. Simplemente hemos de estar en nuestro escritorio gráfico y debemos ejecutar una terminal de texto con Ctrl+Alt+T. A continuación le e indicaremos la orden SSH para conectarnos, pero con el sufijo -X, según la siguiente sintaxis:

ssh -X usuario@equipo

Y se nos solicitarán los credenciales para el usuario especificado. Si no se
especifica usuario alguno, el cliente usará nuestro nombre del usuario actual, que podría coincidir o no con el del equipo remoto.

Una vez establecido en enlace seguro con el equipo remoto y recibir la ventana gráfica en nuestro equipo local, debemos indicar el nombre de la aplicación en la terminal.  Conviene agregarle el sufijo de ejecución continuada "&" para que la aplicación continúe ejecutándose en el equipo remoto en segundo plano y nos devuelva al interprete de comandos

por ejemplo:

xclock &

Ejecutará el programa xclock que muestra un reloj gráfico en el equipo remoto, pero veremos la ventana resultante del mismo en nuestro propio escritorio gráfico. También podremos usar programas gráficos más complejos con un uso de ancho de banda algo mayor:

firefox &

...ejecutará el navegador web en el equipo remoto y veremos la ventana en nuestro equipo cliente, como si de un uso local se tratara. Incluso podremos utilizar el ratón.

Indudablemente que si tenemos un ancho de banda muy adecuado (por ejemplo, contamos con una buena red Gigabit LAN), bien podríamos hacer uso de programas complejos en un servidor potente, y ejecutarlos remotamente desde nuestra terminal gráfica.

viernes, 24 de febrero de 2017

¿Cómo creo un servidor de FreeRadius en Ubuntu?

Juan Perón definió claras políticas a seguir para los partidarios de su doctrina, y también indicaciones para quienes no lo eran. También enseñó cómo instalar un servidor RADIUS para emplear acceso Wifi firmado digitalmente bajo el estándar WPA2-Enterprise en Ubuntu

(...)
Siempre he dicho que el que no piense como nosotros, debe sacarse la camiseta peronista y se va. Por perder un voto no vamos a ponernos tristes, al fin y al cabo nadie ha podido teñir el océano con un vaso de tinta. Si fuese comunista, iría a la sede del Partido Comunista.

Si eso pasa en la política, imagínense lo que sucede con las redes Wifi que toda empresa tiene por ahí: son muy propicias para que cualquiera quiera colgarse y aprovecharse.

Analicemos el problema y seamos honestos. Probablemente vuestra contraseña de Wifi empresarial sea algo bastante simple. La mayoría de la gente lo hace así pues debe convenir verbalmente dicha contraseña con nuevos usuarios, muchas veces molestos y realmente temporales, los cuales han de tipearlas en un incómodo Smartphone. De este modo que es probable que la contraseña no tenga 63 caracteres aleatorios y a lo sumo sea algo tontorrón, asi como "riverboca canchapelota".

Para contar con una verdadera seguridad, deberíamos emplear un certificado de encripción precompartido. Esto elevaría nuestra seguridad desde el concepto de "aquello que debemos saber" (nuestra contraseña de wifi) a "aquello que hemos de tener" (un archivo "llave" de certificado de encriptación).

Para ello existe el estándar RADIUS. Se trata de un acrónimo para "Servicio de Autenticación Remota para Usuarios Ingresante", y describe una serie de maneras para poder acceder a un servicio (en este caso, loguearnos a una red inalámbrica) sin necesidad de una clave memorizada, sino por medio de la revisión de un archivo certificado y con vencimiento, emitido por el mismo servidor.

La mayoría de los routers modernos cuentan con soporte para la norma WPA2-Enterprise, la cual establece el uso de un servidor de tecnología RADIUS para la autenticación de clientes.

Ahora bien, existen muchos esquemas versátiles en el que podemos usar la tecnología RADIUS, pero en aras de una sencillez y robustez Justicialista, os propondré una en la que se empleará un demonio basado en Ubuntu Server que generará certificados para los usuario, firmados digitalmente y con vencimiento de un año. Luego estos habrán de instalarlos en sus dispositivos.

Asumiremos que tenemos un router Wifi que soporta WPA2-Enterprise. Su punto de acceso debe estar configurado con una IP estática. También necesitamos un servidor con una dirección IP estática corriendo Ubuntu 16.04LTS, sobre el cual correremos el servidor RADIUS.

En primer nos conectamos al servidor como Conductores (root), a fin de instalar el paquete del demonio FreeRADIUS en él. Ya he expicado antes cómo instalar Ubuntu Server 16.04LTS a fin de emplearlo como router, de manera que podremos emplear dicho equipo. Una vez dispuestos en la consola del servidor ingresamos:

sudo su

...Tras autenticarnos con nuestra contraseña de administrador ingresaremos los consabidos Comandos de Organización:

apt-get update
apt-get install freeradius make

En breves instantes se descargará la paquetería necesaria. Acto seguido procederemos a configurar algunas cosas del demionio RADIUS en sí. Le desactivamos la opción de proxy del servidor (a no ser que la necesitemos), por medio de:

nano /etc/freeradius/radiusd.conf

Esto abrirá el editor de texto GNU Nano con el archivo de configuración radiusd.conf, el cual ya contendrá información. Hemos de modificar la cadena proxy_requests para que tome un valor negativo, de modo que quedará de la siguiente manera:

proxy_requests = no

También podrían querer revisar dentro del archivo radiusd.conf las funciones de registro en este archivo de configuración, para modificar qué información se registra y dónde se almacenará tal registro. En el bloque de texto log{} pueden emplear la cadena "auto=yes" a fin de que el servidor registre en su archivo bitácora toda vez que alguien se conecta al Wifi. También registrará allí a cuál punto de acceso se han conectado. Una vez concluidas las modificaciones al archivo en el editor Nano, lo grabamos con Ctrl+o y salimos del editor con Ctrl+x.

Vean señores, han de comprender que el cliente de RADIUS propiamente dicho no es en este caso la laptop o el teléfono del usuario. El cliente RADIUS es el Punto de Acceso Inalámbrico (normalmente el router Wifi), debido a que es éste quien realiza los pedidos de autenticación contra nuestro servidor Ubuntu dotado de FreeRADIUS. Por defecto, el demonio FreeRADIUS configurará el localhost en el servidor como un cliente también, pero como no necesitamos este proceder, lo desactivaremos. Ingresamos:

nano /etc/freeradius/clients.conf

...y desactivamos tal comportamiento, comentando mediante el agregado de "#" a las siguientes líneas:

#client localhost {
        #  Allowed values are:
        #       dotted quad (1.2.3.4)
        #       hostname    (radius.example.com)
#       ipaddr = 127.0.0.1

        #  OR, you can use an IPv6 address, but not both
        #  at the same time.
#       ipv6addr = ::   # any.  ::1 == localhost
...
#}

...acto seguido agregamos al fichero una entrada para nuestro router wifi "routerpirulo". Crearemos una nueva contraseña aleatoria que ingresaremos en el router wifi y el mismo la empleará para autenticarse contra el demoniu RADIUS. En el mismo archivo  /etc/freeradius/clients.conf modificamos:

client routerpirulo {
        ipaddr = 192.168.1.100
        secret = vIvApErOnCaRaJo
        require_message_authenticator = yes
}

Naturalmente modificamos las partes que se ejemplifican en negrita. Tendremos que agregar otras entradas similares en el archivo /etc/freeradius/clients.conf, una por cada cliente (router wifi o puntos de acceso inalámbrico) que se encuentren presentes en nuestra red. Os recomiendo emplear una contraseña distinta para cada uno de ellas, amén de necesitar una dirección IP estática para cada router wifi/punto de acceso. También debemos configurar dichos datos de cliente en el router/punto de acceso:

Configuración del EAP

A continuación habremos de editar el fichero de configuración para el Protocolo de Autenticación Extensible (EAP). En vez de indicarles qué líneas han de comentarse con "#", os indicaré qué necesitan hacer. Ingresamos:

nano /etc/freeradius/eap.conf

...y debemos asegurarnos que luzca de la siguiente manera:

# -*- texto -*-
# Archivo /etc/freeradius/eap.conf de ejemplo
eap {
 default_eap_type = tls
 timer_expire = 60
 ignore_unknown_eap_types = no
 cisco_accounting_username_bug = no
 max_sessions = 4096
 tls {
  certdir = ${confdir}/certs
                cadir = ${confdir}/certs
                private_key_password = micontraseñaserverkey
                private_key_file = ${certdir}/server.key
  certificate_file = ${certdir}/server.pem
  CA_path = ${cadir}
  CA_file = ${cadir}/ca.pem
  dh_file = ${certdir}/dh
  random_file = /dev/urandom
  cipher_list = "HIGH"
  make_cert_command = "${certdir}/bootstrap"
  ecdh_curve = "prime256v1"
  cache {
   enable = no # opcionalmente activar
   lifetime = 24 # horas
   max_entries = 255
  }
  verify {
   tmpdir = /tmp/radiusd
   client = "/usr/bin/openssl verify -CAfile ${..CA_file} %{TLS-Client-Cert-Filename}"
  }
  ocsp {
   enable = no # opcionalmente activar
   override_cert_url = yes
   url = "http://127.0.0.1/ocsp/"
  }
 }
 ttls {
  default_eap_type = md5
  copy_request_to_tunnel = no
  use_tunneled_reply = no
  virtual_server = "inner-tunnel"
 }
}

La contraseña "micontrseñaserverkey" indicada arriba deberá coincidir con la que emplearemos al general las claves del servidor mas adelante. Sugiero que sea complicada y aleatoria. Lo que hemos hecho principalmente es desactivar otros protocolos como LEAP y PEAP y MSCHAPv2 entre otros, ninguno de los cuales recomiendo emplear. Sólo activaremos el stack de protocolos peronista, el EAP-TLS.

Ahora hemos de desactivar los servidores por defecto. Para ello indicamos el siguiente comando de organización para borrarlos:

sudo rm /etc/freeradius/sites-enabled/*

...y procedemos a crear un nuevo fichero de configuración para el servidor con:

nano /etc/freeradius/sites-available/mynetwork

...y nos aseguramos que contenga algo como lo siguiente:

######################################################################
authorize {
 preprocess
 eap {
  ok = return
 }
 expiration
 logintime
}

authenticate {
 eap
}

preacct {
 preprocess
 acct_unique 
 suffix
 files
}

accounting {
 detail
 unix
 radutmp
 exec
 attr_filter.accounting_response
}

session {
 radutmp
}

post-auth {
 exec
 Post-Auth-Type REJECT {
  attr_filter.access_reject
 }
}

pre-proxy {

}

post-proxy {
 eap
}

Luego de guardar los cambios y salir del editor, lo enlazaremos con el directorio sites-enabled de la siguiente manera:

sudo su - 
cd /etc/freeradius/sites-enabled/ 
ln -s ../sites-available/mynetwork ./mynetwork

Podremos entonces detener el demonio FreeRADIUS y reiniciarlo en modo debug para asegurarnos que todo arranque correctamente y no "tire" errores. Ello lo haremos con los siguientes comandos de organización:

service freeradius stop 
freeradius -X

Si todo va bien, el servicio FreeRADIUS debería arrancar como un rastrojero, a la primera y sin toser. La terminal del sistema debería devolvernos la indicación Ready to process requests ("Listo para procesar pedidos"). Será ahora el momento para estar atentos a cualquier mensaje de error gorila que el servicio nos devuelva, y si eso sucede investigarlos. Una vez que finalicemos la evaluación, presionamos Ctrl+C para detener la ejecución del servicio en nuestro Servidor.

Configurar los Certificados SSL

Asumiendo que todo salió bien, ahora comenzaremos a generar los certificados SSL. Para ello comenzamos eliminando los inseguros certificados que vienen por defecto y a la vez haremos un trabajo de integrado básico:

cd /etc/freeradius/certs/ 
rm *.pem 
rm *.key 
mkdir /var/certs 
mkdir /var/certs/freeradius
chgrp ssl-cert /var/certs/freeradius 
chmod 710 /var/certs/freeradius 
cp /usr/share/doc/freeradius/examples/certs/* /var/certs/freeradius/ 
cd /var/certs/freeradius/ 
rm bootstrap 
chmod 600 * 
make destroycerts 
make index.txt 
make serial

A continuación, editamos el archivo ca.cnf con:

nano ca.cnf 

....y le modificamos algunas de las opciones por defecto. En particular, debemos prestar atención y modificaremos las siguientes líneas del fichero:

[ CA_default ]
..
default_days = 1825
default_md = sha1
..
[ req ]
default_bits = 4096
input_password = micontraseñaserverkey
output_password = micontraseñaserverkey
..

Observen bien. con 1825 días de validez, este certificado SSL del servidor durará unos buenos 5 años (podríamos cambiar los días indicados en la cadena default_days por los que querramos). La contraseña "micontraseñaserverkey" indicada arriba debe coincidir con la que pusimos en el archivo eap.conf anteriormente, y debería ser una cadena generada aleatoriamiente. Nunca deberíamos tener que ingresar esta contraseña a mano en ningún cliente, de modo que podemos asegurarnos que la misma sea realmente complicada.

Ahora generaremos el archivo ca.pem.

make ca.pem 
make ca.der 
make printca

Acto seguido, editamos el archivo:

nano server.cnf

...y realizamos cambios que reflejen los del archivo anterior:

[ CA_default ]
..
default_days = 1825
default_md = sha1
..
[ req ]
..
default_bits = 4096
..

Bajo la etiqueta "[server]" ingresamos nuestra información de contacto apropiada. Conforme esté todo listo, generaremos el archivo server.pem:

make server.pem

Crear los Certificados de Usuario

Conforme lleguemos a este punto, generaremos los certificados para los clientes. Para ello primero modificaremos el archivo Makefile con:

nano Makefile

...locallizamos las líneas que dicen:

client.p12: client.crt
  openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)

client.pem: client.p12
  openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
  cp client.pem $(USER_NAME).pem

...y las cambiamos para que digan lo siguiente:

client.p12: client.crt
        openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client.p12 $(USER_NAME).p12

client.pem: client.p12
        openssl pkcs12 -in client.p12 -out client.pem -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client.pem $(USER_NAME).pem

client_android.p12: client.crt
        openssl pkcs12 -export -in client.crt -inkey client.key -certfile ca.pem -name "$(USER_NAME)" -out client_android.p12  -passin pass:$(PASSWORD_CLIENT) -passout pass:$(PASSWORD_CLIENT)
        cp client_android.p12 $(USER_NAME)_android.p12

Nota: las líneas anteriores se cortarán en su navegador, pero si se seleccionan, copian y pegan, deberían aparecer formateadas correctamente.

Debemos asegurarnos que las líneas adelantadas sean tabulaciones y no espacios, o el archivo no funcionará. Este cambio creará un caso especial para los certificados para Android, y renombrará los archivos para que sean más sencillos para identificar.

Editamos client.cnf para establecer nuestras opciones por defecto como lo hicimos anteriormente, pero esta vez para cualquier certificado de cliente. Para ello ingresamos:

nano client.cnf

Probablemente querramos acortar los días por defecto a 365 (necesitará regenerar las claves para el dispositivo cuando concluyan el año/fecha). Debemos cambiar la cadena default_md a sha1 y default_bits a 4096:

[ CA_default ]
..
default_days = 365
default_md = sha1
..
[ req ]
..
default_bits = 4096
input_password = contraseñacliente
output_password = contraseñacliente
emailAddress = mail@correcto.delcliente
commonName = nombre_del_cliente 
..

En la sección [ req ] del archivo client.cnf se encuentran las cadenas input_password e output_password. Ponga en ambas la misma, y tenga en mente que esta contraseña será necesaria cuando el certificado se instale en el cliente, de manera que deberá tener un teclado para tipearlas. La sección [client] identifica únicamente al usuario en los archivos de bitácora, de modo que asegúrese que las cadenas emailAddress y commonName estén configuradas correctamente.

Ahora generaremos los certificados de cliente con:

make client.pem 
make client_android.p12

Para generar otro certificado para otro cliente, simplemente editamos el archivo de nuevo con:

nano client.cnf

...lo modificamos con los datos y ejecutamos nuevamente los comandos make client.pem y make client_android.p12 para generar otro certificado nuevo, y repetiremos el procedimiento para cada dispositivo cuyo acceso deseemos permitir a nuestra red Wifi empresarial. Finalmente configurareos los permisos apropiados para los certificados y crearemos los enlaces que necesitamos, con los siguientes Comandos de Organización:

chmod 600 * 
chmod 640 ca.pem 
chmod 640 server.pem 
chmod 640 server.key 
chgrp ssl-cert ca.pem 
chgrp ssl-cert server.pem 
chgrp ssl-cert server.key 
cd /etc/freeradius/certs/ 
ln -s /var/certs/freeradius/ca.pem ca.pem 
ln -s /var/certs/freeradius/server.pem server.pem 
ln -s /var/certs/freeradius/server.key server.key

No debemos olvidar que si creamos nuevos certificados de clientes (por ejemplo, al cumplirse los 365 días) debemos volver a ejecutar las primeras cuatro líneas de los comandos anteriores a fin de asegurarnos que los permisos de los certificados sea nuevamente acorde a nuestras necesidades.

Cada Certficado en su Lugar

Para conectarse, los archivos pueden requerirse con la siguiente nomenclatura:
  • Linux: ca.pem y [usuario].p12
  • Android: [usuario]_android.p12
  • Window$: ca.der y [usuario].p12
Tengan en cuenta que al usar Wifi a través de un servidor RADIUS, las versiones recientes de Android mostrarán constantemente una advertencia de que su conexión está siendo monitoreada. Existen maneras en un smart Android rooteado de instalar el archivo [usuario]_android.p12 en la carpeta de root, pero aún así esto no afecta la operación del dispositivo.

martes, 21 de febrero de 2017

Cómo instalo las fuentes de Micro$oft en Ubuntu?

¡Trabajadores!

A la hora de plasmar mis ideas en papel, prefiero emplear tipografías libres, aquellas que reflejen un sentir único de libertad. Suelo imprimir con las ignotas Liberation Sans (sucedánea de Arial) y Liberation Serif (como excelente sustituta a la Times New Roman). La apariencia de las mismas es lo suficiente similar como para no ser aparentes sino a los más exagerados de los letristas.

Asimismo, recomiendo emplear las amplias opciones libres que podremos encontrar en el catálogo de FontLibrary.org. Estas fuentes en particular emplean licencias libres o abiertas, que las hacen adecuadas para sosegar nuestros anhelos de libertad en todos los aspectos de la vida.

Con ello me es más que suficiente, ya que es la facultad natural del hombre para obrar según su voluntad la que ha guiado el camino de nuestro Movimiento.

Sin embargo, no podemos desconocer que - en ocasiones - podríamos encontrarnos con solicitudes de formato más astringentes, y que nos supongan dar uso a tipografías específicas.

Puedo opinar que ello suele responder en la mayoría de los casos a especificaciones de diseño rígido acicateadas por mentes ignorantes o desaprensivas, aquellas que nos someten a elecciones viciadas por la tristeza. Y en esto dirán ustedes si no es cierto aquello de que suelen limitarnos a las opciones propietarias que venían en el "núcleo  de fuentes para Internet" que Micro$oft vino a publicar en 1996. ¿Es así o no? Pues claro que lo es, y en ello también hemos pensado.

Vean señores, entre las tipografías incluidas en tal paquete se encontraban Andalé Mono (de Steve Matteson), Arial y Arial Black (Robin Nicholas y Patricia Saunders), la espantosa Comic Sans MS y Trebuchet MS (obras de Vincent Connare), Courier New (Howard Kettler), Georgia y Verdana (Matthew Carter), Impact (Geoffrey Lee), Times New Roman (Stanley Morison y Victor Lardent), y Windings (Kris Holmes y Charles Bigelow).





Micro$oft cedía estos tipos de letra "en pos de la interoperatibilidad multiplataforma", pero naturalmente lo hacía con licencia de uso privativa (EULA, acuerdo de usuario final). Si bien dejaron de hacerlo activamente en 2002, aún se puede encontrar el empaquetado bajo tales condiciones a partir de terceros.

En general todas ellas fueron o son ampliamente populares, pero su condición privativa hace que no vengan incluidas por defecto en numerosos sistemas operativos libres, y que en muchos casos se las rechace. Es lo justo. Los trabajadores no han de recibir dádivas, han de recibir aumentos de sueldo. Por otro lado el formato de las mismas no es OpenType, sino el Truetype, tecnología tipográfica vectorial que Micro$oft sacó con la versión Window$ 3.1 y está muy extendido.

No obstante estos impedimentos, hemos de saber que nuestro sistema GNU con Linux está totalmente capacitado para instalarlas, toda vez que aceptemos las licencias de uso privativas: podremos instalarlas en Ubuntu por medio del  metapaquete restricted-extras, o específicamente si descargarmos un "instalador" para tales tripografías.

Nuestra Doctrina no es un manifiesto hippie. El Justicialismo anhela la felicidad de los hombres, y si necesitamos una fuente tipográfica para que ello sea realidad efectiva, entonces bien podremos hacernos con ella.

Para hacer esto último, abrimos una Terminal con Ctrl+Alt+T e ingresamos los siguientes Comandos de Organización:

sudo apt update
sudo apt install ttf-mscorefonts-installer

El sistema nos solicitará nuestra contraseña de Conductor (root) y descargará un paquete de descarga e instalación de los archivos .Exe (ejecutables Micro$oft) con los archvos comprimidos de las fuentes individuales.

Conforme lo haga, nos solicitará autorización en una ventana especial (debemos presionar la tecla Tab e indicar YES ("si") para aceptar la EULA y autorizar la descarga de los empaquetados de las tipografías. Luego se instalarán una detrás de otra, en un proceso que puede durar un par de minutos dependiendo de nuestra velocidad de conexión.

Y al finalizar ya tendremos las nueve fuentes clásicas de Micro$oft en nuestro Ubuntu.