BIOS

Прошивка

BIOS (Basic Input/Output System) — прошивка первых IBM PC и всего, что выросло из них. Она появилась в 1981 году и оставалась единственной прошивкой персонального компьютера почти тридцать лет; на её смену пришёл UEFI.

Название говорит о главном: это не только «тест при включении», но и набор базовых сервисов ввода-вывода, которыми пользовались операционные системы. Отсюда и имя.

Из чего состоит BIOS

  • POST — инициализация и проверка железа (см. POST);
  • Setup — экран настроек, вызывается клавишей во время POST;
  • сервисы ввода-вывода — набор прерываний, доступных реальному режиму:
    • INT 10h — видео, INT 13h — диски, INT 16h — клавиатура, INT 1Ah — время;
  • Option ROM — код на картах расширения (видеокарта, RAID, сетевая карта) со своими точками входа и загрузочными записями;
  • таблицы — BIOS Data Area, EBDA, а также SMBIOS/DMI и ACPI, которые передаются операционной системе;
  • загрузка ОС — прерывание INT 19h.

Где живёт BIOS

В микросхеме ROM или флеш-памяти на материнской плате, отображённой в верхнюю часть первого мегабайта адресного пространства — по адресам F0000h–FFFFFh. Почему именно там — разобрано в статье POST: процессор после сброса всегда начинает с фиксированного адреса у верхней границы.

Карта первого мегабайта, в котором работает BIOS:

Адреса Что там
00000h–9FFFFh оперативная память (640 КиБ)
A0000h–BFFFFh видеопамять
C0000h–EFFFFh Option ROM карт расширения
F0000h–FFFFFh сама прошивка BIOS

Как BIOS доходит до GRUB

  1. POST инициализирует процессор, чипсет, память, видео и накопители.
  2. Выбор загрузочного устройства — по списку из Setup BIOS опрашивает диски, ищет на них признак загрузочной записи.
  3. MBR — первый сектор диска (512 байт). В его конце должна стоять подпись 0x55AA. BIOS загружает этот сектор по адресу 0000:7C00 и передаёт управление.
  4. Загрузчик — в MBR помещается только первая часть GRUB (stage1); она находит stage1.5 в зазоре между MBR и первым разделом, а тот — stage2 в /boot/grub. Дальше GRUB читает grub.cfg и загружает ядро.
  5. Передача управления — через прерывание INT 19h. Всё происходит в реальном режиме, 16-битным кодом.

Ключевая особенность: после старта операционной системы сервисы BIOS исчезают. Ядро Linux не пользуется INT 13h — оно работает со своими драйверами. BIOS нужен только до загрузчика.

Ограничения BIOS

  • MBR: разделы не больше 2 ТиБ, не больше четырёх основных;
  • реальный режим: 16-битный код, первый мегабайт памяти, никакой защиты;
  • нет проверки подписей: загрузчик не проверяется, поэтому возможны загрузочные вирусы;
  • нет драйверов до ОС: чтобы прочитать диск, BIOS умеет только базовые операции через INT 13h;
  • нет сетевой загрузки без Option ROM сетевой карты.

BIOS сегодня

Как самостоятельная прошивка BIOS не используется с начала 2010-х. Но он никуда не делся в двух видах:

  • CSM (Compatibility Support Module) — режим совместимости внутри UEFI: прошивка притворяется BIOS, чтобы загрузить старую систему с MBR;
  • учебный материал — разбирая BIOS, проще понять, зачем в UEFI сделано то или иное.

Как понять, что система загрузилась через BIOS

# если каталога нет — загрузка legacy (BIOS/CSM), а не UEFI
ls /sys/firmware/efi

# в выводе видно, какой режим у прошивки
sudo dmidecode -t bios

Книги и ссылки

Смотрите также

  • Прошивка — что такое прошивка вообще
  • UEFI — что пришло на смену BIOS
  • POST — инициализация железа
  • GRUB 2 — загрузчик, которому BIOS передаёт управление
Оценка статьи 0

Комментарии

Пока комментариев нет.