Вы когда-нибудь задумывались, что происходит, когда вы нажимаете кнопку питания на компьютере? За той краткой паузой, прежде чем экран загорится, скрывается сложный процесс. В этой статье мы погрузимся в увлекательный мир прошивок (firmware) и исследуем, как разные компоненты взаимодействуют во время загрузки системыЧитать полностью »
Рубрика «bootloader»
DevOps для firmware
2022-03-18 в 19:42, admin, рубрики: bootloader, C, ci/cd, cli, devops, diy или сделай сам, hardware, HIL, hw, Jenkins, make, unit-testing, Программирование, программирование микроконтроллеровЧасто слышал мнение, что в embedded программировании в принципе не может быть никакого DevOps(а). Якобы вот есть GUI(ня) в IAR и там надо много мышкой водить. "Ты же не будешь ставить шаговые двигатели для сдвигания мышки" и т. п.
В этом тексте я намерен пофантазировать каким мог бы быть абстрактный процесс разработки firmware с точки зрения DevOps. И перечислить атрибуты такого процесса.
1. Репозиторий с кодом (репа)
Слегка ржавое EFI-приложение
2021-09-06 в 17:00, admin, рубрики: bootloader, EFI, Rust, ruvds_статьи, SecureBoot, UEFI, Блог компании RUVDS.com, операционные системы, системное программированиеТак что сегодняшняя цель — это создание UEFI-приложения на Расте, которое распечатывает карту памяти, отфильтрованную по доступности для использования (такая память называется традиционной памятью в описании UEFI-спецификаций):
Использование новых NVMe SSD в качестве загрузочного диска на старых системах с Legacy BIOS (для любой ОС)
2019-10-20 в 14:57, admin, рубрики: bootloader, Clover, dual boot, duet, NVMe, ssd, Компьютерное железо, Накопители, Настольные компьютеры, Разработка под Linux, разработка под windowsКороткий мануал — как реализовать поддержку загрузочного NVMe SSD на старых материнских платах с Legacy BIOS и с использованием Clover (для любых ОС). По следам вот этого поста, где на мой взгляд, решение не так изящно и не для всех BIOS & OS.
Читать полностью »
Загрузчик с шифрованием для STM32
2018-12-12 в 15:51, admin, рубрики: bootloader, stm32, загрузчик, программирование микроконтроллеровВ данной статье хотел бы написать о своем опыте создания загрузчика для STM32 с шифрованием прошивки. Я являюсь индивидуальным разработчиком, поэтому нижеприведенный код может не соответствовать каким-либо корпоративным стандартам
В процессе работы ставились следующие задачи:
- Обеспечить обновление прошивки пользователем устройства с SD-карты.
- Обеспечить контроль целостности прошивки и исключить запись некорректной прошивки в память контроллера.
- Обеспечить шифрование прошивки для исключения клонирования устройства.
Код писался в Keil uVision с использованием библиотек stdperiph, fatFS и tinyAES. Подопытным микроконтроллером был STM32F103VET6, но код может быть легко адаптирован под другой контроллер STM. Контроль целостности обеспечивается алгоритмом CRC32, контрольная сумма расположена в последних 4 байтах файла с прошивкой.
В статье не описано создание проекта, подключение библиотек, инициализация периферии и прочие тривиальные этапы.
Читать полностью »
Методы проб и установки Arch Linux
2018-10-18 в 15:55, admin, рубрики: Arch Linux, bootloader, configuration, external hdd, external ssd, linux, setup, virtual machine, мемы, Настройка LinuxСейчас речь пойдет об установке в различных вариантах такого небезызвестного дистрибутива линукса — Arch Linux. На момент написания статьи он занимает на distrowatch почётное 12-е место по количеству поисковых запросов за 6 месяцев с почётной средней оценкой самого дистрибутива 9.3/10. Многие считают его настоящим линуксом, для настоящих программистов, но знаменит он в первую очередь не этим, а своим нетривиальным процессом установки. Запуская загрузочный носитель пользователь в первую очередь видит отнюдь не привычный интерфейс в стиле «нажмите сюда, чтобы установить X», а большое черное окно в мир линукса.
Как сжать загрузчик для STM8 до размера 18 байт в памяти FLASH
2018-07-18 в 5:20, admin, рубрики: bootloader, OPTION Bytes, stm8, программирование микроконтроллеровВ процессе поиска загрузчика для микроконтроллера STM8S103F3 было обнаружено, что имеющиеся загрузчики в основном написаны на ”C”, «крадут» значительный объем у FLASH памяти, переносят таблицу векторов прерываний.
Загрузчик был необходим для некоего устройства, к которому невозможно подключить программатор.
Было решено попробовать самостоятельно написать загрузчик со следующими требованиями:
— загрузчик должен был называться STM8uLoader;
— код должен быть написан на ассемблере (благо ассемблер законодательно пока не запрещен);
— загрузчик должен занимать минимально возможный объем во FLASH памяти, объем занимаемый в компьютере будем считать не ограниченным;
— загрузчик не должен перемещать таблицу векторов прерываний;
— загрузчик должен иметь минимальный функционал, весь основной функционал должен взять на себя компьютер;
— загрузчик должен передавать управление прикладной программе за разумное время после сброса/включения при отсутствии соединения с компьютером.
Первое условие было моментально выполнено, а вот над последующими требованиями пришлось потрудиться.
Читать полностью »
Windows Defender удаляет bootloader от DiskCryptor
2017-10-25 в 12:49, admin, рубрики: bootloader, DiskCryptor, Windows Defender, антивирусная защита, информационная безопасность, системное администрированиеЕсли ваш системный диск зашифрован с помощью DiskCryptor система может перестать загружаться после обновления баз Windows Defender до версии 118.1.0.0 от 24.10.2017.
Defender определяет загрузчик как Win32/Tibbar.A и перезаписывает MBR. Сам DiskCryptor определяется как Trojan:Win32/Rundas.B.
Читать полностью »
Заливка прошивки в STM32 через USB
2017-04-09 в 10:41, admin, рубрики: arduino, bootloader, stm32, usb, робототехника
В своем проекте я использую микроконтроллер STM32F103C8 и фреймворк stm32duino. Этот клон Ардуино предлагает специальный бутлоадер, который позволяет заливать прошивку через USB, без использования внешних компонентов типа ST-Link или USB-UART переходника.
Сегодня мне понадобилось поработать с голым контроллером из-под CooCox и без stm32duino. Но вот в чем проблема. Даже простая моргалка лампочкой влитая через этот бутлоадер не работает.
Давайте разбираться. Возможно, мои выкладки покажутся кому-то банальностью. Но я только начинаю изучать контроллеры STM32 и на поиск проблемы убил как минимум полдня. Вдруг эта статья сократит кому-то время разработки.
Ломаем Android. Как глубока кроличья нора?
2017-01-23 в 7:21, admin, рубрики: android, bootloader, C, CVE-2016-5195, DirtyCOW, hack, kyocera, linux, open source, взлом, информационная безопасность, Разработка под android, Разработка под Linux
Мой первый Android телефон Galaxy Note N7000 был приобретен сразу после анонса в октябре 2011 года. Благодаря одному немецкому умельцу под ником bauner, у меня была возможность использовать последнюю версию CyanogenMod (ныне LineageOS). До тех пор, пока полтора года назад телефон не умер от китайской автомобильной зарядки.
Замену искал долго и остановился на Kyocera (да, они и телефоны выпускают) KC-S701. Он отличается брутальным внешним видом и отсутствием сенсорных кнопок. О root доступе к телефону я тогда даже и не задумывался, полагая, что нынче каждый телефон тем или иным способом имеет возможность получения root. И найдется умелец, который сможет под него портировать CyanogenMod. Я ошибался.
За полтора года было выпущено всего одно обновление — фикс падения ядра от специально сформированного ping пакета. А Android KitKat уже год назад был не первой свежести. Root доступ на этот телефон так никто и не получил, и никакой информации о нем не было. Отмечу, что тоже самое железо используется в американской версии телефона Kyocera Brigadier E6782, в котором по-умолчанию активизирован режим fastboot и нет ограничения на запуск неподписанных ядер (именно запуск, а не прошивку, и только при использовании непропатченного bootloader'а, CVE-2014-4325) и присутствует возможность загружаться в эти режимы путём зажатия кнопок телефона. Стараниями Verizon (а может Kyocera?) версия Android на Brigadier была обновлена до Lollipop.
Итак, я решил разобраться с процессом получения root на Android самостоятельно.