Category Archives: Linux

Instalando Raspberry 3 B+ con RaspberryOS

En este en vivo explicamos e instalamos RasberryOS en un raspberry pi 3, con esto damos un paso importante para comenzar a usar nuestro RPi

Raspberry y las micro placas que abrieron el mundo al IoT.

En este video, comenzamos una serie sobre raspberry pi, y ARM en general. Donde exploraremos diversas formas de aprovechar estos boards de muy bajo costo e interesantes prestaciones.

Una alternativa simple al PHPMYADMIN

A veces necesitamos usar el phpMyAdmin, pero realmente se vuelve cuesta arriba el instalarlo. Es grande, pesado, y lleno de características que a la final muchas veces ni requerimos.

En este video conversamos sobre una alternativa sencillita al phpMyAdmin que nos puede ahorrar muchos dolores de cabeza:

Cómo reducir el tamaño de una imagen tomada de un sd

A veces tienes instalado en una SD o microSD un Linux.

Por ejemplo raspbian o raspberry os, o armbian. Y quieres guardar una imagen de esa instalación.

La insertamos en nuestra laptop con Linux y, supongamos que ve a la microSD de 16GB de almacenamiento, con tu raspbian instalado como /dev/sda

Procedemos a desmontar las particiones que seguramente nuestro Linux montó automáticamente:

umount /dev/sda1 (y ejecutamos lo mismo para sda2, sda3, etc)

Entonces haces:

dd if=/dev/sda of=raspbian.img bs=4M

y te queda una bella imagen “raspbian.img” del tamaño de la SD (16GB en mi caso hipotético).

Lo más seguro es que de esos 16GB, al menos 12 o 13 estén vacíos. Por gusto tenemos horrendo archivote!. Si pudiéramos recortar ese espacio que está de más.

Porque además, supón que mañana quieres copiar la misma imagen a una SD más pequeña, de 4GB… 16GB no caben en una SD de 4GB. Pero si tuviéramos una imagen de, digamos 3GB, esta cabría en una SD de 4GB, de 8GB, etc.

Lo que podemos hacer es un peque proceso, a mi forma, para cortar, quitar, todo ese pedazo que nos sobra.

Para ello, con la SD desmontada ejecuto:

sudo udisksctl loop-setup -f raspbian.img

Este paso anterior nos crea un loop0 al que podremos manipular:

sudo gparted /dev/loop0

Me mostrará algo así:

Como vemos, el espacio usado en la última partición (que es la única en mi caso) es el de amarillo, el resto, 12.37GiB están vacíos.

Procedo a redimensionar

Como puedes ver, escojo dejar un poco de espacio libre (en blanco), el tamaño nuevo de la partición me queda en mi caso en 2978MiB. Me quedará un gran pedazo de espacio al final libre (12212 en mi caso):

Y ahora aplico los cambios, este proceso demorará un poquito, de acuerdo a cuán rápida sea la SD:

Ahora, a este mismo loop (/dev/loop0 en mi caso) procedo a validar cuál es el último sector usado:

Ok, en mi caso, la SD tiene 31116288 sectores en total (ver arriba a la derecha) y la última partición va hasta el sector debajo de “Final”: 6107135

Puedo entonces truncar desde el 6107136 en adelante. Se suma 1 a 6107135 porque el conteo de sectores comienza en 0.

Primero borro el loop:

sudo losetup -d /dev/loop0

Y ahora trunco la imagen:

truncate --size=$[(6107135+1)*512] armbian-radio.img

La imagen resultante va a ser de aproximadamente el valor al que redimensionaste en gparted. En mi caso me quedó de 3GB.

Verificando el proceso

Ahora puedo escribir la imagen hacia otra flash. Y hasta será muy rápido el proceso pues en mi caso son 3GB a escribir y no 16!

