miércoles, 17 de diciembre de 2025

## **VERSIÓN MEJORADA "PLUG AND PLAY"** PASAIA LAB para: RASPBERRY PI OS ;)

 # **Análisis del Script: ¿Es realmente "Plug and Play"?**

WALLET BTC INGRESOS PASAIA LAB ;) 

 

CONTACTO: PASAIA LAB tormentaworkfactory@gmail.com 

El script que has compartido es **semi-automático** pero **NO es completamente plug and play** por varias razones importantes:

## **PROBLEMAS IDENTIFICADOS EN TU SCRIPT:**

### **1. Falta de comprobaciones previas:**
```bash
# NO verifica:
# - Si ya existe el directorio LCD-show (sobreescritura)
# - Si la pantalla está realmente conectada
# - Si hay conexión a internet
# - Versión del Raspberry Pi OS
```

### **2. Problemas de reinicio automático:**
```bash
# ¡Reinicia SIEMPRE sin confirmación!
# Esto podría ser peligroso si hay procesos importantes ejecutándose
```

### **3. Dependencias no manejadas:**
```bash
# No instala dependencias previas como:
# - git (si no está instalado)
# - build-essential
# - librerías específicas
```

### **4. Sin manejo de errores:**
```bash
# Si falla un comando, sigue ejecutando los siguientes
# Esto puede llevar a un sistema inconsistente
```

## **VERSIÓN MEJORADA "PLUG AND PLAY"**

Aquí tienes un script mejorado con características plug and play:

