# 02 - Crear USB Instalador macOS

## 📋 Requisitos Previos

### Hardware Necesario
- **USB Flash Drive** - Mínimo 16GB (recomendado 32GB)
- **Acceso a una Mac** o máquina virtual con macOS

### Software Necesario
- **macOS Sequoia 15.x** (o última versión disponible)
- **OClter** o **createinstallmedia** (incluido con macOS)

---

## 🍿 Paso 1: Obtener macOS

### Opción A: Desde App Store (Mac Real)

```bash
# Buscar "macOS Sequoia" en App Store
# Descargar automáticamente (15GB+)
```

### Opción B: Desde MacInTouch / Archivos

Descargar el instalador desde:
- App Store → Buscar "macOS Sequoia"
- Guardará en `/Applications/Install macOS Sequoia.app`

### Versión Recomendada
| Versión | Estado | Notas |
|---------|--------|-------|
| macOS Sequoia 15.x | ✅ Recomendado | Última versión estable |
| macOS Sonoma 14.x | ✅ Compatible | Más probado |
| macOS Ventura 13.x | ✅ Compatible | Más estable |

---

## 💾 Paso 2: Preparar USB

### Formatear USB en macOS

1. **Conectar USB** a la Mac
2. Abrir **Disk Utility** (Utilidad de Discos)
3. Seleccionar el USB (no el volumen)

```
Nombre: MyVolume
Formato: Mac OS Extended (Journaled)
Esquema: GUID Partition Map
```

4. Click en **Erase** (Borrar)

---

## 🔧 Paso 3: Crear Instalador con Terminal

### Método createinstallmedia (Oficial)

Abrir **Terminal** y ejecutar:

```bash
# Para macOS Sequoia
sudo /Applications/Install\ macOS\ Sequoia.app/Contents/Resources/createinstallmedia \
  --volume /Volumes/MyVolume \
  --nointeraction

# Para macOS Sonoma
sudo /Applications/Install\ macOS\ Sonoma.app/Contents/Resources/createinstallmedia \
  --volume /Volumes/MyVolume \
  --nointeraction
```

**Tiempo estimado**: 30-45 minutos

**Salida esperada**:
```
Install media now available
Volume name: MyVolume
...
Ready to start.
To continue, press Y and Return.
```

### Usando OClter (Alternativa)

```bash
# Descargar OClter
curl -O https://github.com/chris1111/OClter/releases/download/v1.x/OClter.tool

# Dar permisos
chmod +x OClter.tool

# Ejecutar
sudo ./OClter.tool
```

---

## 📱 Paso 4: Verificar USB

### Comprobar que el USB tenga la estructura correcta

```bash
ls -la /Volumes/MyVolume
```

**Debería contener**:
```
MyVolume/
├── System/
├── .IAProductInfo
├── .IAPhysicalMedia
├── BaseSystem.dmg
├── BaseSystem.chunklist
└── ...
```

---

## 🖥️ Paso 5: Agregar OpenCore al USB

### Descargar OpenCore

