Traduzca

Translate to EnglishÜbersetzen Sie zum Deutsch/GermanΜεταφράστε στα ελληνικά/GreekПереведите к русскому/RussianOversetter til Norsk/NorwegianÖversätta till Svensk/Swedishहिनà¥à¤¦à¥€ अनà¥à¤µà¤¾à¤¦ करने के लिà¤/Hindi
Tradueix al català/CatalanTulkot uz latviešu/LatvianPreložiť do slovenčiny/SlovakVertaal aan het Nederlands/Dutchترجمة الى العربية/ArabicTraduzca al Español/SpanishTraduisez au Français/French
Traduca ad Italiano/ItalianTraduza ao Português/Portuguese日本語に翻訳しなさい /Japanese한국어에게 번역하십시오/Korean中文翻译/Chinese Simplified中文翻译/Chinese TraditionalПереклад на українську/Ukrainian
La imagen de RHCE Red Hat certificó la guía del estudio del linux del ingeniero (examen RH302) (la prensa de la certificación)
Imagen de XSLT 2.0 y de la referencia de programador de XPath 2.0 (programador al programador)
Imagen del desarrollo de aplicaciones sin hilos androide
Imagen de los sistemas operativos modernos (3ro edición)

Variables globales de acceso de UEFI del espacio del usuario

UEFI está un siguiente prendido a la especificación original de EFI desarrollada por Intel en el finales de los 90. UEFI utiliza GPT (tabla de la partición de GUID) en vez de MBR (expediente de cargador principal) para permitir la ayuda para las particiones mayores que 2Tb. La ayuda disponible GPT del hoy de muchos bíos sino una plataforma sin ayuda de UEFI no puede patear un sistema operativo de una partición de GPT más grande que 2TB. Hasta hace poco tiempo, UEFI fue restringido a los servidores de gama alta pero está llegando a ser más corriente ahora en los servidores y las mesas de la materia.

Tengo una placa madre UEFI-permitida de Intel y puedo patear Fedora 12 y versiones 64-bit de Microsoft Vista y de Windows 7 vía UEFI. Mientras que todavía hay algunas ediciones con UEFI-apoyan en Fedora 12, en general que trabaja. No obstante la única utilidad UEFI-enterada que soy consciente para de Fedora 12 es el efibootmgr de Matt Domsch que es un uso del usuario-espacio del linux que puede crear, modificar o destruir variables global definidas de UEFI referente al booting.

Sin embargo el núcleo de Fedora 12 es consciente de más variables global-definidas UEFI que ésos exhibidos por el efibootmgr y éstos se pueden alcanzar vía /sys/firmware/efi como se muestra abajo.

# ls -al /sys/firmware/efi/vars
drwxr-xr-x.  2 root root 0 2010-01-22 16:25 Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 16:25 Boot0001-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 16:25 BootCurrent-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 BootOptionSupport-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 16:25 BootOrder-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ConIn-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ConInDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ConOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ConOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
--w-------.  1 root root 0 2010-01-22 23:59 del_var
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ErrOut-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 ErrOutDev-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 Lang-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 LangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 MTC-eb704011-1402-11d3-8e77-00a0c969723b
--w-------.  1 root root 0 2010-01-22 23:59 new_var
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 PerfDataMemAddr-59d1c24f-50f1-401a-b101-f33e0daed443
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 PlatformLang-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 23:59 PlatformLangCodes-8be4df61-93ca-11d2-aa0d-00e098032b8c
drwxr-xr-x.  2 root root 0 2010-01-22 16:25 Timeout-8be4df61-93ca-11d2-aa0d-00e098032b8c


Aquí es cuál está en el sub-directório de Boot-0000 -8be4df61-93ca-11d2-aa0d-00e098032b8c:

# ls -al /sys/firmware/efi/vars/Boot0000-8be4df61-93ca-11d2-aa0d-00e098032b8c]# ls -al
-r--------.  1 root root 4096 2010-01-23 00:02 attributes
-r--------.  1 root root 4096 2010-01-23 00:02 data
-r--------.  1 root root 4096 2010-01-23 00:02 guid
-rw-------.  1 root root 4096 2010-01-22 16:25 raw_var
-r--------.  1 root root 4096 2010-01-23 00:02 size


