API для запросов и настройки свойств BIOS - PullRequest
13 голосов
/ 07 июня 2011

Допустим, я хотел бы изменить настройку в BIOS моего компьютера в Linux (скажем, Ubuntu 11, если это имеет значение.) Какие типы API существуют для того, чтобы вы могли запрашивать и манипулировать настройками BIOS?

Кроме того, каковы хорошие ресурсы для этого типа разработки?

Ответы [ 4 ]

7 голосов
/ 07 июня 2011

Память CMOS существует за пределами обычного адресного пространства и не может содержать непосредственно исполняемый код.Он доступен с помощью команд IN и OUT на порту 70h (112d) и 71h (113d).Для считывания байта CMOS выполняется выход OUT на порт 70h с адресом считываемого байта, а затем IN из порта 71h извлекает запрошенную информацию.

Вы можете использовать inb и outb макросы для чтения и записи с этих портов, чтобы получить все настройки BIOS, хранящиеся в CMOS.Для сохраненного формата памяти настроек посмотрите: http://bochs.sourceforge.net/techspec/CMOS-reference.txt

Эти сопоставления на самом деле зависят от поставщика, но большинство из них должны быть общими.

Хотя это не API, но сэто вы можете сделать прямой доступ к памяти CMOS и сделать свой собственный API.Для быстрой программы я бы порекомендовал получить API.Посмотрите ответ @ Немо в этом случае.

5 голосов
/ 07 июня 2011

flashrom - это утилита для прошивки нового образа BIOS из Linux.

Чтобы изменить сами настройки BIOS, вы можете использовать устройство / dev / nvram.

На этой странице содержится хорошая информация по обоим из них.

Обратите внимание, что значение содержимого NVRAM полностью зависит от самого BIOS; это будет варьироваться от BIOS к BIOS и даже между версиями одного и того же BIOS. Поэтому единственное, что вы можете надежно сделать, это сохранить настройки BIOS в одной системе и восстановить их в идентичной системе.

4 голосов
/ 29 июня 2011

Все зависит от того, что подразумевается под «настройкой BIOS».

В традиционных микропрограммах для ПК / AT и ПК «настройки BIOS» сохраняются в энергонезависимой памяти, связанной с микросхемой часов реального времени.Существует в значительной степени нет стандартизации в отношении того, что представляют отдельные байты NVRAM (хотя есть несколько общих соглашений), и их значения варьируются от поставщика к поставщику встроенного программного обеспечения, а также от выпуска встроенного программного обеспечения до выпуска встроенного программного обеспечения.Инструменты для манипулирования RTC NVRAM включают устройства Linux и FreeBSD /dev/nvram.

Но это не единственная энергонезависимая RAM на современном ПК.«ПЗУ BIOS» на самом деле также является энергонезависимой ОЗУ.(Нельзя просто записать в него в обычном режиме. Чтобы включить циклы записи, нужно выполнить магические заклинания. Но это не только постоянная память.) Более поздние прошивки ПК используют это намного больше (потенциально до 16 МБ)в отличие от 256 байт) энергонезависимая оперативная память для хранения настроек.Там хранятся данные управления системой, такие как Расширенные данные конфигурации системы и печально известный пул DMI.Инструменты для манипулирования этими данными включают утилиту Linux dmidecode, которая использует /dev/mem.

. На современном ПК с микропрограммой EFI в «BIOS» NVRAM обычно хранятся переменные среды микропрограммы EFI.Этими средствами можно манипулировать с помощью таких инструментов, как uefivars, которые, в свою очередь, полагаются на файловую систему /sys/firmware/efi (которая эффективно, хотя и несколько косвенно, экспортирует ядро-Режим EFI API для переменных в режиме приложения).Переменные EFI - это «настройки» современных микропрограмм EFI, управляющие различными вещами, от того, что находится в меню EFI Boot Manager (см. Утилиту efibootmgr), до того, какие устройства составляют системную консоль.

2 голосов
/ 09 февраля 2013

Я пытаюсь составить список инструментов для этого в моей вики: https://wiki.xkyle.com/Configuing_BIOS_From_Linux

Хотя они не являются технически API, они являются методами для выполнения того, что вы просите.

Они зависят от поставщика и для серверов.

  • Intel Severs: утилита Syscfg
  • Серверы Dell PowerEdge C: setupbios или их syscfg
  • Серверы HP: утилита CONREP
...