Ir a: [Acidanthera/OpenCorePkg Releases](https://github.com/acidanthera/OpenCorePkg/releases)

Descargar la última versión **stable** (ej: OpenCore-0.9.7-RELEASE.zip)

### Estructura de Carpetas

En el USB, crear la estructura EFI:

```bash
# Montar EFI del USB (si no está visible)
sudo diskutil mount diskXs1

# Crear estructura
mkdir -p /Volumes/EFI/OC/{ACPI,Kexts,Drivers,Tools}
```

### Copiar Archivos de OpenCore

Desde el ZIP descargado, copiar a `EFI/OC/`:

| Archivo | Destino |
|---------|---------|
| `OpenCore.efi` | `EFI/OC/` |
| `BOOTx64.efi` | `EFI/BOOT/` (renombrar a BOOTx64.efi) |
| `Drivers/` | `EFI/OC/Drivers/` |

**Drivers necesarios**:
```
EFI/OC/Drivers/
├── OpenRuntime.efi      (REQUIRED)
├── OpenCanopy.efi       (Opcional - para resolución de problemas)
└── HfsPlus.efi          (Opcional - si quieres leer HFS+)
```

---

## 📦 Paso 6: Descargar Kexts Esenciales

### Lista de Kexts Necesarios

```
EFI/OC/Kexts/
├── Lilu.kxt                              (Base)
├── VirtualSMC.kxt                        (Emulación SMC)
├── WhateverGreen.kxt                     (GPU)
├── AppleIGC.kxt                          (Ethernet I226-V)
├── AirportItlwm.kxt                      (Wi-Fi Intel)
├── IntelBluetoothFirmware.kxt            (Bluetooth)
├── IntelBTPatcher.kxt                    (Parche BT)
├── AppleALC.kxt                          (Audio)
├── VoodooPS2Controller.kxt               (Teclado/PS2)
├── FeatureUnlock.kxt                     (Features)
├── SMCProcessor.kxt                      (VirtualSMC plugin)
├── SMCSuperIO.kxt                        (VirtualSMC plugin)
└── Lilu.kxt                              (Base - repetido)
```

### Links de Descarga

Ver **[downloads.md](downloads.md)** para links directos a GitHub.

### Colocar los Kexts

```bash
# Copiar todos los kexts descargados a:
EFI/OC/Kexts/

# Asegurarse de que cada kext sea una carpeta con el .kext dentro
```

---

## ⚙️ Paso 7: Crear config.plist

### Usar OCAuxiliaryTools (Recomendado)

1. Descargar **OCAuxiliaryTools** desde [GitHub](https://github.com/ic005k/OCAuxiliaryTools)
2. Abrir `config.plist` que viene con OpenCore
3. Editar según tu hardware

### Configuración Mínima para este Hardware

#### ACPI
```
Add: []
Delete: []
Patch: []
Quirks:
  - FadtEnableReset: YES
  - NormalizeHeaders: YES
  - RebaseRegions: YES
  - ResetHwSig: YES
  - ResetLogoStatus: YES
```

#### Booter
```
Quirks:
  - AvoidRuntimeDefrag: YES
  - DevirtualiseMmio: NO
  - DisableSingleUser: NO
  - DisableVariableWrite: NO
  - DiscardHibernateMap: NO
  - EnableSafeModeSlide: NO
  - EnableWriteUnprotector: YES
  - ForceBooterSignature: NO
  - ForceExitBootServices: NO
  - ProtectMemoryRegions: NO
  - ProtectSecureBoot: NO
  - ProtectUefiServices: NO
  - ProvideCustomSlide: YES
  - ProvideMaxSlide: 0
  - ResizeAppleGpuBars: -1
  - RevirtualiseMmio: NO
  - SetupVirtualMap: YES
  - SignalAppleOS: NO
  - SyncRuntimePermissions: YES
```

#### DeviceProperties
```
Add: {}
Delete: {}
```

#### Kernel
```
Emulate: NO
Force: []
Kexts:
  - BundlePath: Lilu.kext
    Enabled: YES
    ExecutablePath: Contents/MacOS/Lilu
    MaxKernel: ""
    MinKernel: ""
    PlistPath: Contents/Info.plist

  - BundlePath: VirtualSMC.kext
    Enabled: YES
    ...

  # Repetir para todos los kexts
```

#### Misc
```
Boot:
  - HideAuxiliary: NO
  - LauncherOption: Full
  - LauncherPath: Default
  - PickerAttributes: 0
  - PickerAudioAssist: NO
  - PickerMode: Builtin
  - PickerVariant: Default
  - PollAppleHotKeys: NO
  - ShowPicker: YES
  - TakeoffDelay: 0
  - Timeout: 5

Debug:
  - AppleDebug: NO
  - ApplePanic: NO
  - DisableWatchDog: NO
  - DisplayDelay: 0
  - DisplayLevel: 2147483650
  - LogModules: "*"
  - SerialInit: NO
  - SysReport: NO
  - Target: 3

Entries: []
Tools: []
```

#### PlatformInfo (SMBIOS)
```
Generic:
  - AdviseFeatures: NO
  - MaxBIOSVersion: NO
  - ProcessorType: 0
  - SpoofVendor: NO
  - SystemMemoryStatus: Auto
  - SystemProductName: iMacPro1,1
  - SystemSerialNumber: ...
  - SystemUUID: ...
  - MLB: ...
  - ROM: ...
  - FirmwareFeatures: ...
  - FirmwareFeaturesMask: ...

Update: Auto
UpdateSMBIOSMode: Create
```

**SMBIOS Recomendado**:
- `iMacPro1,1` - Para i7-13700K (16 cores,推荐)
- `MacPro7,1` - Alternativa

Generar valores únicos con **GenSMBIOS**:
```bash
python3 gensmbios.py
```

#### UEFI
```
Drivers:
  - Path: OpenRuntime.efi

Quirks:
  - IgnoreInvalidFlexRatio: NO
  - ReleaseUsbOwnership: NO
  - RequestBootVarRouting: YES
  - TscSyncTimeout: 0
  - UnblockFsConnect: NO
```

---

## 🎯 Paso 8: Configuración Específica para i7-13700K

### Kernel → Emulate
```
Cpuid1Data: <xx xx xx xx>
Cpuid1Mask: <xx xx xx xx>
DummyPowerManagement: NO  # IMPORTANTE para Raptor Lake
```

Para Raptor Lake (13th gen), usar estos patches:

```xml
<key>Emulate</key>
<dict>
    <key>Cpuid1Data</key>
    <data>
    NxcB/V/QwMA=
    </data>
    <key>Cpuid1Mask</key>
    <data>
    ////
    </data>
</dict>
```

---

## 📋 Checklist USB Completado

- [ ] USB formateado (HFS+, GUID)
- [ ] Instalador macOS creado
- [ ] OpenCore copiado
- [ ] Kexts descargados y copiados
- [ ] config.plist configurado
- [ ] SMBIOS generado
- [ ] Verificar que EFI/OC/ tenga todos los archivos

---

## 🧪 Paso 9: Probar el USB

1. **Conectar USB** al PC Hackintosh
2. **Arrancar** y presionar `F8` para Boot Menu
3. **Seleccionar "UEFI: MyVolume"**
4. Debería ver el **OpenCore Picker**

### Si no arranca:
- Verificar configuración BIOS
- Verificar estructura EFI
- Rehacer USB si es necesario

---

**Siguiente paso: [03 - Configurar EFI](03-efi-config.md)**