sudo dd if=raspbian.img of=/dev/sda bs=4M
745+1 registros leídos
745+1 registros escritos
3126853632 bytes (3,1 GB, 2,9 GiB) copied, 230,285 s, 13,6 MB/s

Voló!

Y saco y vuelvo a insertar mi SD y mira:

Efectivamente reporta unos 3GB! Con un poquito de espacio libre.

Si quisiera, puedo redimensionar la partición a los 16GB de mi SD:

sudo umount /dev/sda1

sudo gparted /dev/sda

A veces mejor dejarle libre unos 8MB al final.

How to upload to e-qsl from Linux shell

So, for example: you are using WSJT-X and would like to automatically upload your new contacts from your Linux to EQSL.

WSJT-X store its logs in ~/.local/share/WSJT-X/wsjtx_log.adi

I have created a small script to check if wsjtx_log.adi has been modified, extract the last 2 QSO from the file to a temporary file and upload that file to eQSL, here is how:

git clone https://github.com/hc6pe/adifupload.git
cd adifupload
chmod +x adifupload.sh

Edif adifupload.sh and change ADIFILE, EQSLUSER and EQSLPASS to suit your needs:

vi ~/adifupload/adifupload.sh
....
#Where is your .adi file located? 
#Specify the full path (change YOURUSERNAME):
ADIFILE="/home/YOURUSERNAME/.local/share/WSJT-X/wsjtx_log.adi"
#your eQSL username. Use CAPS altough I think
# lowercase will work as well
EQSLUSER="N0CALL"
#your EQSL password.
EQSLPASS="not-my-pass"
...

And add a crontab task to start adifupload.sh on every reboot (change YOURUSERNAME to your user’s home dir):

crontab -e
@reboot /home/YOURUSERNAME/adifupload/adifupload.sh

Now, the script will start on your next reboot. And keep started checking if your ADIFILE has changed, if it notice it has changed, then it will upload the last 2 lines of the files (just in case it missed the previous upload).

Of course, if you have “massaged” the logfile, for example updating some QSO info (date, time, band, etc), this script will not upload the changed QSOs unless it is one of the last 2 lines.

So I suggest, from time to time, to do a full upload of your adif file by signing into eQSL.cc and do a manual upload. This way you may catch any missing to upload QSO.

¿Cómo activar consola serial en CentOS-7?

Esto puede no funcionar para CentOS-8

  • Edito /etc/sysconfig/grub
  • en GRUB_CMDLINE_LINUX agrego: console=ttyS0
  • En GRUB_TERMINAL_OUTPUT agrego: serial
  • En la línea de comando: stty -F /dev/ttyS0 speed 9600
  • Ejecuto: grub2-mkconfig -o /boot/grub2/grub.cfg
  • systemctl enable --now getty@ttyS0
  • Reinicio la VM: reboot
  • Desde el hospedero puedo ejecutar: virsh console vm
  • Para salir de la consola presiono: CTRL 5

¿Cómo redimensionar un qcow2?

Este howto funciona perfectamente para CentOS-8. En CentOS-7 no tenemos nbd por lo que no funcionará tal cual aquí se ve.

  • Apagas la vm: virsh shutdown vm
  • Verificas que ya se haya apagado: virsh list
  • Incrementas el qcow2: qemu-img resize /var/lib/libvirt/images/vm.qcow2 +40G
  • Cargas el módulo de nbd en el kernel: modprobe nbd
  • Asignas el disco duro a un dispositivo nbd: qemu-nbd -c /dev/nbd0 /var/lib/libvirt/images/vm.qcow2
  • instalas gparted: dnf install -y gparted
  • Ejecutas gparted en el dispositivo nbd: gparted /dev/nbd0
  • Cuando finalizas el proceso de redimensionar y cierras el gparted, procedes a eliminar el dispositivo nbd:
    • qemu-nbd -d /dev/nbd0 && rmmod nbd
  • Enciendes la vm: virsh start vm

Instalar KVM en CentOS-8 Básico

