parent
29fa3438c1
commit
d8edcc01c5
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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 <ludovic.rousseau@free.fr>
|
||||||
|
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 <ludovic.rousseau@free.fr>
|
||||||
|
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
|
||||||
|
~~~~
|
@ -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`
|
@ -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)
|
@ -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
|
||||||
|
<https://linuxconfig.org/ssh-into-linux-your-computer-from-android-with-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
|
||||||
|
~~~~
|
Loading…
Reference in new issue