Когда мы включаем компьютер, он успевает совершить несколько этапов работы ещё до того, как загрузится операционная система. В этом посте будет рассмотрено, как загружается типичный процессор с архитектурой x86. Это очень сложный и многоступенчатый процесс. Здесь его структура будет представлена только в самом общем виде. От загрузочной прошивки зависит, каким именно путём процессор придёт к тому состоянию, в котором сможет загрузить операционную систему. Мы проследим этот процесс на примере опенсорсной загрузочной прошивки coreboot.Читать полностью »
Рубрика «coreboot»
Как загружается процессор Intel x86
2023-08-22 в 8:01, admin, рубрики: coreboot, dram, GbE, intel, IP, ROM, sipi, timeweb_статьи_перевод, UEFI, x86, железо и электроника, ОЗУ, ПроцессорыПочему открытые прошивки важны для безопасности
2019-05-11 в 10:28, admin, рубрики: BMC, Cerberus, coreboot, firmware, linuxboot, me_cleaner, NERF, NIC, open source, smm, u-boot, u-root, UEFI, информационная безопасность, Компьютерное железо, прошивки, Разработка под Linux, уровни привилегийНедавно на GoTo Chicago я читала лекцию на эту тему и подумала, что будет неплохо написать статью с выводами. Этот пост посвящён тому, почему прошивки с открытым исходным кодом важны для безопасности.
Уровни привилегий
В типичном стеке у вас различные уровни привилегий.
- Кольцо 3. Приложения: минимальное привилегий, за исключением песочницы в пользовательском пространстве, которая ещё больше ограничена.
- Кольцо 0. Ядро: ядро операционной системы, в случае ОС с открытым исходным кодом вы видите его код.
- Кольцо −1. Гипервизор: мониторинг виртуальных машин (VMM), создаёт и запускает виртуальные машины. В гипервизорах с открытым исходным кодом, таких как Xen, KVM, bhyve и другие, вы видите код.
- Кольцо −2. Режим управления системой (SMM), ядро UEFI: проприетарный код, подробнее об этом ниже.
- Кольцо −3. Движок управления: проприетарный код, подробнее об этом ниже.
Отрицательные кольца указывают на уровни с привилегиями больше, чем у нулевого.
Читать полностью »
Прерывания от внешних устройств в системе x86. Часть 3. Настройка роутинга прерываний в чипсете на примере coreboot
2019-02-14 в 12:48, admin, рубрики: apic, C, coreboot, interrupts, irq, open source, PCI, pic, системное программированиеПродолжаем рассматривать настройку прерываний от внешних устройств в системе x86.
В части 1 (Эволюция контроллеров прерываний) мы рассмотрели теоретические основы контроллеров прерываний и общие термины, в части 2 (Опции загрузки ядра Linux) посмотрели как на практике ОС осуществляет выбор между контроллерами. В этой части мы рассмотрим как BIOS настраивает роутинг IRQ на контроллеры прерываний в чипсете.
Никакие современные компании по разработке BIOS (AwardBIOS/AMIBIOS/Insyde) не раскрывают исходники своих программ. Но к счастью есть Coreboot — проект по замене проприетарного BIOS на свободное программное обеспечение. В его коде мы и посмотрим, как настраивается роутинг прерываний в чипсете.
Связь драйвера и устройства по _HID методу ACPI на примере GPIO контроллера Lynxpoint
2018-11-09 в 17:05, admin, рубрики: ACPI, coreboot, gpio, linux, open source, windows, системное программированиеПостановка задачи
В Linux есть стандартный интерфейс для работы с GPIO через sysfs. Документацию на него можно посмотреть тут.
Если кратко, то в папке "/sys/class/gpio" есть файлы «export» и «unexport». С помощью записи числа X в файл export можно открыть интерфейс в user space для управления GPIOX
# открыть интерфейс в user space для управления GPIO12
$ echo 12 > /sys/class/gpio/export
После открытия интерфейса появится папка /sys/class/gpio/gpioX/ в которой будут такие файлы как «value» или «direction», и путём записи «in» или «out» в файл «direction» и записи 1 или 0 в файл «value» можно управлять выводом GPIO напрямую через командную строку.
# настроить GPIO на вывод
$ echo "out" > /sys/class/gpio/gpio12/direction
# установить 1 на выводе GPIO
$ echo 1 > /sys/class/gpio/gpio12/value
Чтобы команда «echo X > /sys/class/gpio/export» приводила к созданию папки «gpioX», в ядре должен быть зарегистрирован драйвер контроллера GPIO, открывающий интерфейс к линиям GPIO.
Так получилось, что я работаю над портированием coreboot для кастомной платы на базе процессора Intel Haswell i7 [Для тех, кто не знает, coreboot это open source проект по созданию BIOS с открытым исходным кодом (https://www.coreboot.org/)]. В мой процессор встроен южный мост LynxpointLP в котором есть 94 линии GPIO. И я захотел открыть их в sysfs…
Читать полностью »
Загрузка ядра Linux. Часть 1
2018-11-03 в 8:57, admin, рубрики: 8086, coreboot, grub, linux, x86, Настройка Linux, реальный режим, системное программированиеОт загрузчика к ядру
Если вы читали предыдущие статьи, то знаете о моём новом увлечении низкоуровневым программированием. Я написал несколько статей о программировании на ассемблере для x86_64
Linux и в то же время начал погружаться в исходный код ядра Linux.
Мне очень интересно разобраться, как работают низкоуровневые штуки: как программы запускаются на моём компьютере, как они расположены в памяти, как ядро управляет процессами и памятью, как работает сетевой стек на низком уровне и многое другое. Итак, я решил написать еще одну серию статей о ядре Linux для архитектуры x86_64.
Обратите внимание, что я не профессиональный разработчик ядра и не пишу код ядра на работе. Это всего лишь хобби. Мне просто нравятся низкоуровневые вещи и интересно в них копаться. Поэтому если заметите какую-то путаницу или появилятся вопросы/замечания, свяжитесь со мной в твиттере, по почте или просто создайте тикет. Буду благодарен.
Читать полностью »
Приключения на FOSDEM 2015
2015-02-06 в 16:10, admin, рубрики: coreboot, coreos, fosdem, kolibrios, open source, reactos, ultimaker, Блог компании Фонд ReactOS, Брюссель, Европа, реверс-инжиниринг, метки: fosdemСтранно, что в русскоязычных СМИ об этом никто не пишет, но несколько дней назад в Брюсселе с успехом прошло крупнейшее европейское мероприятие FOSDEM 2015.
Я уже посещал его раньше (в 2007 выступал с докладом про ReactOS, в 2009 — стенд ReactOS).
И, по сравнению с тем, что было раньше — популярность FOSDEM'а растёт из года в год.
Согласно официальной статистике в 2014 году к сети FOSDEM подключалось 8 тыс. уникальных MAC-адресов, а в 2015 — около 15 тыс!
Можете выбрать свой коэффициент устройств на человека, как вариант:
1.5 устройства на человека: 10 тыс. человек.
0.8 устройств на человека: 18 тыс. человек.
И это действительно ощущалось.