REFInd no le permitirá establecer una variable NVRAM arbitraria directamente, pero puede utilizar EDK2 para compilar un pequeño controlador EFI. Esto se describe en el documento de WikiLeaks Conceptos básicos de EFI: Variables NVRAM
Los controladores EFI colocados en el directorio de controladores rEFInd se cargan y ejecutan automáticamente - véase El gestor de arranque de rEFInd: Uso de los controladores EFI . Alternativamente podrías escribir un programa EFI en lugar de un driver y luego usar una estrofa manual en rEFInd para llamar a un shell script para llamar a este y luego al bootloader.
Otro método (probablemente más fácil) sería modificar rEFInd. Puedes ver en el código fuente cómo se establece el csr-active-config
Variable NVRAM para activar y desactivar el SIP - apple.h define el GUID:
// The constants related to Apple's System Integrity Protection (SIP)....
#define CSR_GUID { 0x7c436110, 0xab2a, 0x4bbb, { 0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82 } };
apple.c llama a la función EfivarSetRaw() en lib.c
Status = EfivarSetRaw(&CsrGuid, L"csr-active-config", (CHAR8 *) &TargetCsr, 4, TRUE);
if (Status == EFI_SUCCESS)
RecordgCsrStatus(TargetCsr, TRUE);
else
SPrint(gCsrStatus, 255, L" Error setting System Integrity Protection code.");
Otras actualizaciones de la NVRAM podrían hacerse de la misma manera - hay varios otros GUID enumerados en el enlace de WikiLeaks en el primer párrafo.
Si quiere pasar un argumento de arranque sin actualizar la NVRAM puede crear una entrada de arranque manual en rEFInd y especificar el options
en refind.conf. Se pueden añadir opciones adicionales utilizando add_options
- ver el Creación de estrofas de arranque manual de la documentación.
Por ejemplo, puede definir las opciones del submenú así y elegir entre ellas usando F2 en el arranque.
menuentry "Catalina" {
# Get loader GUID from macOS subvolume: diskutil info disk1s5|grep 'Volume UUID'
icon \EFI\refind\themes\colourful\myicons\os_mac_silver.png
volume "Preboot"
loader \3B4B18C9-C57D-4F98-9168-C8D8B9F06EAD\System\Library\CoreServices\boot.efi
submenuentry "Verbose" {
add_options "-v"
}
submenuentry "Single User" {
add_options "-v -s"
}
submenuentry "Safe Mode" {
add_options "-v -x"
}
submenuentry "Recovery" {
volume "Recovery"
loader \3B4B18C9-C57D-4F98-9168-C8D8B9F06EAD\boot.efi
}
}