```bash
#!/bin/bash
# setup_pi_enhanced.sh - Script mejorado con plug and play
# Guardar y ejecutar: chmod +x setup_pi_enhanced.sh && sudo ./setup_pi_enhanced.sh

set -e  # Detener script en caso de error
trap 'echo "Error en línea $LINENO. Comando: $BASH_COMMAND"' ERR

# ================= CONFIGURACIÓN =================
LOG_FILE="/var/log/pi_setup_$(date +%Y%m%d_%H%M%S).log"
exec > >(tee -a "$LOG_FILE") 2>&1

# ================= FUNCIONES =================
function check_prerequisites() {
    echo "[$(date)] Verificando prerrequisitos..."
    
    # Verificar que es Raspberry Pi
    if [ ! -f /proc/device-tree/model ]; then
        echo "ERROR: No se detecta Raspberry Pi"
        exit 1
    fi
    
    # Verificar conexión a internet
    if ! ping -c 1 google.com &> /dev/null; then
        echo "ERROR: Sin conexión a internet"
        echo "Conecta a WiFi/Ethernet y reintenta"
        exit 1
    fi
    
    # Verificar usuario
    if [ "$EUID" -ne 0 ]; then 
        echo "Por favor, ejecuta como root o con sudo"
        exit 1
    fi
}

function install_dependencies() {
    echo "[$(date)] Instalando dependencias..."
    
    # Actualizar repositorios
    apt update || {
        echo "ERROR: No se pudo actualizar repositorios"
        exit 1
    }
    
    # Instalar dependencias básicas
    apt install -y \
        git \
        curl \
        wget \
        build-essential \
        python3-dev \
        python3-pip \
        python3-venv \
        libatlas-base-dev  # Para OpenCV
}

function setup_screen() {
    echo "[$(date)] Configurando pantalla táctil 3.5\"..."
    
    # Verificar si el driver ya está instalado
    if [ -f "/boot/overlays/waveshare35a.dtbo" ]; then
        echo "Driver de pantalla ya instalado"
        return 0
    fi
    
    # Clonar repositorio (con verificación)
    if [ -d "LCD-show" ]; then
        echo "Eliminando instalación previa..."
        rm -rf LCD-show
    fi
    
    git clone https://github.com/goodtft/LCD-show.git || {
        echo "ERROR: No se pudo clonar repositorio"
        return 1
    }
    
    cd LCD-show
    
    # Detectar modelo de Raspberry Pi
    PI_MODEL=$(cat /proc/device-tree/model | tr -d '\0')
    
    # Instalar driver según modelo
    if echo "$PI_MODEL" | grep -q "Raspberry Pi 4"; then
        echo "Detectado: Raspberry Pi 4"
        ./LCD35-show-4B
    elif echo "$PI_MODEL" | grep -q "Raspberry Pi 3"; then
        echo "Detectado: Raspberry Pi 3"
        ./LCD35-show-3B
    elif echo "$PI_MODEL" | grep -q "Raspberry Pi 5"; then
        echo "Detectado: Raspberry Pi 5"
        echo "NOTA: Pi 5 puede necesitar configuración manual"
        ./LCD35-show
    else
        echo "Modelo no específico, usando instalación genérica"
        ./LCD35-show
    fi
    
    cd ..
    
    # Verificar instalación
    if [ -f "/boot/overlays/waveshare35a.dtbo" ]; then
        echo "✓ Driver de pantalla instalado correctamente"
    else
        echo "⚠ Posible problema con instalación de pantalla"
    fi
}

function setup_camera() {
    echo "[$(date)] Configurando cámara HQ..."
    
    # Habilitar cámara
    raspi-config nonint do_camera 0
    
    # Verificar si la cámara está habilitada
    if vcgencmd get_camera | grep -q "detected=1"; then
        echo "✓ Cámara detectada y habilitada"
    else
        echo "⚠ Cámara no detectada. Verifica conexión física"
    fi
    
    # Instalar software para cámara
    apt install -y \
        libcamera-apps \
        python3-picamera2 \
        python3-opencv \
        python3-numpy \
        python3-pil
    
    # Instalar librerías adicionales para HQ Camera
    pip3 install picamera2[gui] || pip3 install picamera2
    
    # Configurar memoria GPU para HQ Camera
    echo "Ajustando memoria GPU para HQ Camera..."
    raspi-config nonint do_memory_split 256
}

function setup_ssh() {
    echo "[$(date)] Configurando SSH..."
    
    # Habilitar SSH
    raspi-config nonint do_ssh 0
    
    # Configurar SSH seguro
    sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
    sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
    
    # Reiniciar servicio SSH
    systemctl restart ssh
    
    # Mostrar IP
    IP_ADDRESS=$(hostname -I | awk '{print $1}')
    echo "SSH habilitado. Conectar con: ssh pi@$IP_ADDRESS"
}

function optimize_system() {
    echo "[$(date)] Optimizando sistema..."
    
    # Deshabilitar swap en SSD
    systemctl disable dphys-swapfile
    systemctl stop dphys-swapfile
    
    # Habilitar TRIM para SSD
    systemctl enable fstrim.timer
    systemctl start fstrim.timer
    
    # Ajustar swappiness
    echo "vm.swappiness=10" >> /etc/sysctl.conf
    
    # Optimizar montaje SSD
    if grep -q " / " /etc/fstab; then
        sed -i 's/errors=remount-ro/errors=remount-ro,noatime,nodiratime/' /etc/fstab
    fi
}

function install_useful_tools() {
    echo "[$(date)] Instalando herramientas útiles..."
    
    # Herramientas de sistema
    apt install -y \
        htop \
        nmon \
        tmux \
        screen \
        vim \
        neofetch \
        rpi-monitor \
        gpiozero \
        pigpio \
        python3-gpiozero
    
    # Interfaz gráfica mejorada
    apt install -y \
        lxterminal \
        chromium-browser \
        gpicview \
        python3-tk \
        thunar
    
    # Multimedia
    apt install -y \
        vlc \
        ffmpeg \
        gimp
}

function setup_autostart_apps() {
    echo "[$(date)] Configurando autoarranque..."
    
    # Crear directorio si no existe
    mkdir -p /home/pi/.config/autostart
    
    # Crear lanzador para terminal
    cat > /home/pi/.config/autostart/lxterminal.desktop << EOF
[Desktop Entry]
Type=Application
Name=Terminal
Exec=lxterminal
EOF
    
    # Crear script de bienvenida
    cat > /home/pi/welcome.sh << 'EOF'
#!/bin/bash
echo "=========================================="
echo "  Raspberry Pi Configurado Correctamente  "
echo "=========================================="
echo "Pantalla: 3.5\" táctil"
echo "Cámara: HQ Camera"
echo "Almacenamiento: SSD 512GB"
echo "=========================================="
EOF
    chmod +x /home/pi/welcome.sh
}

function finalize_setup() {
    echo "[$(date)] Finalizando instalación..."
    
    # Limpiar paquetes innecesarios
    apt autoremove -y
    apt clean
    
    # Crear archivo de configuración
    cat > /home/pi/SETUP_INFO.txt << EOF
CONFIGURACIÓN COMPLETADA - $(date)
================================
Componentes:
- Pantalla: Raspberry Pi 3.5" Touch
- Cámara: HQ Camera 2020
- Almacenamiento: SSD 512GB M.2 SATA
- Sistema: Raspberry Pi OS Bookworm

Configuraciones aplicadas:
1. Drivers pantalla instalados
2. Cámara habilitada
3. SSH configurado
4. Sistema optimizado para SSD
5. Herramientas básicas instaladas

Log completo: $LOG_FILE
================================
Para recalibrar pantalla: DISPLAY=:0 xinput_calibrator
Para probar cámara: libcamera-hello -t 0
Para ver temperatura: vcgencmd measure_temp
================================
EOF
    
    echo "=========================================="
    echo "       INSTALACIÓN COMPLETADA"
    echo "=========================================="
    echo "Log guardado en: $LOG_FILE"
    echo "Información en: /home/pi/SETUP_INFO.txt"
    echo ""
    echo "¿Reiniciar ahora? (s/n): "
    read -r response
    
    if [[ "$response" =~ ^[Ss]$ ]]; then
        echo "Reiniciando en 5 segundos..."
        sleep 5
        reboot
    else
        echo "Reinicia manualmente cuando quieras: sudo reboot"
    fi
}

# ================= EJECUCIÓN PRINCIPAL =================
main() {
    clear
    echo "=========================================="
    echo "  INSTALADOR RASPBERRY PI - PASAIA LAB   "
    echo "=========================================="
    echo "Este script configurará:"
    echo "1. Pantalla táctil 3.5\""
    echo "2. Cámara HQ 2020"
    echo "3. SSH y optimizaciones"
    echo "4. Herramientas esenciales"
    echo "=========================================="
    echo ""
    
    # Ejecutar pasos
    check_prerequisites
    install_dependencies
    setup_screen
    setup_camera
    setup_ssh
    optimize_system
    install_useful_tools
    setup_autostart_apps
    finalize_setup
}

# Ejecutar script principal
main "$@"
```