Los otros sub-directórios contienen entradas similares. Algunos de estos sub-directórios (ésos con un GUID de 8be4df61-93ca-11d2-aa0d-00e098032b8c - vea abajo) contener datos referente a las variables definidas globales (conceptual similares a las variables ambientales) documentadas en la especificación de UEFI. Aquí está una tabla de las variables global definidas en V3.2 de la especificación de UEFI.

Variable NameAttributeDescription
LangCodesBS, RTThe language codes that the firmware supports.(Deprecated)
LangNV, BS, RTThe language code that the system is configured for. (Deprecated)
TimeoutNV, BS, RTThe firmware’s boot managers timeout, in seconds,
before initiating the default boot selection.
PlatformLangCodesBS, RTThe language codes that the firmware supports.
PlatformLangNV, BS, RTThe language code that the system is configured for.
ConInNV, BS, RTThe device path of the default input console.
ConOutNV, BS, RTThe device path of the default output console.
ErrOut NV, BS, RTThe device path of the default error output device.
ConInDevBS, RTThe device path of all possible console input devices.
ConOutDevBS, RTThe device path of all possible console output devices.
ErrOutDevBS, RTThe device path of all possible error output devices.
Boot####NV, BS, RTA boot load option. #### is a printed hex value. No 0x is included in the hex value.
BootOrderNV, BS, RTThe ordered boot option load list.
BootNextNV, BS, RTThe boot option for the next boot only.
BootCurrentBS, RTThe boot option that was selected for the current boot.
BootOptionSupportBS,RT,ROThe types of boot options supported by the boot manager.
Driver####NV, BS, RTA driver load option. #### is a printed hex value.
DriverOrderNV, BS, RTThe ordered driver load option list.
Key####NV, BS, RTDescribes hot key relationship with a Boot#### load option.
HwErrRecSupportNV, BS, RTIdentifies the level of hardware error record persistence support implemented by the platform. This variable is
only modified by firmware and is read-only to the OS.
SetupModeRT (RO)Whether the system is operating in setup mode (1) or not (0). All other values are reserved.
KEKNV, RTThe Key Exchange Key Signature Database.
PKNV, RTThe public Platform Key.
SignatureSupportRT (RO)Array of GUIDs representing the type of signatures supported by the platform firmware.


En UEFI, las variables global definidas arquitectónico han definido significados. Así como el contenido de datos definido cada variable global definida tiene arquitectónico definida
atribuya que indica cuando la variable de los datos puede ser alcanzada.

#define EFI_VARIABLE_NON_VOLATILE 0x0000000000000001
#define EFI_VARIABLE_BOOTSERVICE_ACCESS 0x0000000000000002
#define EFI_VARIABLE_RUNTIME_ACCESS 0x0000000000000004


Las variables con el sistema permanente de la cualidad (nanovoltio) persisten a través de reinicializaciones. Las variables con el sistema de la cualidad del cargador-servicio (BS) están solamente disponibles para el uso en el ambiente del pre-cargador. Las variables con el sistema run-time de la cualidad (RT) están disponibles para el ambiente del preboot y el sistema operativo. Todas las variables arquitectónico definidas utilizan el EFI_GLOBAL_VARIABLE GUID 0x8BE4DF61, 0x93CA, 0x11D2, 0xAA, 0xOD, 0×00, 0XE0, 0×98, 0×03, 0x2B, 0x8C.

Decidía escribir una utilidad que llamé uefivars para enumerar los detalles sobre todas las variables global definidas que el núcleo de Fedora 12 es consciente de. Algo que la rueda, yo utilizó el código fuente para el efibootmgr como mi punto de partida desde él contuvo muchas de las rutinas ese I necesario para analizar los datos binarios en los archivos raw_var. Analizando el descriptor de EFI_DEVICE_PATH_PROTOCOL usado por ConIn, ConInDev y sus como hay numeroso nodos más problemáticos probados los primos de la trayectoria del dispositivo definidos por la especificación de UEFI y estos nodos son todos las estructuras de datos octeto-llenas que pueden aparecer en cualquier límite de octeto. Afortunadamente, el código fuente para el cargador de cargador de la herencia de la COMIDA contuvo código de depuración para analizar nodos de la trayectoria del dispositivo. A propósito, EFI y UEFI son temas bastante difíciles para conseguir su cabeza alrededor. La especificación actual de UEFI (erratas de la versión 2.3 A) está sobre 2100 páginas A4 en longitud. Los conceptos son bastante simples pero los detalles de puesta en práctica son absolutamente complejos.

