Nucleo propio: oye con whisper.cpp, piensa con un modelo de Ollama, habla con Piper, y hace RAG sobre los apuntes del usuario. 100% local, sin cuentas ni claves. Escrito bajo una restriccion dura, 4 GB de VRAM: el cerebro y whisper comparten tarjeta y solo caben porque estan dimensionados para ello. El RAG usa embeddings estaticos con busqueda hibrida; la voz clonada se sirve de una cache de frases. Incluye instalador (install.sh), requisitos, y documentacion del stack, del manejo de root y de las acciones. Los apuntes indexados y el diario NO se incluyen: son privados y el .gitignore los bloquea.
53 lines
2 KiB
Bash
53 lines
2 KiB
Bash
#!/usr/bin/env bash
|
|
# Amplia la swap en caliente, sin reiniciar y sin tocar particiones.
|
|
#
|
|
# Por que: el portatil tiene 62 GB de RAM y 976 MiB de swap en la particion
|
|
# nvme0n1p3. Ese reparto es de una maquina con 2 GB de RAM, no con 62. La swap
|
|
# se llena (96% medido) y aunque hoy no cause nada —comprobado: si=4 so=0 KB/s,
|
|
# 43 GB de RAM disponible, ninguna fuga— no queda colchon para cuando algo pida
|
|
# memoria de golpe.
|
|
#
|
|
# Lo que NO arregla: nada de lo que se notaba. La pantalla que pedia contraseña
|
|
# era el candado de JARVIS, no el sistema. Esto es higiene, no una reparacion.
|
|
#
|
|
# Se ejecuta con sudo y no hace falta reiniciar: `swapon` activa el fichero al
|
|
# momento y la linea del fstab solo sirve para el proximo arranque.
|
|
#
|
|
# sudo bash ampliar_swap.sh [tamaño] # por defecto 16G
|
|
set -euo pipefail
|
|
|
|
TAM=${1:-16G}
|
|
FICHERO=/swapfile
|
|
|
|
[ "$(id -u)" -eq 0 ] || { echo "hay que ejecutarlo con sudo" >&2; exit 1; }
|
|
|
|
if swapon --show=NAME --noheadings 2>/dev/null | grep -qx "$FICHERO"; then
|
|
echo "$FICHERO ya esta activo; nada que hacer."
|
|
swapon --show
|
|
exit 0
|
|
fi
|
|
|
|
echo "1. creando $FICHERO de $TAM"
|
|
# fallocate va bien en ext4; en btrfs haria falta otra receta (chattr +C y
|
|
# sin compresion), pero la raiz de esta maquina es ext4.
|
|
fallocate -l "$TAM" "$FICHERO" 2>/dev/null || dd if=/dev/zero of="$FICHERO" bs=1M count=$((${TAM%G} * 1024)) status=none
|
|
chmod 600 "$FICHERO" # solo root: si no, mkswap se niega y con razon
|
|
|
|
echo "2. formateando"
|
|
mkswap "$FICHERO" >/dev/null
|
|
|
|
echo "3. activando (aqui ya esta funcionando, sin reiniciar)"
|
|
swapon "$FICHERO"
|
|
|
|
echo "4. dejandolo puesto para el proximo arranque"
|
|
grep -q "^$FICHERO " /etc/fstab || echo "$FICHERO none swap sw 0 0" >> /etc/fstab
|
|
|
|
# Con 62 GB de RAM no tiene sentido apartar paginas al disco con la alegria de
|
|
# swappiness=60: se baja a 10 para que la swap sea un seguro y no una costumbre.
|
|
echo "5. bajando swappiness de $(cat /proc/sys/vm/swappiness) a 10"
|
|
sysctl -q vm.swappiness=10
|
|
echo "vm.swappiness=10" > /etc/sysctl.d/99-jarvis-swappiness.conf
|
|
|
|
echo
|
|
swapon --show
|
|
free -h | head -3
|