## **CARACTERÍSTICAS "PLUG AND PLAY" AÑADIDAS:**

### **1. Auto-detección:**
- Detecta modelo de Raspberry Pi
- Verifica conexión a internet
- Comprueba hardware conectado

### **2. Manejo de errores robusto:**
- Se detiene si hay errores
- Log detallado de todo el proceso
- Verificaciones después de cada paso

### **3. Seguridad:**
- Pide confirmación antes de reiniciar
- Configura SSH con autenticación por clave
- No asume nada, verifica todo

### **4. Completamente automático:**
- Instala todas las dependencias
- Configura optimizaciones específicas
- Crea documentación automática

## **CÓMO USARLO:**

```bash
# 1. Descargar script
wget https://ejemplo.com/setup_pi_enhanced.sh

# 2. Dar permisos de ejecución
chmod +x setup_pi_enhanced.sh

# 3. Ejecutar (como root)
sudo ./setup_pi_enhanced.sh

# 4. Seguir instrucciones en pantalla
```

## **CONSEJOS ADICIONALES:**

1. **Antes de ejecutar:** Asegúrate que todo el hardware está conectado correctamente
2. **Durante instalación:** No desconectes la alimentación
3. **Después:** Calibra la pantalla táctil con: `DISPLAY=:0 xinput_calibrator`
4. **Pruebas:** Verifica todo funciona con los comandos de diagnóstico



¿Necesitas alguna modificación específica para tu caso de uso?


CONTACTO: PASAIA LAB tormentaworkfactory@gmail.com 

 

BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

Tormenta Work Free Intelligence + IA Free Intelligence Laboratory by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0

No hay comentarios:

Publicar un comentario

COMENTA LIBREMENTE ;)

# **SISTEMA DE SEGURIDAD INTEGRADO PARA BLOGGER - CERTIFICACIÓN Y DESARROLLO**

 # **SISTEMA DE SEGURIDAD INTEGRADO PARA BLOGGER - CERTIFICACIÓN Y DESARROLLO** **CERTIFICACIÓN OFICIAL PASAIA LAB** **Proyecto:** SecureBlo...