Aquí está el código fuente para uefivars.c

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <getopt.h>

#include "list.h"
#include "efi.h"
#include "efichar.h"
#include "unparse_path.h"
#include "efibootmgr.h"

typedef struct _var_entry {
    struct dirent *name;
    uint16_t       num;
    efi_variable_t var_data;
    list_t         list;
} var_entry_t;

static LIST_HEAD(list_head);

void
free_vars(list_t *head)
{
    list_t *pos, *n;
    var_entry_t *boot;

    list_for_each_safe(pos, n, head) {
        boot = list_entry(pos, var_entry_t, list);
        list_del(&(boot->list));
        free(boot);
    }
}

void
read_vars(struct dirent **namelist,
          int num_boot_names,
          list_t *head)
{
    efi_status_t status;
    var_entry_t *entry;
    int i;

    if (!namelist) return;

    for (i=0; i < num_boot_names; i++) {
        if (namelist[i]) {
            entry = malloc(sizeof(var_entry_t));
            if (!entry) return;
            memset(entry, 0, sizeof(var_entry_t));

            status = read_variable(namelist[i]->d_name, &entry->var_data);
            if (status == EFI_SUCCESS) {
                entry->name = namelist[i];
                list_add_tail(&entry->list, head);
            } else  free(entry);
        }
    }
}

void
free_dirents(struct dirent **ptr,
             int num_dirents)
{
    int i;
    if (!ptr) return;
    for (i=0; i < num_dirents; i++) {
        if (ptr[i]) {
            free(ptr[i]);
            ptr[i] = NULL;
        }
    }
    free(ptr);
}

void
usage()
{
    printf("usage: uefivars [-v | --version]\n");
    printf("       uefivars [-u | --unknown]\n");
}

