diff --git a/README.md b/README.md
index 414019c..d37f2d4 100644
--- a/README.md
+++ b/README.md
@@ -2333,12 +2333,17 @@ Instalamos el que nos interesa:
sudo apt install virtualbox-6.1
```
+**ATENCIÓN**
+
+ The following additional packages will be installed:
+ python-is-python2
+
Descargamos también el [VirtualBox Extension
Pack](https://www.virtualbox.org/wiki/Downloads), este paquete lo
-instalaremos desde el propio interfaz de usuario del *VirtualBox*. Y lo
-instalamos con el comando:
+podemos instalar desde el propio interfaz de usuario del *VirtualBox*, o
+bien con el siguiente comando:
- sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
+ sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
Sólo nos queda añadir nuestro usuario al grupo `vboxusers`, con el
comando `sudo gpasswd -a username vboxusers`, y tendremos que cerrar la
@@ -2346,9 +2351,55 @@ sesión para refrescar nuestros grupos.
## qemu
+Un par de comprobaciones previas:
+
+ - El comando `egrep -c '(vmx|svm)' /proc/cpuinfo` debe devolvernos un
+ número mayor que cero si nuestro sistema soporta virtualización.
+ - El comando `kvm-ok` nos sirve para comprobar que la virtualización
+ hardware no está deshabilitada en la BIOS (puede que tengas que
+ ejecutar `apt install cpu-checker`)
+
Instalamos desde el repo oficial:
- sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-bin
+ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
+ sudo apt install virt-viewer
+
+ - qemu-kvm
+ nos da la emulación hardware para el hipervisor KVM
+
+ - libvirt-daemon-system
+ los ficheros de configuración para ejecutar el demonio `libvirt`
+ como servicio
+
+ - libvirt-clients
+ software para gestionar plataformas de virtualización
+
+ - bridge-utils
+ utilidades de linea de comandos para configurar bridges ethernet
+
+ - virtinst
+ utilidades de linea de comandos para crear máquinas virtuales
+
+ - virt-manager
+ un interfaz gráfico junto con utilidades de linea de comandos para
+ gestionar máquinas virtuales a través de *libvirt*
+
+Solo queda añadir nuestro usuario a los grupos:
+
+ sudo gpasswd -a username libvirt
+ sudo gpasswd -a username kvm
+
+Podemos comprobar el estado del servicio con `scs libvirtd` (`systemctl
+status libvirtd`).
+
+### Referencias
+
+ - [How to install KVM on Ubuntu 20.04 Graphical & headless
+ server](https://www.how2shout.com/how-to/how-to-install-kvm-on-ubuntu-20-04-graphical-headless-server.html)
+ - [How to Install Kvm on
+ Ubuntu 20.04](https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/)
+ - [How to Install KVM on
+ Ubuntu 20.04](https://www.tecmint.com/install-kvm-on-ubuntu/)
## Docker
@@ -2380,7 +2431,7 @@ distribución:
sudo apt install docker-ce
- sudo gpasswd -a salvari docker
+ sudo gpasswd -a username docker
Esto dejará el servicio *docker* funcionando y habilitado (arrancará en
cada reinicio del ordenador)
@@ -2429,10 +2480,10 @@ Añadimos el origen de software:
Y ahora procedemos a la instalación:
sudo apt update
- sudo apt install openjfx josm
+ sudo apt install openjfx josm
Alternativamente también podemos instalar la versión “nightly” con el
-siguienete comando, pero tendréis actualizaciones diarias:
+siguiente comando, pero tendréis actualizaciones diarias:
sudo apt josm-latest
@@ -2456,7 +2507,7 @@ wiki](http://mobac.sourceforge.net/wiki/index.php/Custom_XML_Map_Sources)
Añadimos la clave gpg:
- wget -q https://qgis.org/downloads/qgis-2017.gpg.key -O- | sudo apt-key add -
+ wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add -
Ejecutamos:
@@ -2604,4 +2655,13 @@ que escoger:
Y ya funciona todo.
+## Linux Mint 20 es *python agnostic*
+
+Tenemos dos opciones:
+
+``` {bash}
+apt install python-is-python2
+apt install python-is-python3
+```
+
1. ya no incluye gksu pero tampoco es imprescindible
diff --git a/out/LinuxMintUlyana.dw b/out/LinuxMintUlyana.dw
index 45faabd..6722103 100644
--- a/out/LinuxMintUlyana.dw
+++ b/out/LinuxMintUlyana.dw
@@ -2103,20 +2103,53 @@ Instalamos el que nos interesa:
sudo apt install virtualbox-6.1
-Descargamos también el [[https://www.virtualbox.org/wiki/Downloads|VirtualBox Extension Pack]], este paquete lo instalaremos desde el propio interfaz de usuario del //VirtualBox//. Y lo instalamos con el comando:
+**ATENCIÓN**
-sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
+The following additional packages will be installed:
+ python-is-python2
+
+Descargamos también el [[https://www.virtualbox.org/wiki/Downloads|VirtualBox Extension Pack]], este paquete lo podemos instalar desde el propio interfaz de usuario del //VirtualBox//, o bien con el siguiente comando:
+
+
+sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
Sólo nos queda añadir nuestro usuario al grupo ''%%vboxusers%%'', con el comando ''%%sudo gpasswd -a username vboxusers%%'', y tendremos que cerrar la sesión para refrescar nuestros grupos.
===== qemu =====
+Un par de comprobaciones previas:
+
+ * El comando ''%%egrep -c '(vmx|svm)' /proc/cpuinfo%%'' debe devolvernos un número mayor que cero si nuestro sistema soporta virtualización.
+ * El comando ''%%kvm-ok%%'' nos sirve para comprobar que la virtualización hardware no está deshabilitada en la BIOS (puede que tengas que ejecutar ''%%apt install cpu-checker%%'')
+
Instalamos desde el repo oficial:
-sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-bin
+sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
+sudo apt install virt-viewer
+
+ * **qemu-kvm** nos da la emulación hardware para el hipervisor KVM
+ * **libvirt-daemon-system** los ficheros de configuración para ejecutar el demonio ''%%libvirt%%'' como servicio
+ * **libvirt-clients** software para gestionar plataformas de virtualización
+ * **bridge-utils** utilidades de linea de comandos para configurar bridges ethernet
+ * **virtinst** utilidades de linea de comandos para crear máquinas virtuales
+ * **virt-manager** un interfaz gráfico junto con utilidades de linea de comandos para gestionar máquinas virtuales a través de //libvirt//
+
+Solo queda añadir nuestro usuario a los grupos:
+
+
+sudo gpasswd -a username libvirt
+sudo gpasswd -a username kvm
+Podemos comprobar el estado del servicio con ''%%scs libvirtd%%'' (''%%systemctl status libvirtd%%'').
+
+==== Referencias ====
+
+ * [[https://www.how2shout.com/how-to/how-to-install-kvm-on-ubuntu-20-04-graphical-headless-server.html|How to install KVM on Ubuntu 20.04 Graphical & headless server]]
+ * [[https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/|How to Install Kvm on Ubuntu 20.04]]
+ * [[https://www.tecmint.com/install-kvm-on-ubuntu/|How to Install KVM on Ubuntu 20.04]]
+
===== Docker =====
Tenemos que añadir el repositorio correspondiente a nuestra distribución:
@@ -2147,7 +2180,7 @@ apt-cache policy docker-ce
sudo apt install docker-ce
-sudo gpasswd -a salvari docker
+sudo gpasswd -a username docker
Esto dejará el servicio //docker// funcionando y habilitado (arrancará en cada reinicio del ordenador)
@@ -2191,9 +2224,9 @@ Y ahora procedemos a la instalación:
sudo apt update
-sudo apt install openjfx josm
+sudo apt install openjfx josm
-Alternativamente también podemos instalar la versión “nightly” con el siguienete comando, pero tendréis actualizaciones diarias:
+Alternativamente también podemos instalar la versión “nightly” con el siguiente comando, pero tendréis actualizaciones diarias:
sudo apt josm-latest
@@ -2215,7 +2248,7 @@ Conviene bajarse wms adicionales para MOBAC y leerse [[http://mobac.sourceforge.
Añadimos la clave gpg:
-wget -q https://qgis.org/downloads/qgis-2017.gpg.key -O- | sudo apt-key add -
+wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add -
Ejecutamos:
@@ -2336,3 +2369,12 @@ Processor: "ATmega168"
Port: "/dev/ttyUSB0"
Y ya funciona todo.
+
+===== Linux Mint 20 es python agnostic =====
+
+Tenemos dos opciones:
+
+
+apt install python-is-python2
+apt install python-is-python3
+
diff --git a/out/LinuxMintUlyana.epub b/out/LinuxMintUlyana.epub
index 8f74817..82522d4 100644
Binary files a/out/LinuxMintUlyana.epub and b/out/LinuxMintUlyana.epub differ
diff --git a/out/LinuxMintUlyana.mw b/out/LinuxMintUlyana.mw
index 3fcce33..55bb014 100644
--- a/out/LinuxMintUlyana.mw
+++ b/out/LinuxMintUlyana.mw
@@ -1807,16 +1807,51 @@ Ahora podemos comprobar que además del paquete ''virtualbox'' tenemos varios pa
Instalamos el que nos interesa:
sudo apt install virtualbox-6.1
-Descargamos también el [https://www.virtualbox.org/wiki/Downloads VirtualBox Extension Pack], este paquete lo instalaremos desde el propio interfaz de usuario del ''VirtualBox''. Y lo instalamos con el comando:
+'''ATENCIÓN'''
-sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
+The following additional packages will be installed:
+ python-is-python2
+Descargamos también el [https://www.virtualbox.org/wiki/Downloads VirtualBox Extension Pack], este paquete lo podemos instalar desde el propio interfaz de usuario del ''VirtualBox'', o bien con el siguiente comando:
+
+sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
Sólo nos queda añadir nuestro usuario al grupo vboxusers
, con el comando sudo gpasswd -a username vboxusers
, y tendremos que cerrar la sesión para refrescar nuestros grupos.
== qemu ==
+Un par de comprobaciones previas:
+
+* El comando egrep -c '(vmx|svm)' /proc/cpuinfo
debe devolvernos un número mayor que cero si nuestro sistema soporta virtualización.
+* El comando kvm-ok
nos sirve para comprobar que la virtualización hardware no está deshabilitada en la BIOS (puede que tengas que ejecutar apt install cpu-checker
)
+
Instalamos desde el repo oficial:
-sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-bin
+sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
+sudo apt install virt-viewer
+; qemu-kvm
+: nos da la emulación hardware para el hipervisor KVM
+; libvirt-daemon-system
+: los ficheros de configuración para ejecutar el demonio libvirt
como servicio
+; libvirt-clients
+: software para gestionar plataformas de virtualización
+; bridge-utils
+: utilidades de linea de comandos para configurar bridges ethernet
+; virtinst
+: utilidades de linea de comandos para crear máquinas virtuales
+; virt-manager
+: un interfaz gráfico junto con utilidades de linea de comandos para gestionar máquinas virtuales a través de ''libvirt''
+
+Solo queda añadir nuestro usuario a los grupos:
+
+sudo gpasswd -a username libvirt
+sudo gpasswd -a username kvm
+Podemos comprobar el estado del servicio con scs libvirtd
(systemctl status libvirtd
).
+
+=== Referencias ===
+
+* [https://www.how2shout.com/how-to/how-to-install-kvm-on-ubuntu-20-04-graphical-headless-server.html How to install KVM on Ubuntu 20.04 Graphical & headless server]
+* [https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/ How to Install Kvm on Ubuntu 20.04]
+* [https://www.tecmint.com/install-kvm-on-ubuntu/ How to Install KVM on Ubuntu 20.04]
+
== Docker ==
Tenemos que añadir el repositorio correspondiente a nuestra distribución:
@@ -1846,7 +1881,7 @@ apt-cache policy docker-ce
sudo apt install docker-ce
-sudo gpasswd -a salvari docker
+sudo gpasswd -a username docker
Esto dejará el servicio ''docker'' funcionando y habilitado (arrancará en cada reinicio del ordenador)
La forma de pararlo es:
@@ -1880,8 +1915,8 @@ Añadimos el origen de software:
Y ahora procedemos a la instalación:
sudo apt update
-sudo apt install openjfx josm
-Alternativamente también podemos instalar la versión “nightly” con el siguienete comando, pero tendréis actualizaciones diarias:
+sudo apt install openjfx josm
+Alternativamente también podemos instalar la versión “nightly” con el siguiente comando, pero tendréis actualizaciones diarias:
sudo apt josm-latest
Ya estamos listos para editar Open Street Map offline.
@@ -1900,7 +1935,7 @@ Conviene bajarse wms adicionales para MOBAC y leerse [http://mobac.sourceforge.n
Añadimos la clave gpg:
-wget -q https://qgis.org/downloads/qgis-2017.gpg.key -O- | sudo apt-key add -
+wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add -
Ejecutamos:
sudo add-apt-repository "deb [arch=amd64] https://qgis.org/debian $(. /etc/os-release; echo "$UBUNTU_CODENAME") main"
@@ -2013,4 +2048,10 @@ Processor: "ATmega168"
Port: "/dev/ttyUSB0"
Y ya funciona todo.
+== Linux Mint 20 es ''python agnostic'' ==
+
+Tenemos dos opciones:
+
+apt install python-is-python2
+apt install python-is-python3
diff --git a/out/LinuxMintUlyana.odt b/out/LinuxMintUlyana.odt
index 5d12c96..2275ed2 100644
Binary files a/out/LinuxMintUlyana.odt and b/out/LinuxMintUlyana.odt differ
diff --git a/out/LinuxMintUlyana.pdf b/out/LinuxMintUlyana.pdf
index 1f0caf4..817c296 100644
Binary files a/out/LinuxMintUlyana.pdf and b/out/LinuxMintUlyana.pdf differ
diff --git a/out/LinuxMintUlyana.tex b/out/LinuxMintUlyana.tex
index c40625e..912c296 100644
--- a/out/LinuxMintUlyana.tex
+++ b/out/LinuxMintUlyana.tex
@@ -3098,13 +3098,20 @@ Instalamos el que nos interesa:
sudo apt install virtualbox-6.1
\end{verbatim}
+\textbf{ATENCIÓN}
+
+\begin{verbatim}
+The following additional packages will be installed:
+ python-is-python2
+\end{verbatim}
+
Descargamos también el
\href{https://www.virtualbox.org/wiki/Downloads}{VirtualBox Extension
-Pack}, este paquete lo instalaremos desde el propio interfaz de usuario
-del \emph{VirtualBox}. Y lo instalamos con el comando:
+Pack}, este paquete lo podemos instalar desde el propio interfaz de
+usuario del \emph{VirtualBox}, o bien con el siguiente comando:
\begin{verbatim}
-sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
+sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
\end{verbatim}
Sólo nos queda añadir nuestro usuario al grupo \texttt{vboxusers}, con
@@ -3114,12 +3121,71 @@ que cerrar la sesión para refrescar nuestros grupos.
\hypertarget{qemu}{%
\subsection{qemu}\label{qemu}}
+Un par de comprobaciones previas:
+
+\begin{itemize}
+\tightlist
+\item
+ El comando
+ \texttt{egrep\ -c\ \textquotesingle{}(vmx\textbar{}svm)\textquotesingle{}\ /proc/cpuinfo}
+ debe devolvernos un número mayor que cero si nuestro sistema soporta
+ virtualización.
+\item
+ El comando \texttt{kvm-ok} nos sirve para comprobar que la
+ virtualización hardware no está deshabilitada en la BIOS (puede que
+ tengas que ejecutar \texttt{apt\ install\ cpu-checker})
+\end{itemize}
+
Instalamos desde el repo oficial:
\begin{verbatim}
-sudo apt install qemu-kvm qemu virt-manager virt-viewer libvirt-bin
+sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
+sudo apt install virt-viewer
+\end{verbatim}
+
+\begin{description}
+\item[qemu-kvm]
+nos da la emulación hardware para el hipervisor KVM
+\item[libvirt-daemon-system]
+los ficheros de configuración para ejecutar el demonio \texttt{libvirt}
+como servicio
+\item[libvirt-clients]
+software para gestionar plataformas de virtualización
+\item[bridge-utils]
+utilidades de linea de comandos para configurar bridges ethernet
+\item[virtinst]
+utilidades de linea de comandos para crear máquinas virtuales
+\item[virt-manager]
+un interfaz gráfico junto con utilidades de linea de comandos para
+gestionar máquinas virtuales a través de \emph{libvirt}
+\end{description}
+
+Solo queda añadir nuestro usuario a los grupos:
+
+\begin{verbatim}
+sudo gpasswd -a username libvirt
+sudo gpasswd -a username kvm
\end{verbatim}
+Podemos comprobar el estado del servicio con \texttt{scs\ libvirtd}
+(\texttt{systemctl\ status\ libvirtd}).
+
+\hypertarget{referencias-1}{%
+\subsubsection{Referencias}\label{referencias-1}}
+
+\begin{itemize}
+\tightlist
+\item
+ \href{https://www.how2shout.com/how-to/how-to-install-kvm-on-ubuntu-20-04-graphical-headless-server.html}{How
+ to install KVM on Ubuntu 20.04 Graphical \& headless server}
+\item
+ \href{https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/}{How
+ to Install Kvm on Ubuntu 20.04}
+\item
+ \href{https://www.tecmint.com/install-kvm-on-ubuntu/}{How to Install
+ KVM on Ubuntu 20.04}
+\end{itemize}
+
\hypertarget{docker}{%
\subsection{Docker}\label{docker}}
@@ -3152,7 +3218,7 @@ apt-cache policy docker-ce
sudo apt install docker-ce
-sudo gpasswd -a salvari docker
+sudo gpasswd -a username docker
\end{verbatim}
Esto dejará el servicio \emph{docker} funcionando y habilitado
@@ -3219,11 +3285,11 @@ Y ahora procedemos a la instalación:
\begin{verbatim}
sudo apt update
-sudo apt install openjfx josm
+sudo apt install openjfx josm
\end{verbatim}
Alternativamente también podemos instalar la versión ``nightly'' con el
-siguienete comando, pero tendréis actualizaciones diarias:
+siguiente comando, pero tendréis actualizaciones diarias:
\begin{verbatim}
sudo apt josm-latest
@@ -3242,8 +3308,8 @@ Conviene bajarse wms adicionales para MOBAC y leerse
\href{http://mobac.sourceforge.net/wiki/index.php/Custom_XML_Map_Sources}{la
wiki}
-\hypertarget{referencias-1}{%
-\subsubsection{Referencias}\label{referencias-1}}
+\hypertarget{referencias-2}{%
+\subsubsection{Referencias}\label{referencias-2}}
*{[}Cartografía digital{]}
(https://digimapas.blogspot.com.es/2015/01/oruxmaps-vii-mapas-de-mobac.html)
@@ -3254,7 +3320,7 @@ wiki}
Añadimos la clave gpg:
\begin{verbatim}
-wget -q https://qgis.org/downloads/qgis-2017.gpg.key -O- | sudo apt-key add -
+wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add -
\end{verbatim}
Ejecutamos:
@@ -3270,8 +3336,8 @@ sudo apt update
sudo apt install qgis
\end{verbatim}
-\hypertarget{referencias-2}{%
-\subsubsection{Referencias}\label{referencias-2}}
+\hypertarget{referencias-3}{%
+\subsubsection{Referencias}\label{referencias-3}}
\begin{itemize}
\tightlist
@@ -3441,4 +3507,15 @@ Port: "/dev/ttyUSB0"
Y ya funciona todo.
+\hypertarget{linux-mint-20-es-python-agnostic}{%
+\subsection{\texorpdfstring{Linux Mint 20 es \emph{python
+agnostic}}{Linux Mint 20 es python agnostic}}\label{linux-mint-20-es-python-agnostic}}
+
+Tenemos dos opciones:
+
+\begin{verbatim}
+apt install python-is-python2
+apt install python-is-python3
+\end{verbatim}
+
\end{document}
diff --git a/src/600_security.md b/src/600_security.md
new file mode 100644
index 0000000..2715c26
--- /dev/null
+++ b/src/600_security.md
@@ -0,0 +1,166 @@
+# Seguridad
+
+## Autenticación en servidores por clave pública
+
+Generar contraseñas para conexión servidores remotos:
+
+~~~~
+cd ~
+ssh-keygen -b 4096 [-t dsa | ecdsa | ed25519 | rsa | rsa1]
+cat .ssh/
+~~~~
+
+Solo resta añadir nuestra clave pública en el fichero
+`authorized_keys` del servidor remoto.
+
+~~~~
+cat ~/.ssh/id_xxx.pub | ssh user@hostname 'cat >> .ssh/authorized_keys'
+~~~~
+
+[¿Cómo funciona esto?](https://www.digitalocean.com/community/tutorials/understanding-the-ssh-encryption-and-connection-process)
+
+## Claves gpg
+
+`gpg --gen-key` Para generar nuestra clave.
+
+* __Siempre__ hay que ponerle una fecha de expiración, la puedes cambiar más tarde.
+* __Siempre__ hay que escoger la máxima longitud posible
+
+## Seahorse
+
+Para manejar todas nuestras claves con comodidad:
+
+ `sudo apt install seahorse`
+
+## Conexión a github con claves ssh
+
+Usando este método podemos conectarnos a github sin tener que teclear
+la contraseña en cada conexión.
+
+### Claves ssh
+
+Podemos echar un ojo a nuestras claves desde `seahorse` la aplicación
+de gestión de claves que hemos instalado. También podemos ver las
+claves que tenemos generadas:
+
+~~~
+ls -al ~/.ssh
+~~~
+
+En las claves listadas nuestras claves públicas aparecerán con
+extensión `.pub`
+
+También podemos comprobar que claves hemos añadido ya a nuestro agente
+ssh con:
+
+~~~
+ssh-add -l
+~~~
+
+Para generar una nueva pareja de claves ssh:
+
+~~~
+ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
+~~~
+
+Podremos dar un nombre distintivo a los ficheros de claves generados y
+poner una contraseña adecuada a la clave. Si algún dia queremos
+cambiar la contraseña:
+
+~~~
+ssh-keygen -p
+~~~
+
+Ahora tenemos que añadir nuestra clave ssh en nuestra cuenta de
+github, para ello editamos con nuestro editor de texto favorito el
+fichero `~/.ssh/id_rsa.pub` y copiamos el contenido integro. Después
+pegamos ese contenido en el cuadro de texto de la web de github.
+
+Para comprobar que las claves instaladas en github funcionan
+correctamente:
+
+~~~~
+ssh -T git@github.com
+Hi salvari! You've successfully authenticated, but GitHub does not provide shell access.
+~~~~
+
+Este mensaje indica que todo ha ido bien.
+
+Ahora en los repos donde queramos usar ssh debemos cambiar el remote:
+
+~~~~
+git remote set-url origin git@github.com:$USER/$REPONAME.git
+~~~~
+
+## Signal
+
+El procedimiento recomendado en la página oficial:
+
+~~~~
+curl -s https://updates.signal.org/desktop/apt/keys.asc | sudo apt-key add -
+echo "deb [arch=amd64] https://updates.signal.org/desktop/apt xenial main" | sudo tee -a /etc/apt/sources.list.d/signal-xenial.list
+sudo apt update && sudo apt install signal-desktop
+~~~~
+
+------------
+
+__NOTA__: Parece que no funciona. Lo he instalado via _flatpack_
+
+------------
+
+## Lector DNI electrónico
+
+Instalamos:
+
+~~~~
+sudo apt-get install pcscd pcsc-tools libccid
+~~~~
+
+Como root ejecutamos pcsc_scan:
+
+~~~~
+root@rasalhague:~# pcsc_scan
+PC/SC device scanner
+V 1.4.23 (c) 2001-2011, Ludovic Rousseau
+Compiled with PC/SC lite version: 1.8.11
+Using reader plug'n play mechanism
+Scanning present readers...
+Waiting for the first reader...
+~~~~
+
+Si insertamos el lector veremos algo como esto:
+
+~~~~
+root@rasalhague:~# pcsc_scan
+PC/SC device scanner
+V 1.4.23 (c) 2001-2011, Ludovic Rousseau
+Compiled with PC/SC lite version: 1.8.11
+Using reader plug'n play mechanism
+Scanning present readers...
+Waiting for the first reader...found one
+Scanning present readers...
+0: C3PO LTC31 v2 (11061005) 00 00
+
+Wed Jan 25 01:17:20 2017
+Reader 0: C3PO LTC31 v2 (11061005) 00 00
+ Card state: Card removed,
+~~~~
+
+Si insertamos un DNI veremos que se lee la información de la tarjeta insertada:
+
+~~~~
+Reader 0: C3PO LTC31 v2 (11061005) 00 00
+ Card state: Card inserted,
+~~~~
+
+y mas rollo
+
+Instalamos ahora el modulo criptográfico desde [este
+enlace](https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_1112)
+
+
+Y además:
+
+~~~~
+aptitude install pinentry-gtk2 opensc
+~~~~
diff --git a/src/650_virtual.md b/src/650_virtual.md
new file mode 100644
index 0000000..0e72c0a
--- /dev/null
+++ b/src/650_virtual.md
@@ -0,0 +1,173 @@
+# Virtualizaciones y contenedores
+
+## Instalación de _virtualBox_
+
+Lo hacemos con los origenes de software oficiales (alternativamente, podríamos hacerlo manualmente):
+
+~~~~
+# Importamos la clave gpg
+wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
+
+# Añadimos el nuevo origen de software
+sudo add-apt-repository "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(. /etc/os-release; echo "$UBUNTU_CODENAME") contrib"
+
+# Actualizamos la base de datos de paquetes
+sudo apt update
+~~~~
+
+Ahora podemos comprobar que además del paquete _virtualbox_ tenemos
+varios paquetes con número de versión (p.ej. _virtualbox.6.1), estos
+últimos son los que hemos añadido (compruebalo con `apt-cache policy
+[nombrepaquete]`)
+
+Instalamos el que nos interesa:
+
+~~~~{bash}
+sudo apt install virtualbox-6.1
+~~~~
+
+**ATENCIÓN**
+
+~~~~
+The following additional packages will be installed:
+ python-is-python2
+~~~~
+
+Descargamos también el [VirtualBox Extension
+Pack](https://www.virtualbox.org/wiki/Downloads), este paquete lo
+podemos instalar desde el propio interfaz de usuario del _VirtualBox_,
+o bien con el siguiente comando:
+
+~~~~
+sudo VBoxManage extpack install ./Oracle_VM_VirtualBox_Extension_Pack-6.1.2.vbox-extpack
+~~~~
+
+
+Sólo nos queda añadir nuestro usuario al grupo `vboxusers`, con el
+comando `sudo gpasswd -a username vboxusers`, y tendremos que cerrar
+la sesión para refrescar nuestros grupos.
+
+
+## qemu
+
+Un par de comprobaciones previas:
+
+* El comando `egrep -c '(vmx|svm)' /proc/cpuinfo` debe devolvernos un
+ número mayor que cero si nuestro sistema soporta virtualización.
+* El comando `kvm-ok` nos sirve para comprobar que la virtualización
+ hardware no está deshabilitada en la BIOS (puede que tengas que
+ ejecutar `apt install cpu-checker`)
+
+Instalamos desde el repo oficial:
+
+~~~~
+sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager
+sudo apt install virt-viewer
+~~~~
+
+qemu-kvm
+
+: nos da la emulación hardware para el hipervisor KVM
+
+libvirt-daemon-system
+
+: los ficheros de configuración para ejecutar el demonio `libvirt`
+ como servicio
+
+libvirt-clients
+
+: software para gestionar plataformas de virtualización
+
+bridge-utils
+
+: utilidades de linea de comandos para configurar bridges ethernet
+
+virtinst
+
+: utilidades de linea de comandos para crear máquinas virtuales
+
+virt-manager
+
+: un interfaz gráfico junto con utilidades de linea de comandos
+ para gestionar máquinas virtuales a través de _libvirt_
+
+Solo queda añadir nuestro usuario a los grupos:
+
+~~~~
+sudo gpasswd -a username libvirt
+sudo gpasswd -a username kvm
+~~~~
+
+Podemos comprobar el estado del servicio con `scs libvirtd`
+(`systemctl status libvirtd`).
+
+### Referencias
+
+* [How to install KVM on Ubuntu 20.04 Graphical & headless
+ server](https://www.how2shout.com/how-to/how-to-install-kvm-on-ubuntu-20-04-graphical-headless-server.html)
+* [How to Install Kvm on Ubuntu 20.04](https://linuxize.com/post/how-to-install-kvm-on-ubuntu-20-04/)
+* [How to Install KVM on Ubuntu 20.04](https://www.tecmint.com/install-kvm-on-ubuntu/)
+
+
+## Docker
+
+Tenemos que añadir el repositorio correspondiente a nuestra
+distribución:
+
+~~~~
+# Be safe
+sudo apt remove docker docker-engine docker.io
+sudo apt autoremove
+sudo apt update
+
+# Install pre-requisites
+sudo apt install ca-certificates curl
+
+# Import the GPG key
+
+curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+
+# Next, point the package manager to the official Docker repository
+
+sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(. /etc/os-release; echo "$UBUNTU_CODENAME") stable"
+
+# Update the package database
+
+sudo apt update
+#
+
+apt-cache policy docker-ce
+
+sudo apt install docker-ce
+
+sudo gpasswd -a username docker
+~~~~
+
+Esto dejará el servicio _docker_ funcionando y habilitado (arrancará
+en cada reinicio del ordenador)
+
+La forma de pararlo es:
+
+~~~~{bash}
+sudo systemctl stop docker
+sudo systemctl disable docker
+systemctl status docker
+~~~~
+
+Añadimos el _bundle_ __docker__ en nuestro fichero `~/.zshrc` para
+tener autocompletado en comandos de docker.
+
+Para usar _docker_ tendremos que arrancarlo, con los alias de nuestro sistema para _systemd_ ejecutamos:
+
+~~~~{bash}
+scst docker # para arrancar el servicio
+
+scsp docker # para parar el servicio
+~~~~
+
+### docker-compose
+
+* Nos bajamos la última versión disponible de [las releases de
+ github](https://github.com/docker/compose/releases)
+* Movemos el fichero que hemos descargado a `/usr/local/bin/docker-compose`
+* Y le damos permisos de ejecución `sudo chmod +x /usr/local/bin/docker-compose`
diff --git a/src/700_maps.md b/src/700_maps.md
new file mode 100644
index 0000000..898fce9
--- /dev/null
+++ b/src/700_maps.md
@@ -0,0 +1,72 @@
+# Utilidades para mapas y cartografía
+
+## josm
+
+Descargamos y añadimos la clave gpg:
+
+~~~~
+wget -q https://josm.openstreetmap.de/josm-apt.key -O- | sudo apt-key add -
+~~~~
+
+Añadimos el origen de software:
+
+~~~~
+sudo add-apt-repository "deb [arch=amd64] https://josm.openstreetmap.de/apt $(. /etc/os-release; echo "$UBUNTU_CODENAME") universe"
+~~~~
+
+Y ahora procedemos a la instalación:
+
+~~~~
+sudo apt update
+sudo apt install openjfx josm
+~~~~
+
+Alternativamente también podemos instalar la versión "nightly" con el
+siguiente comando, pero tendréis actualizaciones diarias:
+
+~~~~
+sudo apt josm-latest
+~~~~
+
+Ya estamos listos para editar Open Street Map offline.
+
+## MOBAC
+
+Bajamos el paquete desde [la página
+web](http://mobac.sourceforge.net/) y descomprimimos en `~/apps/mobac`
+como de costumbre nos creamos una entrada de menú con _MenuLibre_.
+
+Conviene bajarse wms adicionales para MOBAC y leerse [la
+wiki](http://mobac.sourceforge.net/wiki/index.php/Custom_XML_Map_Sources)
+
+### Referencias
+
+*[Cartografía digital] (https://digimapas.blogspot.com.es/2015/01/oruxmaps-vii-mapas-de-mobac.html)
+
+## QGIS
+
+Añadimos la clave gpg:
+
+~~~~
+wget -q https://qgis.org/downloads/qgis-2019.gpg.key -O- | sudo apt-key add -
+~~~~
+
+Ejecutamos:
+
+~~~~
+sudo add-apt-repository "deb [arch=amd64] https://qgis.org/debian $(. /etc/os-release; echo "$UBUNTU_CODENAME") main"
+~~~~
+
+E instalamos como siempre
+
+~~~~
+sudo apt update
+sudo apt install qgis
+~~~~
+
+### Referencias
+
+* [Conectar WMS con QGIS](https://mappinggis.com/2015/09/como-conectar-con-servicios-wms-y-wfs-con-arcgis-qgis-y-gvsig/)
+* [Importar OSM en QGIS](https://www.altergeosistemas.com/blog/2014/03/28/importando-datos-de-osm-en-qgis-2/)
+* [Learn OSM](http://learnosm.org/es/osm-data/osm-in-qgis/)
+* [QGIS Tutorials](http://www.qgistutorials.com/es/docs/downloading_osm_data.html)
diff --git a/src/850_recipes.md b/src/850_recipes.md
new file mode 100644
index 0000000..5a40380
--- /dev/null
+++ b/src/850_recipes.md
@@ -0,0 +1,133 @@
+# Recetas variadas
+
+## Solucionar problemas de menús duplicados usando menulibre
+
+----------------------------------------------------------------------
+__Nota__: Ya no uso _MenuLibre_
+----------------------------------------------------------------------
+
+En el directorio `~/.config/menus/applications-merged` borramos todos
+los ficheros que haya.
+
+## Formatear memoria usb
+
+"The driver descriptor says the physical block size is 2048 bytes, but Linux says it is 512 bytes."
+
+Este comando borró todas las particiones de la memoria:
+
+`sudo dd if=/dev/zero of=/dev/sdd bs=2048 count=32 && sync`
+
+I'm assuming your using gparted.
+
+First delete whatever partitions you can...just keep pressing ignore.
+
+There will be one with a black outline...you will have to unmount
+it...just right click on it and unmount.
+
+Again you will have to click your way through ignore..if fix is an
+option choose it also.
+
+Once all this is done... you can select the device menu and choose new
+partition table.
+
+Select MSdos
+
+Apply and choose ignore again.
+
+Once it's done it show it's real size.
+
+Next you can format the drive to whichever file system you like.
+
+It's a pain in the behind this way, but it's the only way I get it
+done..I put live iso's on sticks all the time and have to remove
+them. I get stuck going through this process every time.
+
+## Copiar la clave pública ssh en un servidor remoto
+
+`cat /home/tim/.ssh/id_rsa.pub | ssh tim@just.some.other.server 'cat >> .ssh/authorized_keys'`
+
+O también:
+
+`ssh-copy-id -i ~/.ssh/id_rsa.pub username@remote.server`
+
+## ssh access from termux
+
+
+## SDR instalaciones varias
+
+Vamos a trastear con un dispositivo [RTL-SDR.com](https://www.rtl-sdr.com/).
+
+Tenemos un montón de información en el blog de [SDR
+Galicia](https://sdrgal.wordpress.com/) y tienen incluso una guia de
+instalación muy completa, pero yo voy a seguir una guía un poco menos
+ambiciosa, por lo menos hasta que pueda hacer el curso que imparten
+ellos mismos (SDR Galicia)
+
+La guía en cuestión la podemos encontrar
+[aquí](https://ranous.wordpress.com/rtl-sdr4linux/)
+
+Seguimos los pasos de instalación:
+
+* La instalación de `git`, `cmake` y `build-essential` ya la tengo hecha.
+
+~~~~
+sudo apt-get install libusb-1.0-0-dev
+~~~~
+
+## Posible problema con modemmanager y micros programables
+
+Programando el _Circuit Playground Express_ con el _Arduino IDE_ tenía
+problemas continuos para hacer los _uploads_, al parecer el servicio
+_ModemManager_ es el culpable, se pasa todo el tiempo capturando los
+nuevos puertos serie por que considera que todo es un modem.
+
+Una prueba rápida para comprobarlo: `sudo systemctl stop ModemManager`
+
+Con esto funciona todo bien, pero en el siguiente arranque volvera a
+cargarse.
+
+Para dar una solución definitiva se puede programar una regla para
+impedir que el _ModemManager_ capture el puerto con un dispositivo
+
+Creamos un fichero con permisos de `root` en el directorio
+`/etc/udev/rules.d` que llamaremos: `99-arduino.rules`
+
+Dentro de ese fichero especificamos los codigos VID/PID que se deben ignorar:
+
+~~~~
+# for arduino brand, stop ModemManager grabbing port
+ATTRS{idVendor}=="2a03", ENV{ID_MM_DEVICE_IGNORE}="1"
+# for sparkfun brand, stop ModemManager grabbing port
+ATTRS{idVendor}=="1b4f", ENV{ID_MM_DEVICE_IGNORE}="1"
+~~~~
+
+Ojo que si tienes SystemV no va a funcionar.
+
+https://starter-kit.nettigo.eu/2015/serial-port-busy-for-avrdude-on-ubuntu-with-arduino-leonardo-eth/
+
+https://www.codeproject.com/Tips/349002/Select-a-USB-Serial-Device-via-its-VID-PID
+
+## Programar los nanos con chip ch340 o ch341
+
+Linux mapea el chip correctamente en un puerto `/dev/ttyUSB0` y con
+eso basta, que no te lien con el cuento de "drivers para linux"
+
+Todo lo que hace falta es configurar correctamente el _Arduino IDE_,
+hay que escoger:
+
+~~~~
+Board: "Arduino Nano"
+Processor: "ATmega168"
+Port: "/dev/ttyUSB0"
+~~~~
+
+Y ya funciona todo.
+
+## Linux Mint 20 es _python agnostic_
+
+Tenemos dos opciones:
+
+~~~~{bash}
+apt install python-is-python2
+apt install python-is-python3
+~~~~