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