Mostrando entradas con la etiqueta linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta linux. Mostrar todas las entradas

viernes, 17 de julio de 2026

Solucionar error shebang en múltiples scripts bash linux

¿Qué es eso del error "shebang"?

Un error shebang, es un error en el que no se encuentra el intérprete especificado en la primera línea del script 

En el caso de un script bash linux lo podemos comenter con un error tan aparentemente inocente como empezar los scripts con la línea:

#/bin/bash

 En lugar de:

#!/bin/bash

Desde luego comerse el carácter ! es un error fácil de cometer pero es un error y, aunque la mayoría de las veces el script se ejecuta con bash sin mayores problemas puede confundir a tu editor de código, también es una mala práctica que puede producir en el futuro misteriosos errores que nos vuelvan locos buscándolos. 

Lo normal es que te des cuenta cuanto ya tienes cientos de archivos bash con el error, ¿que harías? ¿abrir cada uno de los archivos y cambiar esa primera línea a mano, seguro que cometes nuevos errores, así que lo mejor sería entrar en cada directorio afectado y ejecutar sed tal que así:

sed -i '1s|^#/bin/bash|#!/bin/bash|' *

Así de una tacada arreglo todos los archivos del directorio.

Hay que tener cuidado con estos comandos porque son muy poderosos y te lo cambian todo, para mayor seguridad:

  1. Asegurarse que estamos en el directorio correcto, es fácil hacer que recorra todos los subdirectorios, pero por ahora lo dejamos para un futuro artículo
  2. Le pasamos el parámetro -i para que haga los cambios sin hacer copias temporales, así que hay que tener cuidado porque no hay vuelta atrás.
  3. En la cadena ponemos 1s antes de la tubería para que cambie solo la primera línea y empiece la búsqueda al principio de ésta.
  4. Bueno, en realidad no me he tirado sin red, ya que los cambios en el repositorio está controlados por git, si algo sale mal se puede volver atrás y se puede saber exactamente que se ha cambiado, a la línea y al caracter.

Esta es la potencia de bash en GNU/Linux, que hace el trabajo duro en lugar de nosotros.

Por cierto, hay errores shebang todavía más difíciles de detectar y normalmente se producen por usar editores patateros de Windows:

  • Los saltos de línea deben ser estilo unix, así que te vas a ahorrar muchos quebraderos de cabeza usando GNU/Linux. Y no macOS no tiene los mismos saltos, aunque esté basado en un unix, los de la manzana también son especialitos con estos (son distintos a los de Linux/Unix y también a los de Windows).
  • Los editores no profesionales como el blog de notas de Windows tienen a introducir caracteres invisibles que no vemos pero nuestro sistema sí, estos errores son muy difíciles de detectar y corregir. ¿por qué lo hacen? ellos sabrán...

viernes, 5 de junio de 2026

Usar claves asiméticas SSH con gitlab

GitLab ya no permite subir por https los cambios en tus repositorios, por lo que hay que utilizar métodos "más seguros", aunque se puede crear un token para salir el paso, no lo recomiendo porque es "pan para hoy y hambre para mañana", ya puestos usamos claves asimétricas SSH.

Si NO las tienes creadas, ya las estás creando :D 

