Подтвердить что ты не робот

API для запросов и настройки свойств BIOS

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

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

4b9b3361

Ответ 1

Память 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. Проверьте @Nemo ответ в этом случае.

Ответ 2

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

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

Эта страница предоставляет хорошую информацию обо всех этих.

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

Ответ 3

Все зависит от того, что означает "настройка BIOS".

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

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

На современном ПК с прошивкой EFI в BIOS "BIOS" обычно входят переменные среды прошивки EFI. К ним можно отнести такие инструменты, как uefivars, которые, в свою очередь, полагаться на файловую систему /sys/firmware/efi (которая довольно эффективно, хотя и несколько косвенно, экспортирует API EFI в режиме ядра для переменных в режим приложения). Переменные EFI - это "настройки" современных прошивок EFI, которые управляют множеством вещей из того, что из меню диспетчера загрузки EFI (c.f. the efibootmgr), к каким устройствам относятся системная консоль.

Ответ 4

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

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

Они специфичны для поставщиков и для серверов.

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