int
main(int argc,
     char **argv)
{
    int c, i, first, unknownvar = 0;
    int option_index = 0;
    int num_all = 0;
    list_t *pos;
    var_entry_t *var;
    char desc[1032];
    char attributes[12];
    struct dirent  **all = NULL;

    static struct option long_options[] = {
        {"help", no_argument, 0, 'h'},
        {"unknown", no_argument, 0, 'u'},
        {"version", no_argument, 0, 'v'},
        {0, 0, 0, 0}
    };

    while ((c = getopt_long(argc, argv, "huv", long_options, &option_index)) != -1) {
        switch (c) {
            case 'h':
                 usage();
                 exit(EXIT_SUCCESS);
             case 'u':
                 unknownvar = 1;
                 break;
             case 'v':
                 fprintf(stdout, "version %s\n", EFIVARS_VERSION);
                 exit(EXIT_SUCCESS);
             default: /* '?' */
                 usage();
                 exit(EXIT_FAILURE);
        }
    }

    set_fs_kernel_calls();

    /* retrieve all entries */
    num_all = read_all_var_names(&all);
    read_vars(all, num_all, &list_head);

    /* loop through each entry and parse */
    list_for_each(pos, &list_head) {
        var = list_entry(pos, var_entry_t, list);
        efichar_to_char(desc, var->var_data.VariableName , sizeof(desc));

        /* parse attributes and build attributes text string */
        memset(attributes,0,12);
        first = 1;
        if (var->var_data.Attributes & EFI_VARIABLE_NON_VOLATILE) {
            if (first) {
               strcpy(attributes, "(");
               first = 0;
            } else strcat(attributes, ",");
            strcat(attributes, "NV");
        }
        if (var->var_data.Attributes & EFI_VARIABLE_BOOTSERVICE_ACCESS) {
            if (first) {
                strcpy(attributes, "(");
                first = 0;
            } else strcat(attributes, ",");
            strcat(attributes, "BS");
        }
        if (var->var_data.Attributes & EFI_VARIABLE_RUNTIME_ACCESS) {
            if (first) {
                strcpy(attributes, "(");
                first = 0;
            } else strcat(attributes, ",");
            strcat(attributes, "RT");
        }
        if (!first) strcat(attributes, ")");

        /* parse boot entries - only handles first 4 at present */
        if (!strcmp(desc, "Boot0000") || !strcmp(desc, "Boot0001") ||
            !strcmp(desc, "Boot0002") || !strcmp(desc, "Boot0003")) { 

            char description[80];
            EFI_LOAD_OPTION *load_option;
            EFI_DEVICE_PATH *path;
            char text_path[1024], *p;
            unsigned long optional_data_len=0;

            load_option = (EFI_LOAD_OPTION *) var->var_data.Data;
            efichar_to_char(description, load_option->description, sizeof(description));
            memset(text_path, 0, sizeof(text_path));
            path = load_option_path(load_option);

            if (var->name)
                 printf("%.8s %s:", var->name->d_name, attributes);
            else printf("Boot%04X %s:", var->num, attributes);
            if (load_option->attributes & LOAD_OPTION_ACTIVE)
                printf("* ");
            else  printf("  ");
            printf("%s", description);

            unparse_path(text_path, path, load_option->file_path_list_length);
            optional_data_len = var->var_data.DataSize - load_option->file_path_list_length -
                                ((char *)path - (char *)load_option);
            if (optional_data_len) {
                 p = text_path;
                 p += strlen(text_path);
                 unparse_raw_text(p, ((uint8_t *)path) + load_option->file_path_list_length, optional_data_len);
            }
            printf("\t%s\n", text_path);
        } else if (!strcmp(desc, "BootCurrent")) {
            uint16_t *n = (uint16_t *)(var->var_data.Data);
            printf("BootCurrent %s: %04X\n", attributes, (unsigned int)*n);
        } else if (!strcmp(desc, "BootNext")) {
            uint16_t *n = (uint16_t *)(var->var_data.Data);
            printf("BootNext %s: %04X\n", attributes, (unsigned int)*n);
        } else if (!strcmp(desc, "BootOptionSupport")) {
            uint16_t *n = (uint16_t *)(var->var_data.Data);
            printf("BootOptionSupport %s: %04X\n", attributes, (unsigned int)*n);
        } else if (!strcmp(desc, "BootOrder")) {
            uint16_t *data = (uint16_t *)&(var->var_data.Data);
            int *datasize = (int *)&(var->var_data.DataSize);
            int len = *datasize/sizeof(uint16_t);
            printf("BootOrder %s: ", attributes);
            for (i = 0; i < len; i++) {
                printf("%04X", data[i]);
                if (i < ( len - 1)) printf(",");
            }
            printf("\n");
        } else if (!strcmp(desc, "ConIn")) {
            printf("ConIn %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "ConInDev")) {
            printf("ConInDev %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "ConOut")) {
            printf("ConOut %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "ConOutDev")) {
            printf("ConOutDev %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "ErrOut")) {
            printf("ErrOut %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "ErrOutDev")) {
            printf("ErrOutDev %s:\n", attributes);
            efi_print_device_path(var->var_data.Data);
        } else if (!strcmp(desc, "Lang")) {
            uint8_t *data = (uint8_t *)&(var->var_data.Data);
            printf("Lang %s: ", attributes);
            for (i = 0; i < 3; i++)
                printf("%c", data[i]);
            printf("\n");
        } else if (!strcmp(desc, "LangCodes")) {
            uint8_t *data = (uint8_t *)&(var->var_data.Data);
            printf("LangCodes %s: ", attributes);
            while (1) {
               for (i = 0; i < 3; i++)
                   printf("%c", *data++);
               if (*data < 32) break;
               printf(",");
            }
            printf("\n");
        } else if (!strcmp(desc, "PlatformLang")) {
            uint8_t *data = (uint8_t *)&(var->var_data.Data);
            printf("PlatformLang %s: ", attributes);
            for (i = 0; i < 5; i++)
                printf("%c", data[i]);
            printf("\n");
        } else if (!strcmp(desc, "PlatformLangCodes")) {
            uint8_t *data = (uint8_t *)&(var->var_data.Data);
            printf("PlatformLangCodes %s: ", attributes);
            while (1) {
               for (i = 0; i < 5; i++)
                   printf("%c", *data++);
               if (*data < 32) break;
               if (*data == ';') {
                   printf(",");
                   data++;
               }
            }
            printf("\n");
        } else if (!strcmp(desc, "Timeout")) {
            uint16_t *n = (uint16_t *)(var->var_data.Data);
            printf("Timeout %s: %d secs\n", attributes, (int)*n);
        } else if (unknownvar) {
            printf("%s %s: UNKNOWN\n", desc, attributes);
        }
    }

    free_dirents(all, num_all);
    free_vars(&list_head);
    exit(EXIT_SUCCESS);
}


Aquí es lo que hacen salir los uefivars para Fedora 64-bit 12. Observe que pateé este caso de Fedora 12 de una llave del USB usando el DÚO (emulación de los reveladores UEFI) - por lo tanto la entrada del USB Boot0000.

# uefivars
Boot0000 (NV,BS,RT):* EFI USB Device	ACPI(a0841d0,0)PCI(1d,7)USB(2,0)
Boot0001 (NV,BS,RT):* EFI DVD/CDROM	ACPI(a0841d0,0)PCI(1f,2)ATAPI(0,0,0)
BootCurrent (BS,RT): 003D
BootOptionSupport (BS,RT): 0303
BootOrder (NV,BS,RT): 0000,0001
ConIn (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(30341d0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/USBClass(ffff,ffff,3,1,1)
ConInDev (BS,RT):
/USBClass(ffff,ffff,3,1,1)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(30341d0,0)
ConOut (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7fff0400)
ConOutDev (BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887fff0400)
ErrOut (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7fff0400)
ErrOutDev (BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887fff0400)
Lang (NV,BS,RT): eng
LangCodes (BS,RT): eng,fra
PlatformLang (NV,BS,RT): en-US
PlatformLangCodes (BS,RT): en-US,fr-FR
Timeout (NV,BS,RT): 3 secs
#
root@ultra uefivars]# ./uefivars
Boot0000 (NV,BS,RT):* EFI USB Device	ACPI(a0841d0,0)PCI(1d,7)USB(2,0)
Boot0001 (NV,BS,RT):* EFI DVD/CDROM	ACPI(a0841d0,0)PCI(1f,2)ATAPI(0,0,0)
BootCurrent (BS,RT): 003D
BootOptionSupport (BS,RT): 0303
BootOrder (NV,BS,RT): 0000,0001
ConIn (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(30341d0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/USBClass(ffff,ffff,3,1,1)
ConInDev (BS,RT):
/USBClass(ffff,ffff,3,1,1)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(30341d0,0)
ConOut (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7fff0400)
ConOutDev (BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887fff0400)
ErrOut (NV,BS,RT):
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7fff0400)
ErrOutDev (BS,RT):
/ACPI(a0841d0,0)/PCI(0,1)/PCI(0,0)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d2f9be-0c9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(11d3b419-2d9a-9000-273f-c14d7f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4c7657e0-878e-9e2f-2808-83437f010400)
/ACPI(a0841d0,0)/PCI(0,1f)/ACPI(50141d0,1)/UART(115200,8,1,1)/Vendor(4acf8bec-73a0-1dd0-e77e-2d887fff0400)
Lang (NV,BS,RT): eng
LangCodes (BS,RT): eng,fra
PlatformLang (NV,BS,RT): en-US
PlatformLangCodes (BS,RT): en-US,fr-FR
Timeout (NV,BS,RT): 3 secs
[root@ultra uefivars]#


He creado un proyecto de SourceForge para los uefivars. Allí usted puede transferir y construir el ejecutable para su propio sistema. Observe que, de la fecha de este poste, he probado solamente este lanzamiento en Fedora 64-bit 12. Puede haber ediciones de 32 bits en el código fuente o puede no funcionar en las arquitecturas de 32 bits para cualquier razón. BTW, finalmente hice el salto grande y utilicé Git para el control del código fuente en vez de la subversión. Puedo estar en la minoría pero parece a mí que el sintaxis de Git no es intuitivo y por lo tanto he sido lento hacer el cambio.

Mientras que los vendedores de computadora se mueven lejos de particiones del BIOS y de MBR hacia GPT que reparte y el booting de UEFI, creo que habrá una necesidad de más utilidades como los uefivars que asisten a usuarios en la comprensión y la modificación de su configuración de UEFI.

¡Como siempre, goce!
 

3 comentarios a tener acceso variables globales de UEFI de espacio del usuario en Fedora 12