Si ya las tienes creadas tienes que seguir los siguientes pasos:

  1. Localiza tu clave privada, está en /home/tuusuario/.ssh y es un archivo que termina con la extensión .pub, vamos a suponer que es id_xxxx.pub
  2. Muestra el contenido con los comandos:
    cd /home/tuusuario/.ssh
    cat id_xxxx.pub
  3. Copia el contenido de la misma en el portapapeles seleccionándola con el ratón, clic con el botón derecho y copiar.
  4. Iniciamos sesión en gitlab con nuestras credenciales.
  5. Ve al avatar, selecciona Preferences > SSH Keys (si tienes dificultades para encontrar la opción tiene un buscador donde puedes poner "SSH Keys").
  6. Pega el contenido que habías copiado previamente en el campo "KEy".
  7. Clic en el botón "Add key".
  8. Verifica la conexión con el siguiente comando, si pide que confías dí que sí:
    ssh -T git@gitlab.com
  9. Ahora tienes que cambiar el archivo .git/config en tu repositorio local de manera que quede como algo así:
    [core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
    [remote "origin"]
        url = git@gitlab.com:tuusuario/elrespositoriodetuproyecto
        fetch = +refs/heads/*:refs/remotes/origin/*
    [branch "master"]
        remote = origin
        merge = refs/heads/master
     
  10. Y listo, ya puedes subir de nuevo tus commits 

jueves, 28 de mayo de 2026

Cadence, emulador Amstrad CPC enfocado al desarrollo

Cadence es un nuevo emulador que está desarrollando Abalore, conocido en la escena Amstrad por hacer diversos desarrollos interesantes como su juego Alcon 2020, por nombrar un botón de muestra.


Está disponible para GNU/Linux, macOS  y Windows, en paquetes AppImage, DMG y EXE respectivamente.  

A pesar de estar en desarrollo, lo he probado como un emulador normal y me ha parecido que va muy fino y preciso, incluso con juegos tan exigentes como Pinball Dreams y algunos demos difíciles de emular.

Abalore ha preparado un appimage en su página de proyectos para simplemente descargar, darle permisos y ejecutar, si tienes una distro Linux actual es muy buena opción, por ejemplo Debian 13.

Sin embargo yo tuve algunos problemas con equipos con la versión anterior de Debian por versiones de una librería, además de que no serviría para una raspberri pi al ser otra arquitectura de hardware distinta.

Ambos problemas los solucioné compilando el código desde su repositorio en github, algo tan sencillo como ejecutar los siguientes comandos en tu terminal:

Nos hacemos administradores con los comandos sudo bash o su- y tecleamos:

apt install git qt6-base-dev qt6-svg-dev libqt6opengl6-dev libportaudio2 portaudio19-dev build-essential
git clone https://github.com/abalore/Cadence
cd Cadence
qmake6 Cadence.pro
make -j"$(nproc)" 

O lo instalamos con RetroMultiInstaller que ya incluye este emulador y hasta crea el acceso directo.

El funcionamiento es muy sencillo:

  • Abajo puedes ver unos botones alargamos para cargar cintas o discos, tanto en la unidad A: como en la B:, para cargar o expulsar hay que hacer doble clic en el botón correspondiente.
    •  También tiene un testigo como los CPC reales mostrando la actividad de las disqueteras.
  • Arriba tienes los menús para seleccionar el modelo de CPC, reseteo, selección de medios y la joya de la corona: las herramientas para desarrollo, debug, inspeccionar memoria, puntos de ruptura...
  • También puedes usar las teclas de función para diferentes operaciones, de entre las que destacamos:
    • F1: Insertar cinta
      • Mayus + F1: rebobina
      • Ctrl + F1: expulsa la cinta.
    • F2, insertar disco en la unidad A:
      • Ctrl + F2: expulsa disco en A:.
    • F3, insertar disco en la unidad B:
      • Ctrl + F3: expulsa disco en B;.
    • F5: muestra el depurador.
    • F6: muestra el ensamblador.
    • F9: desbloquea el límite de la velocidad real del CPC.
    • F10: activa la emulación de joystick.
    • F11: muestra el emulador a pantalla completa.
      • Mayus + F11: monitor fósforo verde.
      • Ctrl + F11: escalado suave.
    • F12: reset.
    • Ctrl + un número del 0 al 5: activa la persistencia del fósforo.
    • Alt + F4: salir del emulador.
  • Todos atajos de pantalla en el depurador y ensamblador podéis verlo mediante la opciones de Menú:
    • Help ► Shotcuts...

 

Cadence, como nos ha recordado su autor, también es un emulador pensado para tener la mínima latencia, tanto el vídeo como en audio, algo que van a agradecer y mucho los jugones más exigentes.

Puedes poner que emule el joystick o no, así como el comportamiento de la tecla mayúsculas para que emule teclas especiales. Os recomiendo que vayáis experimentando las muchas opciones que trae. 

Un emulador llamado a ayudar a los desarrolladores del CPC y a aficionados exigentes y amantes de los sistemas unix. 

viernes, 22 de mayo de 2026

Hacer juegos con bash

SÍ, no lo has leído mal pone "Hacer juegos con bash" no "Hacer juegos para bash", sabíamos que bash es un lenguaje de scripting para GNU/Linux muy potente pero, ¿tanto como para crear un videojuego? Pues sí, de hecho se han creado unos cuantos con él.

Lógicamente, no esperes un juego espectacular, pero hay varios creados para consola que se pueden hasta disfrutar. 

Algunos ejemplos:

  1. Basheroids: estilo Asteroids en Bash. Lo puedes descargar de https://github.com/Kafito/BashGameEngine
  2. Bash 2048: versión del juego 2048 programada en Bash. Lo puedes descargar de https://github.com/JosefZIla/bash2048
  3. bashcrawl: aventura de texto en Bash para aprender a moverte por la terminal y encontrar un tesoro. Se puede descargar de https://github.com/planetacomputer/bashcrawl
  4. Bash Hangman: ahorcado implementado en Bash. Lo puedes descargar de https://github.com/akshayub/Hangman-Bash
  5. Bash Invaders: clon de Space Invaders hecho en script Bash. Lo puedes descargar de https://github.com/Datron/space_invaders
  6. Bash minesweeper: buscaminas en Bash, normalmente en versión ASCII. Lo puedes descargar de https://github.com/matman26/shell-sweeper
  7. Bash Quiz games: cuestionarios interactivos hechos con Bash. Lo puedes descargar de https://github.com/AleksandarKostovic/bash-game
  8. Bash RPGs simples: aventuras de texto y combates por turnos en shell script. Lo puedes descargar de https://github.com/wolandark/bash-dungeon
  9. Bash Snake: versión de Snake escrita en Bash. Lo puedes descargar de https://draft.blogger.com/#
  10. Bash Tetris: Tetris hecho en bash. Lo puedes descargar de https://draft.blogger.com/#
    Bashtris: clon de Tetris hecho en Bash. Lo puedes descargar de https://github.com/dereksgithub/bash-tetris 
  11. Bash Tic-Tac-Toe: tres en raya hecho en shell script. Lo puedes descargar de https://github.com/AshutoshNirkhe/tic-tac-toe
  12. BashVenture: framework clásico de aventura textual para Bash. Se puede descargar de https://github.com/apetro/BashVenture 
  13. Playground: buscaminas para la consola. Lo puedes descagar de https://github.com/abhiTamrakar/playground
  14. Sausage: juego de palabras para terminal escrito en Bash, inspirado en Bookworm. Se puede descargar de https://gitlab.com/christosangel/sausage
  15. shell-adventure: aventura de texto pequeña escrita en Bash. Se puede descargar de https://github.com/aafrecct/shell-adventure
  16. tetri.sh: Tetris sencillo programado en Bash. Se puede descargar de https://github.com/psykulsk/tetri.sh

Algunos de estos programas los podéis encontrar en los repositorios de tu distro, por ejemplo en el paquete bash_games.

 


 

viernes, 15 de mayo de 2026

Crear una imagen para una microSD a partir de los archivos y directorios que hay en una ruta de directorio

Supongamos que queremos crear una imagen para distribuir entre dispositivos que consiste en un conjunto de archivos y directorios contenidos en un archivo ZIP que hay que volcar en una microSD con formato FAT32, por ejemplo para usar algún desarrollo baremetal para algún dispositivo ARM, real o emulado.

Vamos a tomar como ejemplo el paquete del software Symbos40pack para Amstrad CPC del que se habló hace poco en este artículo de AUA.

Para empezar hay que instalarse las dostools ya que vamos usar el formato FAT32:
sudo apt install dosfstools

  1. Descargar el sofware de la dirección:
    https://mega.nz/file/GMAHEQBQ#HGBzIviRVH5PZsMNnPDGBu-B3oa9764b-2vyph3bu_k 

    Cuando descargamos la distribución obtenemos un archivo ZIP que hay que descomprimir en una tarjeta SD que hay que meter en el M4, por tanto el primer paso va a ser descomprimir, lo podemos hacer desde el explorador del sistema o desde consola con el comando unzip.

  2. Para no liarla recomiendo descomprimir en una carpeta donde solo esté el contenido del zip, asumiendo que estamos en la ruta donde hemos descargado Symbos40pack.zip :
    mkdir symbos40
    cd symbos40
    unzip ../Symbos40pack.zip

  3. Hay que averiguar el tamaño del sistema descomprimido.

    du . -sh

    Que nos da un tamaño de 658M, así que habrá que crear una imagen de un tamaño algo más grande, por ejemplo de 1000Mb.

  4. Nos aseguramos que están instaladas las dostools:
    sudo apt install dosfstools
     
  5.  Creamos la imagen de la tarjeta SD:

    dd if=/dev/zero of=../symbos40pack.img bs=1M count=1024
    /sbin/mkfs.vfat ../symbos40pack.img
    mkdir /tmp/imgmnt
    sudo mount -o loop ../symbos40pack.img /tmp/imgmnt
    sudo cp -a . /tmp/imgmnt/
    sudo umount /tmp/imgmnt

Ahora esta imagen la podríamos "tostar" en una microSD o pendrive con el comando dd o usar en un entorno de virtualización, emulación, etc...

viernes, 1 de mayo de 2026

Instalar PiApps en Raspberry Pi OS

PiApps es un script para instalar aplicaciones en Raspberry Pi OS adaptadas específicamente para este tipo de placas.


 

Es un buen complemento para completar la terna de instaladores con synaptic, para instalar software genérico de la familia Debian y RetroMultiInstaller, la colección de scripts para hacer triviales instalaciones complejas.

Si no lo tienes instalado lo puedes instalar desde el propio RetroMultiInstaller o manualmente tecleando estos comandos desde la consola de GNU/Linux:

sudo apt install curl
curl -fsSL https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash

Ahora tienes un nuevo acceso a PiApps en la categoría Accesorios del menú de aplicaciones.

También se crea un acceso en el escritorio, en este caso si hacemos doble clic nos aparece un aviso de que es una secuencia de órdenes, nosotros pulsamos ejecutar.

 

Cuando ejecutes el programa aparecerán las categorías en las que se clasifican, haciendo clic en cada una de ellas s aparecen los programas con una opción de 'Back' para volver al menú anterior.

Las aplicaciones instaladas aparecerán en un color verde, reconoce las que ya estaban instaladas con apt (todas las instaladas con synaptic y algunas con RMI)

Al hacer clic en un programa aparece la descripción del mismo ofreciendo la opción de instalarla o desinstalarla. 

Al pulsar Instalar se ejecuta el script personalizado de instalación. 

viernes, 17 de abril de 2026

Leer parte de una URL de otra URL y con plan B

Supongamos que queremos descargar mediante un script un archivo, pero con estas circunstancias:

  1. Cuando cambia de versión, la URL cambia porque el número de versión es parte de la descarga.
  2. Si accedemos a una dirección concreta obtendremos el número de versión actual. Para ello usamos el comando wget URL -q -O - que nos devolverá el contenido del archivo descargado, si no tiene éxito nos devolverá una cadena vacía. El resultado de la operación lo pasamos una variable.
  3. En el caso de haber obtenido una cadena vacía, por estar la dirección que nos devuelve la versión fuera de línea, indicamos una versión que sabemos que siempre vamos a tener disponible. Así al menos poder instalar el programa aunque no sea la última versión.

En el script de descarga del emulador ZESarUX, tenemos un buen ejemplo de implementación de todo lo explicado:

#/bin/bash
software="zesarux"
carpeta="zesaruxpack"
latestversionurl="http://51.83.33.13/check_updates/stable.txt"
versionpack=$(wget $latestversionurl -q -O -)
if ["$versionpack" == ""]; then
    versionpack="12.0"
fi
echo "ZESarUX $versionpack"
../commonscripts/instalator.sh git build-essential libsdl1.2-dev libsdl2-dev libncurses5-dev libaal-dev libcaca-dev wget
wget -c https://github.com/chernandezba/zesarux/releases/download/ZEsarUX-$versionpack/ZEsarUX_src-$versionpack.tar.gz -O $software.tar.gz
tar -zxvf $software.tar.gz
mv ZEsarUX-$versionpack $carpeta
cd $carpeta
# compilar
git pull
cd src
./configure
make
sudo make install

Este script descarga la última versión estable de código, que tenemos en http://51.83.33.13/check_updates/stable.txt tal y como me indicó su creador.

viernes, 20 de marzo de 2026

Horacio esquiador: remake para GNU/Linux

Hace tiempo Luis L. García Ventura hizo un simpático remake de Horacio Esquiador para GNU/Linux, el conocido juego en ordenadores de 8 bits.



Para quien lo quiera probar solo tiene que:

  1. Descargarlo.
  2. Descomprimirlo en tu carpeta preferida.
    tar zxvf horacio_linux.tar.gz
  3. Dar permisos de ejecución y ejecutar:
    chmod +x horacio_static
    ./horacio_static

Otro juego sencillo que despertará una sonrisa a más de un nostálgico. :D 

viernes, 13 de marzo de 2026

Retropixel y OpenSouthCode este verano en Málaga

Este año empezaremos el verano en Málaga con dos de los grandes eventos tecnológicos tecnológicos que se celebran todos los años en la ciudad. 

Retropixel 2026 

Retropixel 2026, la IX Muestra de retroinformática y videojuegos, se traslada este año al Palacio de Ferias y Congresos de Málaga (FYCMA), los días 3, 4 y 5 de julio... nos han comentado que sigue siendo gratis :D


Ver el mapa más grande

Por si alguien no sabe a estas alturas qué es RetroPixel Málaga:
RetroPixel es una actividad orientada para toda la familia, cultural, solidaria y completamente gratuita organizada por la Asociación Lúdico Técnica de Aficionados a la Informática Retro (ALTAIR), más conocidos por realizar el podcast Retro Entre Amigos. El evento está patrocinado por el Polo de Contenidos Digitales.
El objetivo de RetroPixel es dar a conocer la historia de la informática, los orígenes de la industria de los micro ordenadores, ordenadores personales y videoconsolas así como la evolución de los videojuegos en estos últimos 40 años.

En esta edición de RetroPixel celebrarán:

  • 30 aniversario de Nintendo 64
  • 50 aniversario del microprocesador Zilog Z80
  • El auge del 3D: 30 años de Quake y Tomb Raider


Los Contenidos se suelen dividir en varias zonas:

  • Exposición de componentes, ordenadores, micro ordenadores y vídeo consolas: Esta zona de la actividad consistirá en la exposición de ordenadores tanto de uso empresarial como doméstico (micro ordenadores), haciendo especial hincapié en los micro ordenadores de los años 80 y 90. También se realizará una exposición de las videoconsolas más importantes de estas mismas décadas.
  • Zona de juego: En esta zona se montarán micro ordenadores, videoconsolas y máquinas recreativas y pinballs (si fuera posible) de los 80 y 90 para que los visitantes puedan jugar a los videojuegos que marcaron el comienzo de la industria.
  • Conferencias: Se realizarán conferencias y/o talleres sobre la historia de la informática, desarrollo de video juegos, historia de los videojuegos…
  • Torneos: Se realizarán torneos de videojuegos entre los asistentes que quieran participar.
  • Talleres: Se realizarán diferentes talleres para niños y mayores.


En la página oficial, https://www.retropixel.es/, irán poniendo más información próximamente, ¡estad atentos! :D

Tanto el recinto como el aparcamiento es enorme, en la WikiPedia lo podéis ver,  por lo que no hay problemas para ir en coche, aunque también está bien comunicado por autobuses.

 

OpenSouthCode 2026

Una semana antes y a pocos metros, se celebra como todos los años, OpenSouthCode 2026,  del 26 al 27 de junio en la Térmica. También es un evento gratuito.


Ver el mapa más grande

Para quien no lo conozca aún se trata de un evento con charlas y talleres muy interesantes en todos los campos relacionados con el software/hardware libre y cultura abierta, si piensas que tienes algo que aportar todavía admiten propuestas hasta final de mes.

También se puede ir en coche, pero para no tener problemas de aparcamiento es más recomendable usar el autobús, las líneas 15 y 16 pasan muy cerca. 


 Yo no se tú, pero yo no me los voy a perder :D

viernes, 6 de marzo de 2026

¿Cómo cambiar el DNS al que se conecta Raspberry pi OS de 64 bits?

La última versión de Raspberry pi OS disponible en 2025 usa NetworkManager para gestionar las conexiones de red, por lo que la manera de configurar la red es distinta a lo que estamos acostumbrados.

Vamos a ver como usar un DNS distinto al que nos asigna nuestro router, para lo que vamos a seguir los siguientes pasos:

  1.  Abre una terminal en tu Raspberry Pi.
  2. Ejecuta el siguiente comando para listar las conexiones de red:
    bash
    nmcli connection show
  3. Identifica el nombre de tu conexión (por ejemplo, "Wired connection 1" para Ethernet o el nombre de tu red Wi-Fi).
  4. Utiliza el siguiente comando para modificar la configuración DNS de tu conexión, reemplazando "NOMBRE_CONEXION" con el nombre identificado en el paso anterior y "DNS_SERVIDOR" con la dirección IP del servidor DNS que deseas utilizar:
    bash
    sudo nmcli connection modify "NOMBRE_CONEXION" ipv4.dns "DNS_SERVIDOR"

    Por ejemplo, para usar los servidores DNS de Cloudflare (1.1.1.1 y 1.0.0.1) y suponiendo que el nombre de nuestra wifi es MIWIFI tendriamos que ejecutar los siguientes comandos:
    bash
    sudo nmcli connection modify "MIWIFI" ipv4.dns "1.1.1.1 1.0.0.1"

  5.  Reinicia la conexión de red para aplicar los cambios:
    bash
    sudo nmcli connection down "MIWIFI" && sudo nmcli connection up "MIWIFI"
  6.  Verifica que los cambios se hayan aplicado correctamente ejecutando:
    bash
    nmcli connection show "MIWIFI" | grep ipv4.dns

Los cambios se guardarán en el archivo de configuración correspondiente en /etc/NetworkManager/system-connections/[nombre-conexion].nmconnection

Si prefieres una interfaz de texto más amigable, puedes usar el comando nmtui para configurar la red, incluyendo los servidores DNS, a través de una interfaz de usuario basada en texto


.

viernes, 20 de febrero de 2026

Utilidades para compartir información entre PC y CPC desde GNU/Linux


Hace tiempo vimos una guía de emuladores para ejecutar software de los ordenadores Amstrad en GNU/Linux, ahora vamos a ver que aplicaciones podemos usar en este sistema para intercambiar información entre el PC y un Amstrad CPC.

Nativas

Aplicaciones nativas de GNU/Linux para interactuar con nuestro Amstrad.

Audacity

Si quieres pasar una cinta de Amstrad al PC el primer paso es digitalizarla como archivo WAV sin comprimir para luego convertirla a los formatos que entienden los emuladores.
Para esta tarea audacity es el software ideal que incluso permite la edición del audio para mejores resultados, variando el volumen por ejemplo.

CPCXFS

CPCXFS es un editor de imágenes de discos de 3'' para usar con emuladores de Amstrad CPC, que permite:
  • Crear las imágenes.
  • Listar su contenido.
  • Inyectar o eliminar archivos en dichas imágenes.
  • Renombrar archivos dentro de la imagen.
  • Etc.
Enlaces:

CPCTools

Conjunto de herramientas para editar DSK (iDSK), reproducir los sonidos de un TZX/CDT (playtzx) o para transferir archivos a un CDT (2CDT).

TZX Tools

Conjunto de herramientas para manejar volcados de cinta tzx (recuerda que los cdt son en realidad tzx con volcados de cinta de Amstrad CPC).
Comandos disponibles:
  • tzxcat: para extraer los datos de un TZX. 
  • tzxcleanup: limpia el tzx.
  • tzxcut: corta bloques.
  • tzxmerge: une varios tzx en uno solo.
  • tzxsplit: separa un tzx en programas separados.
  • tzxtap: convierte un volcado tzx en uno tap.
  • tzxwav: convierte un volcado de cinta grabado en formato wav en un tzx.
Estas herramientas están hechas en python.

GFX2CRTC

Herramienta para convertir imágenes de PC a Amstrad CPC


CPCTelera

Herramienta para desarrollar juegos para el Amstrad CPC en el propio PC, compila directamente a volcados de cinta, disco y memoria.
Enlaces:

Z88dk

Herramienta para desarrollar software para máquinas diferentes máquinas de 8bits en el PC, Amstrad incluidos.


No nativas

Hay aplicaciones para Windows que funcionan perfectamente con wine, vamos a verlas.

CPCDiskXP

Herramienta para crearte tus propios DSK añadiendo los archivos que quieras y poder luego volcarlos en un disquete real, aunque esta última parte la tienes que hacer en un PC con disquetera interna y con Windows.

CPCTapeXP

Esta herramienta te permite crear tus propios archivos CDT/TZX a partir del archivo WAV de la cinta digitalizada, editarlos, etc...
Funcionan los apartados para sacar información del cdt o editar los bloques, pero la conversión de wav a cdt se cierra en GNU/Linux.

ConvImgCPC

Adapta y convierte imágenes del PC para su carga en el Amstrad CPC, se pueden grabar comprimidas para cargarse con un cargador especial o estándar, guarda la paleta y también soporta el modo de la gama plus con muchos más colores.

NO$Cart

NO$Cart convierte volcados de disco DSK en imágenes de cartucho cpr para la gama CPC+, lo que permitiría volcarlos en un cartucho real, hay que pasarle también el comando para arrancar el menú del disquete.

La conversión se haría con una instrucción como ésta:
nocart midisco.dsk cartucho.cpr -c 'RUN"disc'
Esta es una aplicación de DOS y funciona bien con DosBox, aunque en teoría se podría compilar para GNU/Linux con el código que acompaña a los binarios pero al menos yo no lo he conseguido.

viernes, 13 de febrero de 2026

FooBilliardPlus: la evolución lógica de FooBilliard

FooBilliard era un juego de billard 3D que se jugaba con el ratón y que ahora tiene un más que digno sucesor FooBilliard plus, sigue siendo un juego libre.


El juego se controla con el ratón con el que apuntas la bola moviéndote con el mismo y aumentas o disminuyes la fuerza del disparo con la rueda de desplazamiento, todo de un modo bastante realista.

Una vez la tienes preparada basta con pulsar el botón central del ratón o la barra espaciadora para hacer tu lanzamiento.

Arriba a la derecha hay unos botones que te permiten controlar la música o acceder a la ayuda con todas las teclas disponibles.


Soporta los siguientes tipos de juego: 8ball, 9ball, snooker o carom

Un juego simple, bonito y muy adictivo.

Los usuarios de distribuciones de GNU/Linux lo podéis instalar de los repositorios oficiales, por ejemplo con este comando:

https://foobillardplus.sourceforge.net/ 

También está disponible para otras familias de distribuciones de GNU/Linux, Windows y código fuente.


viernes, 6 de febrero de 2026

Formatear un pendrive con celdas defectuosas en Debian

¿Quién no se ha encontrado alguna vez con un pendrive con celdas defectuosas?


Nuestra primer impulso es tirarlo a la basura, ¡MAL! Primero porque antes deberíamos destruirlo por completo por la información sensible que pueda seguir teniendo accesibles pero a lo mejor todavía se le puede dar uso, al menos para transportar datos que tengamos respaldados en otros dispositivos más fiables.

Para ello debemos formatear el pendrive en Debian marcando las celdas defectuosas para evitar su uso. Debian trae herramientas de bajo nivel para marcar los sectores dañados como inutilizables y dejar una partición solo en la zona sana del dispositivo.

Vamos por partes:

Formatear y evitar celdas defectuosas

  1. Identifica el dispositivo
  2. Conecta el pendrive y ejecuta:
    lsblk -l
  3. Busca el nombre del dispositivo, por ejemplo, /dev/sdd. (*)
  4. Desmonta la unidad
 (*) IMPORTANTE: Reemplaza /dev/sdd1 por la partición correspondiente) 


Escanear en busca de sectores defectuosos

Para identificar celdas dañadas vamos a usar badblocks

sudo badblocks -v /dev/sdX
Este comando generará una lista de bloques defectuosos y los marca para no usarlos más.
 

Crear una nueva tabla de particiones


Para borrar las particiones existentes y crear una nueva que evita las zonas dañadas podemos usar la aplicación gráfica gparted o para expertos del terminal fdisk o parted.

Si usas gparted, puedes ver el tamaño del disco y crear una partición más pequeña que omita el final del disco, ya que es donde suelen estar o aparecer más sectores dañados, aparte de darnos juego si surgen posteriores problemas.

Si usas la terminal, puedes especificar el inicio y final de la partición manualmente con fdisk o parted.


Formatear la nueva partición


Una vez creada la partición sana, puedes formatearla con el propio gparted o desde consola con el comando:

mkfs.vfat -F 32 /dev/sdd1 
Con este comando usaríamos vfat que nos da compatibilidad con la gente que todavía usa Windows.

 

Cosas a tener en cuenta

Aunque usemos un formateo completo (no rápido) no siempre es garantía de que todo está bien aunque puede ayudar a identificar y marcar sectores defectuosos, imagina que el pendrive es un jersey con un hilo que cuelga, podemos cortar el hilo para evitar que siga deshilachándose pero el mal ya está hecho y terminarán apareciendo más sectores defectuosos.

Si los sectores dañados están dispersos, este procedimiento puede no ser tan efectivo.

A lo mejor el coste del pendrive no justifica el esfuerzo, pero esto puede cambiar rápidamente si sigue subiendo el precio de la memoria por culpa de esa IA puchi devoradora de recursos. 

Es una solución mientras esperamos a que reviente la burbuja. 

viernes, 19 de diciembre de 2025

Instalando Wine con características avanzadas en Debian

Hasta ahora me había bastado con instalar el paquete wine para ejecutar el poco software de Windows que todavía necesito, muy poca cosa la verdad, hasta que me tropezado con Bricklink StudIO, que ya expliqué como instalarlo en GNU/Linux. 

Lo paradójico es que se trata de un programa que es un producto derivado de Blender, por tanto debería ser software libre y compilarlo nativo para GNU/Linux debería ser bastante trivial, pero como es un freeware privativo y a sus creadores no les da la gana pues hay que tragar la versión de Windows.

Bueno, a lo que vamos, para instalar wine para que sea lo más versátil posible hay que seguir una serie de pasos:

  1. Editamos el archivo /etc/apt/sources.list añadiendo después de cada línea las palabras "contrib" y "non-free" si no las tiene, ¡ojo! si tiene non-free-firmware también debe tener non-free, lo podemos editar con cualquier editor como root, por ejemplo:
    sudo nano /etc/apt/sources.list
    Al final del artículo pondré un ejemplo del contenido de este archivo.

  2.  Añadimos soporte a la arquitectura de 32 bits, para los programas antiguos:
    sudo dpkg --add-architecture i386
     
  3. Actualizamos el índice de software disponible:
    sudo apt-get update

  4. Instalamos primero la versión de 32 bits.
    sudo apt install wine32

  5. Instalamos el resto de versiones (si alguna no está disponible, no pasa nada):
    sudo apt install wine
    sudo apt install wine-stable
    sudo apt install wine64

  6. Instalamos la poderosa herramienta winetrick para gestionar wine:
    sudo apt install winetricks

  7. Con esta herramienta podemos instalar librerías Windows que necesitemos para determinados programas, por ejemplo, en el caso de Stud.IO tuvimos que hacer:
    winetricks dotnet48 vcrun2019 corefonts

  8. Otro truco para sacar más partido a wine es teclear wine y pulsar dos veces la tecla TAB, con lo que nos saldrá todos los comandos disponibles.

  9. Uno muy interesante es winecfg que nos permite elegir la versión de Windows a imitar, librerías DLL a sustituir por nativas, etc...


  10. También podemos asignar unidades a diversas rutas, una buena práctica de seguridad es quitar las que trae por defecto y poner en su lugar otra creada por nosotros.


  11. ¿Necesitas más rendimiento? Prueba con las siguientes opciones:
    1. Integración de escritorio > Tema > Ningún tema.
      Igual que en los Windows reales desactivar el servicio "temas" aumenta considerablemente el rendimiento, a cambio de ver las ventanas con un aspecto más antiguo.
    2. Gráficos > Configuración de las ventanas (más agresivo).
      Desactivando todas las opciones puede que consigas más rendimientos, aunque quitar las opciones para permitir que el gestor de ventanas decore y sobre todo controle las ventanas puede hacer más incómoda la interacción con las aplicaciones nativas. 
  12. Hay otras opciones avanzadas que no conozco porque aún no las he necesitado, si fuera así las añadiré a este artículo.

Hay otras opciones con lanzadores y paqueterías modernas, pero personalmente no me gustan porque las veo de funcionamiento oscuro, con requerimientos de hardware exagerados y complicada interoperatividad con otros programas.

Quien tenga curiosidad puede explorar esos caminos.

viernes, 7 de noviembre de 2025

Accesos directos en el menú de MATE con categorías y subcategorias (niveles ilimitados)

Este artículo trata sobre algo que tenía ganas de hacer y que es muy difícil encontrar información: tener accesos directos en menús en categorías y subcategorías nuevas y distintas a las que ya tienes en el sistema. Vamos a verlo paso a paso.

Antes de continuar, recomiendo tener activado etckeeper por si nos equivocamos en la creación de la estructura de accesos directos y categorías, aunque en todo caso se pueden borrar los archivos que relacionan accesos directos y categorías.
 

1. Crear un acceso directo

Hace tiempo expliqué como crear un archivo .desktop para crear un acceso directo, en este caso, como queremos que sea un acceso en el menú del sistema, debemos crearlo en la carpeta /usr/share/applications, por poner un ejemplo muy simple, podríamos crear un archivo caprice32.desktop para crear un acceso directo al emulador Caprice32 con este contenido:

[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Caprice 32 (Amstrad CPC)
Name[es]=Caprice 32 (Amstrad CPC)
Comment=Amstrad CPC/CPC+ Emulator
Comment[es]=Emulador de Amstrad CPC/CPC+
Icon=caprice32cp
Exec=./cap32
Path=/opt/linuxemus/caprice32
Terminal=false
Categories=Games;

En este ejemplo, definimos:

  1. Las dos primeras líneas definen que el tipo de acceso es para ejecutar una aplicación (Type=Application) y la codificaciones de caracteres, unicode (UTF-8) para representar acentos, por ejemplo. 
  2. El nombre del acceso directo (Name).
  3. La descripción que se mostrará al situar el ratón sobre el mismo (Comment).
  4. El nombre del icono, que en este caso debería estar creado en la ruta absoluta /usr/share/pixmaps/cap32.png (el formato de imagen recomendado es png).
  5. El comando a ejecutar, si se va a ejecutar en una ruta concreta debe ir precedido por ./ mientras que si se puede ejecutar en cualquier directorio sería simplemente:
    Exec=cap32
  6. La ruta desde la que se va a ejecutar el comando, en este caso /opt/linuxemus/caprice32, si es un comando que se puede ejecutar desde cualquier ruta no ponemos una línea que empieza por Path=
  7. Terminal, indica si se va a abrir una terminal para ejecutar el programa o no, es útil, cuando vamos a ejecutar programas que se muestran en consola.
  8. La categoría en la que va a estar el programa (Categories), en este caso iría a la de juegos pero en este ejemplo habría que eliminar esta línea si solo queremos que aparezca en la categoría que vamos a crear. 
  9. Las etiquetas que terminan en [es] indican el texto alternativo para el idioma español. 

 

2. Crear una nueva categoría (de primer nivel)

Si queremos crear una nueva categoría, por Ejemplo emuladores hay que añadir tres archivos más:

  1. Un nuevo icono para la categoría, por ejemplo,  /usr/share/pixmaps/emulators.png.
  2.  El archivo que define la nueva categoría, que debe estar en la ruta /usr/share/desktop-directories, vamos a llamar al archivo emulators.directory con el siguiente contenido:
    [Desktop Entry]
    Version=1.1
    Name=Emulators
    Name[es]=Emuladores
    Comment=Emulation and retrocomputing
    Comment[es]=Emuladores y retroinformática
    Icon=emulators
    Type=Directory
  3. El archivo que indica que el acceso directo previamente creado debe estar en esta nueva categoría que debe estar en la ruta absoluta /etc/xdg/menus/applications-merged/caprice32cp.menu con el siguiente contenido.
    <!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
        "http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
    <Menu>
        <Name>Applications</Name>
        <Menu>
             <Menu>
               <Name>Amstrad</Name>
               <Directory>amstrad.directory</Directory>
               <Include>
                 <Filename>caprice32cp.desktop</Filename>
               </Include>
             </Menu>
        </Menu>

 Y con esto ya tendríamos el acceso directo en nuestra nueva categoría emuladores.

Repetimos todo el proceso para todos nuestros emuladores, creando sus accesos directos y creando nuevos archivos para relacionarlos con la categoría, que deben ser exactamente iguales, salvo por la línea que empieza por <Filename> 

 

3. Crear más profundidad de categorías

Bueno, pues ya hemos creado accesos directo para las 3 docenas de emuladores que tenemos instalados, pero el menú se hace muy largo y desorganizado, ¿no podríamos crear subcategorías para cada tipo de emulador?

Pues sí, para ello solo tenemos que crear un nuevo acceso directo y un nuevo archivo de definición de categoría como hemos visto en el punto anterior, en las rutas:

  • /usr/share/pixmaps/amstrad.png
  • /usr/share/desktop-categories/amstrad.png

El archivo que va a tener que cambiar algo con respecto al anterior caso va a ser el de relaciona el acceso directo con la categoría ya que debe definir que dentro de la categoría Emuladores debe haber una categoría Amstrad y dentro de ella el acceso directo al emulador, de forma que el archivo /etc/xdg/menus/applications-merged/caprice32cp.menu ahora quedaría así:

 <Menu>
    <Name>Applications</Name>
    <Menu>
         <Name>Emulators</Name>
         <Directory>emulators.directory</Directory>
         <Menu>
           <Name>Amstrad</Name>
           <Directory>amstrad.directory</Directory>
           <Include>
             <Filename>caprice32cp.desktop</Filename>
           </Include>
         </Menu>
     </Menu>
</Menu>

El resto de emuladores de Amstrad deben tener un archivo igual para relacionar las categorías y el acceso directo que solo van a cambiar en el nombre del archivo y en la referencia a su acceso directo en la línea <FILENAME>

Igualmente podríamos crear más subcategorías para el resto de sistemas, que diferirían con ésta de Amstrad también en las dos líneas que definen la subcategoría y que deben ser iguales en las del mismo sistema para no duplicar subcategorías.

Este truco debe funcionar en la mayoría de entornos gráficos de GNU/Linux. 

viernes, 17 de octubre de 2025

Controla tus cambios de configuración con etckeeper

etckeeper es una herramienta para controlar todos los cambios de configuración que hagas haciendo uso de git, de manera que si te equivocas al hacer una configuración vas a saber que has cambiado y hasta volver atrás.

Para que sea efectiva lo ideal es instalarla justo al completar la instalación del sistema operativo junto al propio git, en el caso de Debian y derivadas lo podrías hacer con un comando como éste:

sudo apt install git etckeeper

A partir de este momento la carpeta /etc estará controlada por git, de manera que cuando hagas ciertos cambios como instalar paquetes se van a crear commits registrando la operación.

Hay que tener en cuenta que dichos cambios se registran con permisos para root, por lo que tenemos que hacer las operaciones con ese usuario, ya sea con sudo o su-

Si queremos ver los cambios que se han ido haciendo:

sudo git log

Si hacemos cambios manuales y queremos registrarlos:

sudo git add .
sudo git commit -m "Descripción de los cambios en la configuración."

Si queremos renombrar el último commit:

sudo git commit --amend

Por lo demás podemos tener el mismo control que en cualquier otra carpeta con código gestionada por git.


viernes, 26 de septiembre de 2025

Denise, emulador de Commodore 64 y Amiga

Denise, es un interesante emulador de ordenadores Commodore, en concreto del C64 y el Commodore Amiga.


Podéis instalarlo con RetroMultiInstaller, que ahora os creará el acceso directo en el menú en una nueva subcategoría Commodore dentro de la categoría Emuladores, aunque la instalación manual es tan sencilla como bajarse el último deb de su página oficial e instalarlo con dos comandos:

sudo apt install deniseXXX.deb
sudo apt install -f

Nada más iniciar el emulador os vais a encontrar un problema si no domináis el alemán, ya que los menús en principio aparecen en ese idioma, para cambiar el idioma, castellano en nuestro caso, vamos a las siguientes opciones:

Optionen ►  Einstellungen ► Sprache ► Spanisch

E instantáneamente aparecerán los menús en nuestro idioma.

En los menús tenemos opciones para el C64 y el Amiga, si le damos a reiniciar en el item correspondiente de cada uno de estas opciones arrancará una máquina u otra, ojo, el Commodore no necesita configuraciones ni archivos extra, mientras que si no configuramos el Amiga nos arrancará la distribución Aros.


En el modo Amiga si haces clic dentro de la pantalla captura el ratón, que puedes recuperar haciendo clic con el botón central (la rueda). 

Navega por los menús del emulador para descubrir todas sus posibilidades.




viernes, 5 de septiembre de 2025

Instala todas las herramientas TENTE 3D con RetroMultiInstaller

A finales del mes pasado le di un buen repaso a RetroMultiInstaller para ampliar las aplicaciones para crear, ver y renderizar modelos de TENTE 3D.

Como podéis ver en esa captura, hay 16 aplicaciones relacionadas con el uso de TENTE 3D con el formato abierto LDraw que se podrían agrupar así:

  1. Editores:
    1. MLCad: editor recomendado, es para Windows pero funciona perfecto con WINE.
    2. LeoCAD: editor nativo. 
    3. LDCad: editor nativo.
  2. Visores:
    1. LDView: Visor nativo muy sencillo pero potente.
  3. Renderizadores: para obtener una mejor calidad que con los visores tradicionales:
    1. StudIO: herramienta multiuso de LEGO, a nosotros nos va a interesar más como renderizador.
    2. Blender: con un addon para añadir modelos LDraw, es una poderosa herramienta para hacer transformaciones y renderizar.
    3. Povray: renderizador de rayos.
  4. Generadores.
    1. Generador de proas.
    2. Generador de tubos.
  5. Conversores:
    1. STL2DAT.
    2. SVG2LDraw.
  6. Animación:
    1.  LD4DStudio: herramienta de animación.
    2. Stopmotion for TENTE 3D.
  7. Utilidades varias:
    1. BMP2LDraw: convierte archivo BMP en etiquetas en formato LDraw, es conveniente darle algún tratamiento previo a la imagen con GIMP para obtener óptimos resultados.
    2. LDDesignPad: editor de texto para el formato LDraw, para cambiar a mano elementos de modelos y fichas.
    3. LPartEditor: editor de piezas.

Todas estas herramientas están preconfiguradas para usar directamente el juego de fichas de TENTE, y en la mayoría de los casos también con el de LEGO o el de Exin Castillos.


Os dejo un vídeo con la instalación sencilla de RetroMultiInstaller, ni siquiera hay que entrar en la consola de GNU/Linux.


 

Si encontráis alguna deficiencia o tenéis más piezas para añadir podéis poner un comentario en la sección de issues de cada repositorio.

viernes, 29 de agosto de 2025

Montar automáticamente un disco duro interno auxiliar sin usar fstab

Cuando arranco Debian 12 Mate me monta automáticamente las particiones de la unidad SSD (sda) pero NO monta la partición del disco duro donde almaceno varios datos (sdb1) sino que necesito hacer clic en Lugares y la etiqueta de la partición o acceder a Caja (el "explorador de archivos" de MATE) y abrir la partición.

Lógicamente puedo añadir una nueva entrada en fstab y montar donde quiera mi disco duro pero, ¿no podría simplemente simular que hago clic en las opciones de montaje manual sin instalar nada más que lo que ya trae el sistema.

Pues sí se puede hacer, el comando en concreto es el siguiente:

udisksctl mount --block-device /dev/sdb1

Si queremos podemos poner el comando en el script de opciones de inicio y así se montará automáticamente la partición al iniciar el sistema.

Para ello podemos añadir gráficamente el comando mediante las opciones de menu:

Sistema ► Preferencias ► Personal ► Aplicaciones al inicio

Pulsamos el botón Añadir y le ponemos un nombre indicativo que lo que hace y en el campo comando el comando completo que deseamos ejecutar.


En este caso el comando a ejecutar es:

udisksctl mount --block-device /dev/sdb1

Esto hará que el disco se monte se monte en la ruta:

mi_etiqueta_de_disco

Donde mi_usuario es el usuario con el que trabajamos y mi_etiqueta_de_disco la etiqueta del disco que estamos usando.

Un problema es que como esta ruta pertenece en principio a root no nos va a funcionar la papelera ni crear carpetas en el raiz del disco externo, para solucionarlo simplemente otorgamos la propiedad a mi usuario:

sudo chown mi_usuario mi_etiqueta_de_disco

Si tuviéramos problemas para borrar alguna carpeta también deberíamos comprobar si esa carpeta es propiedad de mi usuario o de root. 

Si no quieres que te pida contraseña cada vez que inicie el sistema para montar la partición recuerda que puedes configurar para que no te pida nunca más.

viernes, 22 de agosto de 2025

¿Que hago después de instalar Debian 13?

Por si alguien no se ha enterado aún, el pasado 9 de agosto salió Debian 13 estable, así que estoy actualizando los equipos como siempre de menos a más críticos.

Por ahora, he actualizado mi viejo portátil de Debian 12 a 13 y he instalado de cero en mi segunda torre, un viejo DELL Inspirion 3847 i3 así digo adiós al último Ubuntu que todavía tenía instalado, un obsoleto 20.04 que ya olía. Para ello me he creado un pendrive con Ventoy.

Nos vamos a centrar en la instalación limpia en este último equipo, después de la cual he hecho las siguientes operaciones:

  1. Como recomendé en el anterior artículo, instalo git y etckeeper para tener un control de los cambios que vaya haciendo en las configuraciones.
    sudo apt install git etckeeper
  2. Actualizo el sistema:
    sudo apt update
    sudo apt upgrade
  3. Descargo RetroMultiInstaller y lo ejecuto para facilitar la instalación desatendida de buena parte de mis programas fundamentales:
    cd $HOME
    mkdir opt
    cd opt
    git clone https://gitlab.com/cpcbegin/retromultiinstaller
    cd retromultinstaller
    ./retroinstaller.sh
  4. Nos vamos a la instalación desatendida mediante las opciones:
    Update > Multiinstall
  5. Seleccionamos los programas que vamos a instalar y pulsamos aceptar
  6. Instalo los paquetes que no están en los menús de RMI por estar en los repositorios oficiales y no presentar dificultades en su puesta en marcha:
    sudo apt install usbutils mc dosbox jedit okular audacity vlc blockattack keepassxc-full pdfarranger

 

Otras opciones

Aquí tenéis enlaces de como hacer diversas configuraciones a vuestra discreción en función de como quieras usar el sistema, bajo que circunstancias y para qué:

  • Montar disco auxiliar sin introducir una contraseña, por ejemplo, al hacer clic en un disco duro interno de gran capacidad donde tenemos nuestros archivos.
  • Automontaje:  también nos puede interesar que el disco interno auxiliar sea accesible aunque no hayamos hecho clic en él.
  • Autologin: solo en equipos que no tengan archivos ni datos sensibles y vayan a ser usados por un solo perfil.
     

Por supuesto, esto es solo una guía de lo que puedes hacer después de instalar Debian 13, puedes instalar y configurar lo que te guste y/o necesites.