Устройство и загрузка современного сервера

Fuente
ru-orig
Jun 13, 2025 Aug 30, 2026
Video preview
Compartir:

В лекции подробно рассматривается аппаратная архитектура серверов, включая процессор, память, чипсет, а также процесс загрузки от включения питания до запуска операционной системы. Особое внимание уделяется NUMA, режимам работы процессора, загрузчикам, UEFI, Secure Boot, TPM и Management Engine.

Историческая справка и устройство сервера ⏱ 0:00

  • •Лектор Анатолий Мазуров, работает в команде эксплуатации общего стореджа Яндекса, в эксплуатации около 2500 серверов.
  • •Начало с истории: первые ЭВМ были массивными, дорогими, потребляли много энергии; IBM System 360 ввела обратную совместимость, линейку совместимых мейнфреймов, программы могли работать десятилетиями.
  • •Появление ARPANET, интернета, клиент-серверного взаимодействия; IBM PC (1981) с открытой архитектурой и модульностью, что привело к появлению BIOS и IBM PC-совместимых систем.
  • •Сердцем IBM PC был процессор Intel 8086 (16-бит), родоначальник архитектуры x86; позже вышел 8088 (8-бит, совместимый на уровне ассемблера).
  • •Современный сервер: стойка Яндекса поколения 4.0, серверы компактные, сравнимы с десятком ПК; задняя панель: четыре толстых контакта питания, так как сервер потребляет около киловатта; DCDC преобразователь с радиатором.
  • •Материнская плата: сокеты ЦПУ (два, каждый ~300 Вт), слоты оперативной памяти рядом с процессором, ПЗУ для BMC и BIOS, сам BMC (микроконтроллер SED), PCH (центральная микросхема), слот для батарейки, перемычки.
  • Аппаратная архитектура и NUMA ⏱ 20:00

  • •Разъём для модуля TPM расположен рядом с цифрой 8 на плате.
  • •Логическая схема платы показывает множество линий подключения периферии и несколько линий передачи данных между процессорными сокетами.
  • •Оперативная память подключается: 8 слотов к одному сокету и 8 к другому; для доступа к памяти другого сокета используется связь между сокетами.
  • •Архитектура NUMA (Non-Uniform Memory Access) — стандарт для современных серверов; доступ к памяти другого сокета неэффективен.
  • Мониторинг NUMA и батарейка ⏱ 22:33

  • •Нет мониторинга низкоуровневых вещей (например, загрузка PCI-шины) — инструмент есть только для процессоров Intel.
  • •Батарейка нужна для сохранения часов; если она садится, часы сбрасываются, что может привести к проблемам с монтированием корневой файловой системы.
  • Решение проблем NUMA ⏱ 25:06

  • •Использование NUMA-aware аллокаторов и прилипание процессов к ядрам для уменьшения задержек при обращении к удалённой памяти.
  • Процесс загрузки системы ⏱ 25:36

  • •Начало загрузки: переход по reset vector в реальном режиме; запускается только одно ядро (Bootstrap CPU).
  • •До инициализации памяти выполняется загрузка микрокода (для исправления уязвимостей, например, Spectre/Meltdown).
  • •Оперативная память инициализируется после перевода кэша ЦПУ в специальный режим (Cache-as-RAM).
  • •Далее инициализируется PCI-шина, обнаруживаются устройства, выполняется Option ROM (например, PXE для сетевой загрузки).
  • PXE и загрузчики ⏱ 30:14

  • •PXE позволяет загружать серверы по сети без дисков; используется для автоматической преднастройки и установки ОС на новых серверах.
  • •В Legacy-системах загрузка идёт с сектора 0 диска; в UEFI — с раздела со специальным типом, где находится загрузчик (например, GRUB).
  • Роль BMC и IPMI ⏱ 32:48

  • •BMC (Baseboard Management Controller) — ARM-микрокомпьютер, запускается сразу при подаче питания.
  • •Предоставляет IPMI-интерфейс для удалённого управления: включение/выключение, чтение сенсоров, просмотр event log.
  • •Доступ к IPMI должен быть ограничен из-за высоких привилегий; часто выделяется в отдельную VLAN.
  • Режимы работы процессора ⏱ 36:55

  • •Реальный режим (Real Mode) — наследие 8086: адресация через сегмент и смещение.
  • •Защищённый режим появился в 80286 для изоляции программ и поддержки виртуальной памяти.
  • •Процессор начинает работу в реальном режиме после подачи питания.
  • Режимы работы процессора, организация памяти и BIOS ⏱ 40:00

  • •В защищённом режиме адресация памяти через сегментные дескрипторы нарушила совместимость с 8086, так как программы, использующие разные сегментные адреса для одной ячейки, могли не работать.
  • •Для поддержки старых программ в 386 добавлен режим Virtual 86 — аппаратная виртуализация, позволяющая процессам работать как в реальном режиме; реальный режим сейчас почти не используется.
  • •Память IBM PC была сложной: верхние адреса (UMA) заняты BIOS и видеопамятью, HMA — артефакт сегментации, позволяющий обращаться к памяти за 1 МБ, и Gate A20; BIOS предоставляет функции для DOS, а загрузчик загружается по фиксированному адресу.
  • MBR, GPT, UEFI и Secure Boot ⏱ 47:47

  • •MBR требует сигнатуру 0x55 0xAA в последних двух байтах сектора; таблица разделов MBR использует 4 байта для адреса начала и размера, поэтому не поддерживает разделы >2 ТБ, хотя диск >2 ТБ возможен, но рискованно, если загрузчик выходит за 2 ТБ.
  • •GPT — замена MBR, поддерживает диски до 9 ЗБ (на практике таких нет), имеет резервную копию таблицы в конце диска, защитный MBR, но нет места для stage 1.5 GRUB, поэтому требуется отдельный раздел (обычно 32 КБ) для core image.
  • •UEFI — замена BIOS, разработана Intel и HP для Itanium, использует формат PE, имеет открытую реализацию TianoCore, читает FAT, а Secure Boot защищает от руткитов, внедряющихся в прошивку.
  • Модуль совместимости и поиск прошивок ⏱ 60:04

  • •Модуль CSM (Compatibility Support Module) обеспечивает загрузку устаревших ОС (MS-DOS, FreeDOS) на системах с UEFI, эмулируя BIOS.
  • •Производители постепенно отказываются от CSM, так как запуск таких ОС на современных серверах неактуален.
  • •Для загрузки UEFI использует файловую систему FAT (любую версию: FAT12, FAT16, FAT32), которая поддерживается во всех ОС.
  • •Возможен режим Virtual 8086, в котором программы работают в кольце защиты 3.
  • Кольца защиты процессора ⏱ 62:37

  • •В процессоре два бита определяют уровень привилегий (кольцо).
  • •Обычно используются только кольцо 0 (ядро) и кольцо 3 (пользовательский режим).
  • •Переключение контекста между пользовательским режимом и ядром — дорогостоящая операция.
  • •Кольцо -1 — гипервизор (режим виртуализации), кольцо -2 — SMM (System Management Mode), имеющий доступ ко всей памяти без проверки привилегий.
  • TPM и Intel ME ⏱ 68:44

  • •TPM (Trusted Platform Module) — криптопроцессор, хранящий ключи и выполняющий криптооперации, с регистрами PCR для измеренной загрузки.
  • •Ключи в TPM защищены от извлечения, если нет уязвимостей в прошивке.
  • •Intel Management Engine (Intel ME) — скрытый сопроцессор в PCH, работает даже когда сервер выключен, но питание подано.
  • •В AMD аналог — PSP (Platform Security Processor). Известны уязвимости, закрытые Intel.
  • Южный мост и другие термины ⏱ 74:23

  • •PCH (Platform Controller Hub) — современный аналог южного моста, обеспечивает связь с медленными устройствами (сетевые карты, USB, диски).
  • •Северный мост (устаревший) отвечал за быстрые коммуникации (память, видеокарты).
  • •DMA (Direct Memory Access) — механизм, позволяющий южному мосту пересылать данные без участия процессора.
  • •ECC-память (Error Correcting Code) — корректирует ошибки памяти, является стандартом для серверов; Google столкнулась с проблемой из-за сбоя памяти, что привело к её внедрению.
  • •RTC (Real-Time Clock) — важен для точного времени; оптимизация системного вызова для его чтения критична для производительности.
  • Вопросы и ответы ⏱ 78:55

  • •Кольца 1 и 2 обычно не используются, но применяются в микроядерных ОС (например, Minix) для драйверов.
  • •Кольцо 1 также использовалось в одном из менеджеров виртуальных машин.
  • •BMC (Baseboard Management Controller) на ARM-архитектуре, вероятно, из-за стоимости и энергоэффективности.
  • •Перерыв перед следующей темой о Secure Boot.
  • Вопросы и ответы — ARM, реальный режим, TPM ⏱ 80:05

  • •Переход на ARM: массового движения нет, но GPU-применения быстрее адаптируются.
  • •Unreal Mode: в 286 возврат в реальный режим требовал сброса процессора с сохранением памяти; причина — доступно чуть больше 1 Мб памяти в 16-битном режиме.
  • •TPM: защита от чтения секретных ключей — нет команды «прочитай секрет»; это процессор со своим хранилищем.
  • •Перерыв 10-15 минут; затем лекция продолжилась с темы Secure Boot.
  • Устройство защищенной загрузки и ее компоненты ⏱ 100:07

  • •Для Windows по умолчанию используются ключи Microsoft в хранилищах Secure Boot, что логично, т.к. пользователи не будут изучать OpenSSL для подписи своего ядра.
  • •Основной ключ — Platform Key (PK), приватная часть которого должна храниться безопасно и не на той же системе; через Key Exchange Key (KEK) можно добавить несколько ключей для разных администраторов.
  • •Все загружаемые модули и ядро ОС должны быть подписаны одним из ключей в цепочке; также существуют базы DB (разрешенные) и DBX (запрещенные) с хэшами программ.
  • •Secure Boot останавливает загрузку при несовпадении подписи, в отличие от Trusted Boot, который не блокирует запуск, но фиксирует изменения в PCR-регистрах TPM.
  • Trusted Boot и комбинирование с Secure Boot ⏱ 103:11

  • •Trusted Boot использует TPM и регистры PCR (от 0 до 7), куда записываются хэши модулей и конфигурации; на основе этих данных можно проверить целостность системы.
  • •Полнодисковое шифрование: ключ шифрования привязывается к значениям PCR (например, 4, 5, 6, 7); расшифровка возможна только при совпадении значений, что защищает от подмены прошивки или конфигурации.
  • •PCR 7 отвечает за флаг Secure Boot; привязка к нему гарантирует, что расшифровка произойдет только при активном Secure Boot, но одного PCR 7 недостаточно для полной защиты.
  • •Trusted Boot не мешает загрузке системы, но если хэши изменяются (например, после обновления ядра), секрет не расшифруется — поэтому рекомендуется хранить recovery-ключ в холодном хранилище.
  • Цепочка доверия и роль Management Engine ⏱ 110:49

  • •Intel Management Engine инициализирует PCH (Platform Controller Hub) — модуль, обеспечивающий взаимодействие CPU с периферией; без этого процессор не сможет работать с периферией.
  • •Intel Boot Guard использует одноразовые программируемые перемычки (field programmable fuses) в чипсете для записи публичного ключа, которым проверяются самые первые этапы инициализации; обычно это ключ производителя или Intel/AMD.
  • •Boot Guard гарантирует, что код прошивки первых этапов не был модифицирован, и позволяет доверять проверке Platform Key на последующих этапах.
  • •Хотя Management Engine — черный ящик без документации, он выполняет критически важные функции безопасности.
  • Процесс загрузки после Management Engine ⏱ 114:57

  • •После Management Engine загрузка идет на процессоре: обновление микрокода, переход в Real Mode (вектор сброса FF FF 0), затем в 32/64-разрядный режим.
  • •В режиме Secure Boot проверяются подписи всех компонентов, заполняются PCR-регистры TPM.
  • •Инициализируется оперативная память, настраивается оборудование, читаются расширения ПЗУ (например, сетевых карт) — они должны быть подписаны доверенными ключами, иначе не запустятся.
  • •Дальнейшие этапы загрузки ОС не сильно отличаются от ранних 8086-совместимых компьютеров.
  • Загрузка Linux в Secure Boot ⏱ 117:59

  • •Для загрузки Linux в Secure Boot используется специальный загрузчик shim, подписанный ключом Microsoft; он имеет собственное хранилище ключей, куда можно добавлять ключи через утилиту MokUtil.
  • •Цепочка доверия: shim проверяет подпись ядра и модулей, которые должны быть подписаны доверенными ключами, связанными с верхним Platform Key в прошивке.
  • •Если ключи Microsoft в хранилище Secure Boot, то для Linux требуется shim, иначе загрузка невозможна.
  • •Для дальнейшего изучения загрузки ОС рекомендуется посмотреть прошлогоднюю лекцию Полины; также есть раздел со ссылками в слайдах.
  • Заключительные рекомендации и ответы на вопросы ⏱ 120:08

  • •Спикер дал ссылки на дополнительные материалы: Intel Boot Guard, full discриption, кольца защиты (рекомендует читать на английском), статья на Хабре «Путешествие сквозь секреты прошивок».
  • •Рекомендовал лекцию «Кит архитектура ВМ» (четвёртая снизу) Виктора Ашика, где показан запуск BIOS в эмуляторе QEMU с отладчиком GDB.
  • •Ответы на вопросы: Secure Boot не влияет на скорость загрузки (криптооперации быстрые), но полнодисковое шифрование может нагрузить процессор при большом потоке ввода-вывода.
  • •Зловредное ПО не может подписать свой модуль ядра без доступа к приватному ключу, а пользовательское ПО запускается, если его запустит пользователь.
  • •Проверка UEFI через чек-суммы не распространена из-за сложностей хранения медиа и автоматизации в промышленных масштабах (проблемы с APMI).
  • •Ключи Microsoft в прошивке, вероятно, из-за влияния Microsoft и корпоративного применения; про AMD информации меньше, так как Intel популярнее.
  • Ключевые выводы

  • •Лектор Анатолий Мазуров работает в команде эксплуатации общего стореджа Яндекса, где в эксплуатации около 2500 серверов.
  • •Без NUMA-aware аллокаторов и прилипания процессов к ядрам возникают задержки при обращении к удалённой памяти.
  • •BMC — это ARM-микрокомпьютер, который запускается при подаче питания и предоставляет IPMI-интерфейс для удалённого управления.
  • •Реальный режим процессора является наследием 8086, а защищённый режим появился в 80286 для изоляции программ.
  • •MBR не поддерживает диски большого объёма из-за 4-байтовых адресов, в отличие от GPT.
  • •TPM хранит ключи и выполняет криптооперации, а также имеет регистры PCR для измеренной загрузки.
  • •Для загрузки Linux в Secure Boot используется загрузчик shim, подписанный ключом Microsoft.
  • Заключение

    Лекция охватывает все ключевые аспекты устройства и загрузки современного сервера, начиная от истории и заканчивая современными технологиями безопасности. Спикер дал ссылки на дополнительные материалы для углублённого изучения.

    Pregunta sobre este video