Este es el proceso a seguir para instalar KVM en una instalación básica de CentOS-8

Esta instalación vendrá con cockpit para poder manejar las máquinas virtuales más cómodo

dnf -y install  epel-release

dnf -y groupinstall "Host de virtualización"

dnf -y install screen virt-manager cockpit-pcp \
cockpit-storaged cockpit-dashboard \
cockpit-machines xorg-x11-xauth

systemctl enable --now libvirtd cockpit.socket

Si todo fue bien, procedemos a reiniciar y validar podemos ingresar al cockpit : https://TUIP:9090

Una vez dentro de cockpit, cambiamos en “Sistema” el “Perfil de Rendimiento” a “virtual-host”

En la sección “Networks” de “Virtual Machines” podremos validar que, efectivamente, el bridge está activo:

Si no estuviera activo, debemos seguir lo indicado en nuestro otro post aqui.

En “Storage Pools” de la sección “Virtual Machines” procedemos a agregar el pool por defecto. En nuestro caso estará en /var/lib/libvirt/images y le llamaré “default” pues en caso de tener varios pools, el pool llamado “default” es el que cockpit escogerá:

Cómo agregar un bridge para KVM en CENTOS-8

No es muy difícil, pero al momento es la forma que he hallado para agregar un bridge al CentOS-8 de forma tal que se pueda usar en KVM.

Quizá hayan otras formas, pero esta es la que me ha funcionado luego de tanta prueba y error.

Vamos a asumir que tenemos una interfaz de red llamada “enp2s0“. Por supuesto se debe verificar cuál es el nombre de su interfaz de red en su instalación y cambiar enp2s0 por el nombre correcto de su interfaz.

Edito el archivo /etc/sysconfig/network-scripts/ifcfg-br0 y le pongo estos contenidos (tener en cuenta cambiar la IP a la IP de su server):

DEVICE=br0
NAME=br0
TYPE=Bridge
DELAY=0
STP=off
ONBOOT=yes
IPADDR="192.168.1.120"
PREFIX="24"
GATEWAY="192.168.1.1"
DNS1=8.8.8.8
BOOTPROTO=none
DEFROUTE=yes
AUTOCONNECT_SLAVES=yes
IPV6INIT=no

Ahora edito el archivo de configuración de mi interfaz (/etc/sysconfig/network-scripts/ifcfg-enp2s0) y le dejo tal y como se ve aquí, ni una letra más, ni una menos (tener en cuenta poner el nombre correcto en NAME y en DEVICE:

TYPE="Ethernet"
NAME="enp2s0"
DEVICE="enp2s0"
ONBOOT="yes"
BRIDGE=br0

Ahora procedo a agregar el bridge a KVM:

Creo un xml : /root/br0.xml con estos contenidos exactamente:

network>
    <name>br0</name>
    <forward mode="bridge"/>
    <bridge name="br0" />
</network>

Y procedo a darle de alta al KVM:

virsh net-start br0
virsh net-autostart br0
virsh net-list --all

Si todo parece bien, reiniciamos el equipo y deberá regresar con la IP asignada a la interfaz br0.

¿Cómo recupero una grabación de zoom que falló?

Me ha sucedido sólo una vez, pero casi entro en crisis: Al acabar de grabar una hora de clases, más de una hora de clases, el zoom comenzó a convertir la grabación y, fue mi error, lo reconozco, pero la aplicación de zoom ya no aparecía como activa. Fue mi error: le cerré por error.

Pero esto también puede ocurrir cuando, quizá, se va la luz, o por alguna razón el sistema deja de responder.

Encontré que realmente recuperarla no fue difícil, lo que hice fue volver a abrir el zoom en mi caso, me fui abajo a “Meetings” -> luego arriba a “Recorded” -> y ahi estaba mi última sesión, con un botón que dice “Convert”.

Luego que apreté convert, comenzó a convertir la grabación que pensé que había perdido.