#!/bin/bash # Script para verificar la estructura EFI de OpenCore # Uso: chmod +x verify-efi.sh && ./verify-efi.sh /ruta/a/EFI # Colores GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # Ruta EFI (primer argumento o actual) EFI_PATH="${1:-./EFI}" echo -e "${BLUE}=================================${NC}" echo -e "${BLUE}Verificador de EFI OpenCore${NC}" echo -e "${BLUE}=================================${NC}" echo "" echo -e "Verificando: ${YELLOW}$EFI_PATH${NC}" echo "" # Contador de errores ERRORS=0 WARNINGS=0 # Función para verificar archivo check_file() { local file=$1 local required=$2 if [ -f "$file" ]; then echo -e "${GREEN}[✓]${NC} $file" return 0 elif [ "$required" = "required" ]; then echo -e "${RED}[✗]${NC} $file ${RED}(FALTANTE)${NC}" ((ERRORS++)) return 1 else echo -e "${YELLOW}[!]${NC} $file (opcional, no presente)" ((WARNINGS++)) return 1 fi } # Función para verificar directorio check_dir() { local dir=$1 if [ -d "$dir" ]; then echo -e "${GREEN}[✓]${NC} $dir" return 0 else echo -e "${RED}[✗]${NC} $dir ${RED}(FALTANTE)${NC}" ((ERRORS++)) return 1 fi } # Verificar estructura base echo -e "${BLUE}Estructura de Directorios:${NC}" echo "" check_dir "$EFI_PATH/BOOT" check_dir "$EFI_PATH/OC" check_dir "$EFI_PATH/OC/ACPI" check_dir "$EFI_PATH/OC/Kexts" check_dir "$EFI_PATH/OC/Drivers" check_dir "$EFI_PATH/OC/Tools" echo "" echo -e "${BLUE}Archivos Bootloader:${NC}" echo "" check_file "$EFI_PATH/BOOT/BOOTx64.efi" "required" check_file "$EFI_PATH/OC/OpenCore.efi" "required" check_file "$EFI_PATH/OC/config.plist" "required" echo "" echo -e "${BLUE}Drivers:${NC}" echo "" check_file "$EFI_PATH/OC/Drivers/OpenRuntime.efi" "required" check_file "$EFI_PATH/OC/Drivers/OpenCanopy.efi" "optional" check_file "$EFI_PATH/OC/Drivers/HfsPlus.efi" "optional" echo "" echo -e "${BLUE}Kexts Requeridos:${NC}" echo "" check_file "$EFI_PATH/OC/Kexts/Lilu.kext" "required" check_file "$EFI_PATH/OC/Kexts/VirtualSMC.kext" "required" check_file "$EFI_PATH/OC/Kexts/WhateverGreen.kext" "required" check_file "$EFI_PATH/OC/Kexts/AppleALC.kext" "required" check_file "$EFI_PATH/OC/Kexts/VoodooPS2Controller.kext" "required" echo "" echo -e "${BLUE}Kexts de Red:${NC}" echo "" check_file "$EFI_PATH/OC/Kexts/AppleIGC.kext" "required" check_file "$EFI_PATH/OC/Kexts/AirportItlwm.kext" "optional" check_file "$EFI_PATH/OC/Kexts/itlwm.kext" "optional" check_file "$EFI_PATH/OC/Kexts/IntelBluetoothFirmware.kext" "optional" check_file "$EFI_PATH/OC/Kexts/IntelBTPatcher.kext" "optional" echo "" echo -e "${BLUE}Plugins VirtualSMC:${NC}" echo "" check_file "$EFI_PATH/OC/Kexts/SMCProcessor.kext" "required" check_file "$EFI_PATH/OC/Kexts/SMCSuperIO.kext" "optional" echo "" echo -e "${BLUE}Archivos ACPI:${NC}" echo "" check_file "$EFI_PATH/OC/ACPI/SSDT-EC.aml" "required" check_file "$EFI_PATH/OC/ACPI/SSDT-PLUG.aml" "required" check_file "$EFI_PATH/OC/ACPI/SSDT-PMC.aml" "optional" check_file "$EFI_PATH/OC/ACPI/SSDT-PM.aml" "optional" echo "" echo -e "${BLUE}Herramientas:${NC}" echo "" check_file "$EFI_PATH/OC/Tools/Haciend.efi" "optional" echo "" echo -e "${BLUE}=================================${NC}" echo -e "${BLUE}Validación config.plist${NC}" echo -e "${BLUE}=================================${NC}" echo "" # Verificar config.plist con plutil si está disponible if command -v plutil &> /dev/null; then if plutil -lint "$EFI_PATH/OC/config.plist" &> /dev/null; then echo -e "${GREEN}[✓]${NC} config.plist es válido" else echo -e "${RED}[✗]${NC} config.plist tiene errores" ((ERRORS++)) plutil -lint "$EFI_PATH/OC/config.plist" fi else echo -e "${YELLOW}[!]${NC} plutil no disponible (usar en Mac)" fi echo "" echo -e "${BLUE}=================================${NC}" echo -e "${BLUE}Resumen${NC}" echo -e "${BLUE}=================================${NC}" echo "" if [ $ERRORS -eq 0 ]; then echo -e "${GREEN}¡EFI está completo!${NC}" echo -e "${GREEN}Errores: $ERRORS${NC}" echo -e "${YELLOW}Advertencias: $WARNINGS${NC}" echo "" echo "Puedes proceder con la instalación." exit 0 else echo -e "${RED}¡EFI tiene problemas!${NC}" echo -e "${RED}Errores: $ERRORS${NC}" echo -e "${YELLOW}Advertencias: $WARNINGS${NC}" echo "" echo "Por favor corrige los errores antes de continuar." exit 1 fi