¿Cómo cambio la pantalla de inicio de inicio del BIOS?

¿Cómo cambio la pantalla de inicio de inicio del BIOS?

Tengo una PC Dell que tiene una cara de Alien muy fea y de mala suerte en cada arranque. Quiero cambiarlo o desactivarlo para siempre, pero en Bios no tienen opciones.

¿Cómo puedo cambiar esto desde mi Linux Fedora o ArchLinux que se está ejecutando ahora?

Lo siguiente intentado no funciona. (http://www.pixelbeat.org/docs/bios/)

./flashrom -r  firmware.old   #save current flash ROM just in case
./flashrom -wv firmware.new   #write and verify new flash ROM image

También probé:

$ gato cc

#include <stdio.h>
#include <inttypes.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

#define lengthof(x) (sizeof(x)/sizeof(x[0]))

uint16_t checksum(const uint8_t* data, int len)
{
    uint16_t sum = 0;

    int i;
    for (i=0; i<len; i++)
        sum+=*(data+i);

    return htons(sum);
}

void usage(void)
{
    fprintf(stderr,"Usage: therm_limit [0,50,53,56,60,63,66,70]\n");
    fprintf(stderr,"Report therm limit of terminal in BIOS\n");
    fprintf(stderr,"If temp specifed, it is changed if required.\n");
    exit(EXIT_FAILURE);
}

#define CHKSUM_START 51
#define CHKSUM_END 109

#define THERM_OFFSET 67
#define THERM_SHIFT 0
#define THERM_MASK (0x7 << THERM_SHIFT)
#define THERM_OFF 0
uint8_t thermal_limits[]={0,50,53,56,60,63,66,70};
#define THERM_MAX (lengthof(thermal_limits)-1)

#define DEV_NVRAM "/dev/nvram"
#define NVRAM_MAX 114
uint8_t nvram[NVRAM_MAX];

int main(int argc, char* argv[])
{
    int therm_request = -1;

    if (argc>2) usage();
    if (argc==2) {
        if (*argv[1]=='-') usage();
        therm_request=atoi(argv[1]);
        int i;
        for (i=0; i<lengthof(thermal_limits); i++)
            if (thermal_limits[i]==therm_request)
                break;
        if (i==lengthof(thermal_limits))
            usage();
        else
            therm_request=i;
    }

    int fd_nvram=open(DEV_NVRAM, O_RDWR);
    if (fd_nvram < 0) {
        fprintf(stderr,"Error opening %s [%m]\n", DEV_NVRAM);
        exit(EXIT_FAILURE);
    }
    if (read(fd_nvram, nvram, sizeof(nvram))==-1) {
        fprintf(stderr,"Error reading %s [%m]\n", DEV_NVRAM);
        close(fd_nvram);
        exit(EXIT_FAILURE);
    }

    uint16_t chksum = *(uint16_t*)(nvram+CHKSUM_END);
    printf("%04X\n",chksum); exit(0);
    if (chksum == checksum(nvram+CHKSUM_START, CHKSUM_END-CHKSUM_START)) {

        uint8_t therm_byte = *(uint16_t*)(nvram+THERM_OFFSET);
        uint8_t therm_status=(therm_byte & THERM_MASK) >> THERM_SHIFT;

        printf("Current thermal limit: %d°C\n", thermal_limits[therm_status]);

        if (
            (therm_status == therm_request)
           ) therm_request=-1;

        if (therm_request != -1) {

            if (therm_status != therm_request)
                printf("Setting thermal limit to %d°C\n", thermal_limits[therm_request]);

            uint8_t new_therm_byte = (therm_byte & ~THERM_MASK) | (therm_request << THERM_SHIFT);
            *(uint8_t*)(nvram+THERM_OFFSET) = new_therm_byte;

            *(uint16_t*)(nvram+CHKSUM_END) = checksum(nvram+CHKSUM_START, CHKSUM_END-CHKSUM_START);
            (void) lseek(fd_nvram,0,SEEK_SET);
            if (write(fd_nvram, nvram, sizeof(nvram))!=sizeof(nvram)) {
                fprintf(stderr,"Error writing %s [%m]\n", DEV_NVRAM);
                close(fd_nvram);
                exit(EXIT_FAILURE);
            }
        }
    } else {
        fprintf(stderr,"checksum failed. Aborting\n");
        close(fd_nvram);
        exit(EXIT_FAILURE);
    }
    return EXIT_SUCCESS;
}

$ gcc c.c -o bios
# ./bios 
16DB

Respuesta1

Ese código que ha publicado no tiene ninguna relación con el cambio de la presentación del BIOS (es para cambiar la configuración de reinicio térmico en un BIOS en particular). De hecho, cualquier cosa excepto el BIOS específico para el que está diseñado le dejará con una máquina muy insatisfecha.

Por lo general, solo puede cambiar la imagen de presentación del BIOS si su proveedor de hardware le ha proporcionado una forma de hacerlo. Sé que muchas placas base que compré vienen con una utilidad que toma un archivo de imagen del BIOS y una imagen de su elección, y genera una nueva imagen del BIOS que luego actualiza normalmente. Pero esto es algo que generalmente proporciona el OEM.

Respuesta2

Es posible que pueda lograr esto con la utilidad Command|Configure de Dell, pero no estoy seguro. Cada vez que intento usarlo, falla en mis sistemas. http://en.community.dell.com/techcenter/enterprise-client/w/wiki/7532.dell-command-configure/

Solía ​​​​haber una utilidad para ayudarlo a hacer esto para los sistemas Dell (no estoy seguro si Dell la emitió o si alguien más lo hizo), pero ya no puedo encontrar ningún buen enlace a ella.

información relacionada