Прошиваємо BIOS з Лінукса. Перепрошивка BIOS Як працювати з програмою flashrom

Досить часто причиною поломки ПК є збій в програмному забезпеченні. Якщо таке ПО як операційна системаможе перевстановити звичайний користувач, який володіє глибокими знаннями в області IT, то перепрошити BIOS без спеціальних знань просто неможливо.

Важливо знати!Якщо у вас не завантажується биос, то причиною цього може бути все, що завгодно, аж до згорілого DVD-приводу. Тому не слід братися за перепрошивання, не з'ясувавши причини поломки.

Акронім BIOS розшифровується як Basic Input Output System, що дослівно перекладається як базова система введення-виведення. Коли ви вмикаєте ПК насамперед запускається саме ця система, яка опитує всі порти на предмет підключеного обладнання, і якщо до комп'ютера підключено несправні пристрої, то реакція биоса може бути будь-якою - від подачі звукових сигналів, до зависання або перезавантаження. Тому важливо з'ясувати чому саме ваш комп'ютер не завантажується або зависає під час завантаження биос.

Малюнок 1. - Так виглядає мікросхема БІОС на материнській платі

Якщо ж ви з'ясували, що причина непрацездатності ПК криється саме в цій мікросхемі, потрібно насамперед перевірити як поведе себе комп'ютер при скиданні налаштувань зберігаються в CMOS. Для цього потрібно секунд на 30 від'єднати батарейку від материнської плати.

Малюнок 2. - так виглядає батарейка харчування CMOS.

Якщо вищевказані маніпуляції не дали ніякого результату, то настав час пустити в хід важку артилерію. А саме зайнятися безпосередньо перепрошивкой. Важливо! Всі описані нижче маніпуляції можливі тільки в тому випадку якщо є можливість зайти в сам БІОС або завантажити ОС. Випадки коли необхідно оновити працездатний БІОС досить часті: розробники поспішаючи випустити на ринок новий продукт, часто пропускають помилки в коді, в слідстві чого можна спостерігати глюки викликані BIOSом.
При перепрошивке важливо подбає про те, щоб комп'ютер, бува, не був вимкнений, так як тоді без походу в сервісний центр не обійтися. Якщо вас ноутбук, то крім зарядного пристроюрекомендується підключити батарею.

До відома! Останні роки на материнських платахможна зустріти дві мікросхеми биос: одна робоча, друга - для відновлення вихідної прошивки після невдалого оновлення.

Найпростіший спосіб оновлення прошивки - безпосередньо з операційної системи. Насамперед йдемо на сайт виробника і викачуємо саму останню версіюБІОС, для вашої материнської плати. Для поновлення прошівккі з під Windows існують спеціальні програми, які зводять весь процес до простого клацання по кнопках "далі". Наступні три утиліти від розробників БІОС є універсальними для більшості материнських плат: AMI Firmware Update Utility, Award WinFlash Utility і Phoenix WinPhlash Utility.
Оновлення биоса в Linux, вимагає трохи більше зусиль, але також не є суперскладних операцією. Нижче наведено приклад оновлення БІОС в debian-based дистрибутивах, у яких відносяться Ubuntu, Mint і т.д. Примітка! Всі дії потрібно виконувати від імені root.
І так прошивка у нас вже завантажена, тепер слід встановити програму flashrom (http://openbios.info/FlashRom).

# Apt-get install flashrom

Перед початком оновлення, зробимо резервну копію існуючої прошивки. Для цього скористаємося наступною командою:

#flashrom -r BIOS_bak.bin

Тепер зі спокійною душею можна почати шити, для цього вводимо команду:

#flashrom -Vvw BIOS_new.bin

Якщо була завантажена прошивка для вашого чіпсета, і програма завершилася успішно, то можна сміливо перезавантажувати комп'ютер.

Якщо завантажити операційну систему немає можливості, то слід скористатися прошивкою з-під live-CD (як варіант використовувати DOS). Для цього нам знадобиться зовнішній пристрій(Флешка, CD, зовнішній жорсткий диск, карта пам'яті і т.д.) на яке записана програма для поновлення (з під DOS найчастіше використовують Award, Uniflash або AMIFlash), ну і сама live-CD система.
Оновлення рекомендується проводити, тільки коли воно дійсно необхідно. Нормально працюючий, але застарілий биос перепрошивка може привести в непридатність. Якщо таке трапилося, то не варто впадати у відчай, є ще шанс врятувати пацієнта в домашніх умовах. Для цього потрібно дістати таку-ж мікросхему зі свідомо працює прошивкою. Завантажуємо комп'ютер з робочою мікросхемою, обв'язавши її нитками. Коли операційна система повністю завантажена, акуратно виймаємо робочу микрухой, вставляємо "мертву" і пробуємо перепрошити ще раз.

flashrom doesn "t work on my board, what can I do?

  • First of all, check if your chipset, ROM chip, and mainboard are supported (see Supported hardware, or use flashrom -L).
  • If your board has a jumper for BIOS flash protection (check the manual), disable it.
  • Should your BIOS menu have a BIOS flash protection option, disable it.
  • If you run flashrom on Linux and see messages about / dev / mem, see next question.
  • If you run flashrom on OpenBSD, you might need to obtain raw access permission by setting securelevel = -1 in /etc/rc.securelevel and rebooting, or rebooting into single user mode.
  • See this page for instructions on how to test flashrom support properly (this may be risky, make sure you have a working backup flash chip).

What can I do about / Dev / mem errors?

  • If flashrom tells you "/ dev / mem mmap failed: Operation not permitted ":
    • Most common at the time of writing is a Linux kernel option, CONFIG_IO_STRICT_DEVMEM, that prevents even the root user from accessing hardware from user-space. Try again after rebooting with iomem = relaxed in your kernel command line.
    • Some systems with incorrect memory reservations (e.g. E820 map) may have the same problem even with CONFIG_STRICT_DEVMEM. In that case iomem = relaxed in the kernel command line may help too.
  • If it tells you "/ dev / mem mmap failed: Resource temporarily unavailable ":
    • This may be an issue with PAT (e.g. if the memory flashrom tries to map is already mapped in an incompatible mode). Try again after rebooting with nopat in the kernel command line.
  • If you see this message "Can" t mmap memory using / dev / mem: Invalid argument ":
    • Your flashrom is very old, better update it. If the issue persists, try the kernel options mentioned above.
  • Generally, if your version of flashrom is very old, an update might help. Flashrom has less strict requirements now and works on more systems without having to change the kernel.

I "m using flashrom with linux_spi and it doesn "t find the chip. I" ve double checked all connections, what else can I try?

  • In case you haven "t set it already: The linux_spi driver has a spispeed parameter that should always be set to a reasonable speed (100kHz..10,000kHz, try lower frequencies first). Also see the flashrom (8) manpage.
  • Generally,

зіткнувся з такою проблемою.
шеф дав ноут, який приніс з СЕРВІСКОМ.
грит, постав вийми.
ставлю вийми - не хоче бо установник не знаходить хард, який є sata.
в СЕРВІСКОМ биос поставили старий, без підтримки usb що сильно зарудняет роботу і можливості визначення в ручну типу з'єднання хард-року.
через диск биос не оновиться бо в Досі він не бачить привід чомусь.
але ось лин поставився на ура і все побачив (хоча usb все таки проігнорував)
ноут Acer Aspire 5110
прийшла мислячи поставити лин і через нього прошити bios.
порився в і-неті і наткнувся на статтю.
думаю стати в нагоді.

Практика

Для прошивання БІОСа в Лінуксі потрібно тільки дві речі - сама прошивка БІОС і програма, яка буде цей самий БІОС прошивати. Програму можна скачати в исходниках звідси: http://openbios.info/FlashRom або ж в Debian-based (наприклад в Ubuntu) дистрибутивах поставити за допомогою APT:

# Apt-get install flashrom

Перед записом нової прошивки в БІОС, бажано зберегти стару версію, тобто скопіювати прошивку, яка вже прошита в Біосе, щоб потім можна було легко відновити все назад:

#flashrom -r MyBIOS.bin

Де MyBIOS.bin - це ім'я файлу, в який збережеться стара версія прошивки. Після збереження, можна вже на свій страх і ризик записувати завантажену прошивку в БІОС:

#sudo flashrom -w NewBIOS.bin

Де NewBIOS.bin - це ім'я завантаженої прошивки. Також, можна додати ключ -v щоб програма перевірила записану прошивку і ще можна додати ключ -V щоб висновок роботи був більш інформативним:

#sudo flashrom -Vvw NewBIOS.bin

З іншими ж ключами можна ознайомитися за допомогою --help

$ Flashrom --help

На прикладі була випробувана материнська плата GIGABYTE GA-965P-DQ6 rev2.0 з Ubuntu 8.04 GNU / Linux на борту

Ця стаття продовжує тему, пов'язану із загрозою спотворення BIOS материнської
плати шкідливими програмами. У раніше опублікованому матеріалі
і був
наведено приклад програми, яка виконує запис в мікросхему BIOS, розглянуті
механізми захисту, які використовуються виробниками материнських плат і причини, по
яким дані механізми часто виявляються неефективними. Нагадаємо, що ця
проблема виникла більше 10 років тому, коли в якості носія BIOS почали
використовувати мікросхеми Flash ROM, що допускають перезапис вмісту без
фізичного втручання в комп'ютер. Таким чином, можливість оперативної
перезапису (поновлення) BIOS, привела до побічного ефекту - ризику його випадкового
або навмисного спотворення.

Здавалося б, сьогодні на цю тему вже все сказано. Але час йде, з'являються
нові типи мікросхем Flash ROM і інтерфейсів для їх підключення. це
супроводжується появою нових методів захисту BIOS від несанкціонованого
спотворення, і, звичайно, нових вразливостей. У раніше опублікованому матеріалі,
посилання на який наведено на початку статті, дана тема розкрита на
прикладі платформи, що використовує мікросхему SST 49LF004A, підключену до
інтерфейсу LPC (Low Pin Count). Сьогодні, йому на зміну прийшов інтерфейс SPI
(Serial Peripheral Interface)
. Нагадаємо, що для перезапису вмісту
мікросхеми BIOS, програма повинна взаємодіяти з двома блоками регістрів:
регістри інтерфейсу Flash ROM, розташовані в складі "південного моста" чіпсета і
регістри, що входять до складу самої мікросхеми Flash ROM. При переході від
інтерфейсу LPC до SPI, архітектура двох зазначених блоків істотно змінилася.
Тому є сенс розглянути взаємодію програм з мікросхемою BIOS,
механізми захисту і їх уразливості стосовно сучасних платформ.
Матеріал забезпечений прикладами на асемблері. Для експериментів використовувалася
материнська плата Gigabyte GA-965P-S3, побудована на чіпсеті Intel 965,
описаному в. В якості носія BIOS на даній платі використовується
мікросхема SST 25VF080B, описана в. Ця мікросхема має обсяг 8 Мегабіт
(1 Мегабайт) і підключається до інтерфейсу SPI. Деякі мікросхеми інших
виробників, що використовують той же інтерфейс, описані в. опис
інтерфейсу SPI приведено в. При взаємодії з контролером SPI, нам
потрібно використовувати механізми доступу до конфігураційного простору,
описані в документах.

Інтерфейс SPI: історична довідка

Як відомо, швидкодія мікросхеми постійного пам'яті
(Flash ROM), що використовується в якості носія BIOS, практично не впливає на
загальну продуктивність комп'ютера. Це пов'язано з тим, що при старті
материнської плати, BIOS переписується (або розпаковується) в оперативну
пам'ять Shadow RAM і при зверненні до BIOS в сеансі ОС, програми працюють з
оперативною пам'яттю, а не з мікросхемою Flash ROM. Тому, на відміну від
процесора, пам'яті, графічної підсистеми, еволюція яких супроводжується
зростанням продуктивності, мікросхеми Flash ROM і їх інтерфейси розвиваються в
іншому напрямку. Тут головними критеріями є зменшення вартості,
споживаної потужності і займаної площі на материнській платі. головний метод
досягнення цих цілей - зменшення кількості провідників між мікросхемою BIOS
і контролером, зазвичай входять до складу "південного моста" чіпсета. З точки зору
методу підключення мікросхеми BIOS, можна виділити три покоління материнських
плат:

1) На платах, що використовують шину ISA, встановлювалися мікросхеми постійних
запам'ятовуючих пристроїв з роздільними лініями адреси, даних і управління. при
цьому для кожного розряду адреси і даних, а також для кожного сигналу управління
(Читання, запис) був потрібний свій провід, точніше друкований провідник на платі.

2) З появою чіпсетів Intel 810, 815, на основі "хабів" архітектури,
шина ISA пішла в минуле. Ряд пристроїв материнської плати, раніше підключаються до
ISA (контролер гнучких дисків, порти COM і LPT, мікросхема BIOS), "переїхали" на
інтерфейс Low Pin Count або LPC, назва якого перекладається як "мале
кількість сигналів ". Сигнали адреси, даних і управління в цьому інтерфейсі
передаються по п'яти лініях (не рахуючи сигналів скидання, тактирования і ліній
харчування), в режимі мультиплексування в часі. Мікросхеми BIOS, використовувані
в таких платформах, іноді називають Firmware Hub або FWH. приклад програми
стирання і запису мікросхеми BIOS, наведений в раніше опублікованій статті
"Проникнення в BIOS ROM" N1 і N2 "призначений для таких платформ.

3) Починаючи з чіпсета Intel 945, до складу "південного моста" включений контролер
спеціалізованої послідовної шини Serial Peripheral Interface або SPI,
використовує передачу даних читання і запису, а також керуючої та статусної
інформації по однобітний послідовному каналу. Це дозволило використовувати
8-контактний корпус для мікросхеми BIOS. Дана стаття присвячена розгляду
саме таких платформ.

Відзначимо, що інтерфейс LPC також підтримується сучасними чіпсетами і
розробник материнської плати може використовувати для підключення мікросхеми BIOS
як LPC, так і SPI. Сфера застосування інтерфейсу SPI не обмежується
материнськими платами комп'ютерів. Уважний читач міг звернути увагу на
то, що через перехід до послідовного формату даних, кожен з описаних
інтерфейсів використовує більше тактів для виконання операцій читання і запису,
ніж його попередник, що загрожує зниженням швидкодії. Але цього не
відбувається, так як вказані обставини компенсується зростанням частоти і
оптимізацією форматів даних. Шина ISA працює на частотах 5-8MHz, LPC на
33MHz, SPI на 33-50 MHz.

Архітектура мікросхеми SPI Flash ROM

Мікросхеми SPI Flash, зокрема SST25VF080B, використовують три сигналу для
прийому і передачі даних. SCK (Serial Clock) - вхід для тактирования
переданих або отриманих даних. SI (Serial Input) - вхід для передачі
даних від контролера до мікросхеми, по цій лінії побитно передаються адреса,
дані для запису, і коди команд управління мікросхемою. SO (Serial Output) -
вихід для передачі даних від мікросхеми до контролера, по цій лінії побитно
передаються читаються дані, а також інформація про стан мікросхеми.
Контролер керує мікросхемою за допомогою команд, що ініціюють операції
читання і запису даних, стирання, читання ідентифікаторів мікросхеми, читання і
записи регістру статусу і т.п.

Призначення кожного з восьми контактів мікросхеми, опис всіх команд, а
також інші подробиці містяться в.

Архітектура контролера SPI

Контролер SPI, що входить до складу "південного моста" Intel ICH8, містить більше
20 регістрів управління і стану. Регістри адресуються в просторі пам'яті з
використанням технології memory-mapped I / O, розглянутої в раніше
опублікованій статті "Пристрої системної підтримки. Дослідницька робота
N ". Опис усіх регістрів і команд контролера SPI виходить за рамки
даної статті, розглянемо основні відмінності програмної моделі інтерфейсу SPI від
його попередника - інтерфейсу LPC, акцентуючи увагу на регістрах,
використовуваних при виконанні основних операцій - читанні ідентифікаторів, записи і
стирання Flash ROM.

Нагадаємо, що фізичний доступ до мікросхеми BIOS (не плутати з областю
Shadow RAM) здійснюється за допомогою вікна, що примикає до верхньої межі
діапазону 0-4GB. Наприклад, Flash ROM розміром 1 Мбайт буде доступний в діапазоні
FFF00000h-FFFFFFFFh. В платформах, що використовують інтерфейси ISA і LPC, через той
ж діапазон, при виконанні операцій стирання і запису виконується передача
команд і записуваних даних для мікросхеми Flash ROM, а також читання її
статусу. Платформа, яка використовує інтерфейс SPI, що розглядається в цій статті,
також підтримує читання вмісту мікросхеми BIOS через вказаний діапазон,
але для передачі керуючої та статусної інформації під час запису і стирання
Flash ROM, використовується інший метод доступу. Інформація для виконання циклу на
шині SPI (адреса і дані) записується в спеціальні регістри контролера SPI
(Flash Address і Flash Data відповідно), потім в регістр Software Sequencing
Flash Control передається команда на виконання циклу звернення до Flash ROM
(Читання або запису). Після цього, через регістр Software Sequencing Flash Status
можна визначити момент завершення операції і проконтролювати наявність помилок.
Дані, прочитані з Flash ROM, знаходяться в регістрі Flash Data.

В платформах з інтерфейсами ISA і LPC, передача команд виконувалася шляхом
прямого запису байта коду команди в адресний діапазон Flash ROM. інтерфейс SPI
використовує непрямий метод передачі команд за допомогою 8-байтного регістра
OpCode Menu. Кожен з байтів цього регістра зберігає код однієї з команд для
управління Flash ROM (запис, стирання, читання ідентифікатора і т.п.). для
запуску необхідної операції, програма повинна передати номер байта (від 0 до 7),
який містить код цієї операції. Цей номер передається в 3-бітному поле COP
(Cycle Opcode Pointer), яке є частиною 32-бітного коду, що записується в
регістр Software Sequencing Flash Control для запуску команди на виконання.
Блок регістрів OpCode Menu зазвичай инициализирует BIOS при старті платформи.
Розташування байтів кодів операцій в 8-байтним блоці залежить від реалізації BIOS
і може бути довільним, тому програма повинна просканувати даний блок і
визначити, під яким номером розташована в ньому необхідна команда. Цей номер і
буде використаний при заповненні поля COP.

Розглянемо використання регістрів Software Sequencing Flash Status і
Software Sequencing Flash Control докладніше. Регістр Software Sequencing Flash
Status має розрядність 8 біт і розташований по зсуву 90h щодо
базового адреси контролера SPI (SPIBAR + 90h). Регістр Software Sequencing Flash
Control має розрядність 24 біт і розташований по зсуву 91h. при
програмуванні контролера, до двох зазначених регістрів зручно звертатися однієї
32-бітної операцією читання або запису за адресою 90h. При цьому біти 0-7
відповідають регістру Software Sequencing Flash Status, а біти 8-31 - регістру
Software Sequencing Flash Control. Саме такий метод доступу використовується в
ассемблерних прикладах, які додаються до статті. Розглянемо призначення бітів в
відповідно до нумерації, описаної вище.

біт 0(SPI Cycle In Progress) - використовується для визначення моменту
завершення операції на шині SPI. "0" означає, що шина SPI вільна і програма
може запускати наступний цикл. "1" означає, що шина SPI зайнята, виконується
транзакція. Біт встановлюється і скидається апаратно, доступний тільки для
читання.

біт 1(Reserved) - не використовується.

біт 2(Cycle Done Status) - встановлюється в "1" апаратно, при
завершенні транзакції на шині SPI. Для скидання, програма повинна записати "1" в
даний біт.

біт 3(Flash Cycle Error) - встановлюється в "1" апаратно, якщо при
виконанні транзакції мали місце помилки: захист записи або спроба запуску
наступної транзакції до завершення попередньої. Для скидання, програма повинна
записати "1" в даний біт.

біт 4(Access Error Log) - встановлюється в "1" апаратно, якщо мали
місце спроби звернення до мікросхемі BIOS, що порушують права доступу до заданих
діапазонами адрес, запрограмованим у конфігураційних регістрах контролера
SPI.

біти 5-7

біт 8(Reserved) - не використовується. Як було показано вище, біти 8-31
розглянутого 32-бітного слова відповідає бітам 0-23 регістра Software
Sequencing Flash Control.

біт 9(SPI Cycle Go) - запуск транзакції на SPI. Запис "1" в цей біт
запускає виконання транзакції, тип і зміст якої визначаються
станом бітів 10-31 цього ж регістра.

біт 10(Atomic Cycle Sequence) - при передачі наказу на виконання
транзакції, запис "1" в цей біт забороняє зовнішніх подій втручатися в
процеси, що відбуваються на інтерфейсі SPI до тих пір, поки не будуть виконані три
фази: передача префиксной команди, передача основної команди і завершення
виконання основної команди.

Відзначимо, що таким чином реалізується один з механізмів захисту від
випадкового спотворення вмісту мікросхеми BIOS. Так звані префіксние
команди (наприклад, Write Enable) повинні передувати командам, що змінює
вміст мікросхеми (наприклад, Write, Erase). Отримавши код команди, що містить
"1" в даному бите, всі три фази контролер виконує апаратно, без
втручання процесора до завершення виконання основної команди.

біт 11(Sequence Prefix Opcode Pointer) - при використанні префіксних
команд (коли біт 10 встановлений в "1", см. вище), цей біт вибирає один з двох
байтів, який буде переданий в якості префиксной команди для мікросхеми SPI
Flash. При "0" вибирається молодший байт регістра Prefix Opcode Configuration
Register, при "1" - старший.

біт 12-14(Cycle Opcode Pointer) - це бітове поле вибирає один з
восьми байтів, який буде переданий в якості основної команди для мікросхеми
SPI Flash. Зазначені байти знаходяться в регістрі Opcode Menu Configuration
Register.

біт 15(Reserved) - не використовується.

біти 16-21(Data Byte Count) - задає кількість байтів даних для
операцій читання або запису даних. Кількість дорівнює значенню цього поля плюс 1.
Наприклад: 000000b = 1 байт, 111111b = 64 байта.

біт 22(Data Cycle) - Задає наявність байтів даних в команді. "0"
означає, дані відсутні (наприклад, в команді стирання), "1" означає, що
дані присутні (наприклад, в команді читання статусу, даними є
вміст регістра статусу).

біт 23(SPI SMI # Enable) - дозвіл формувати запит на переривання
System Management Interrupt після завершення транзакції, 0 = заборонено,
1 = дозволено.

біти 24-26(SPI Cycle Frequency) - задає частоту бітової
синхронізації при виконанні транзакції на SPI. Використовуються два значення
(Інші зарезервовані): 000b = 20MHz, 001b = 33MHz.

біти 27-31(Reserved) - не використовуються.

Відзначимо, що попереднє заповнення восьми байтів регістра Opcode Menu
Configuration Register і двох байтів регістра Prefix Opcode Configuration
Register виконує BIOS при старті платформи. Тому, при формуванні бітових
полів, які обирають код команди і код префікса, програма повинна просканувати
зазначені регістри і знайти, під яким номером у них знаходяться коди необхідних
операцій. Варіанти заповнення можуть бути різними, навіть серед материнських плат
однієї моделі, що використовують різні версії BIOS. Деякі утиліти перезапису
Flash змінюють вміст зазначених регістрів.

Детальний опис всіх регістрів і команд контролера SPI наводиться в.
Опис команд мікросхеми SPI Flash наводиться в. Інформація, викладена
вище, також проілюстрована асемблерними прикладами, що додаються до статті.

Механізми доступу до Flash ROM і захист записи

У загальному випадку, для ініціювання операцій стирання або перезапису мікросхеми
BIOS, програма повинна виконати чотири дії:

  1. Налаштувати регістри "південного моста" чіпсета, керуючі розміщенням
    мікросхеми BIOS в адресному просторі для забезпечення доступу до повного
    обсягом мікросхеми.
  2. Вимкнути режим захисту записи BIOS, що реалізується засобами "південного моста"
    чіпсета.
  3. Вимкнути режим захисту записи BIOS, що реалізується засобами мікросхеми
    Flash ROM.
  4. Передати команду стирання або записи мікросхемі Flash ROM.

Розглянемо докладніше ці процедури, механізми захисту, що перешкоджають їх
несанкціонованого виконання і, звичайно, уразливості цих механізмів.

Як було сказано вище, при виконанні операцій запису і стирання, програмний
доступ до мікросхеми SPI Flash здійснюється за допомогою регістрів контролера
SPI, без використання діапазону адрес, в якому доступний спосіб мікросхеми
BIOS. Тому перенастроювання чіпсета для доступу до діапазону FFF00000h-FFFFFFFFh
в даному прикладі не буде потрібно.

Захист записи, що реалізується "південним мостом" Intel ICH8 побудована за такою самою
схемою, як і в платформах попередніх поколінь, відрізняються тільки адреси
регістрів. Отже, процедура зняття цієї захисту подібна процедурі
розглянутої в попередніх публікаціях. Доступом до мікросхемі BIOS керує
8-бітний регістр BIOS_CNTL (його координати в конфігураційному просторі
Bus = 0, Device = 1Fh, Function = 0, Register = DCh). Біт 0 цього регістра (біт BIOSWE,
BIOS Write Enable) управляє дозволом запису в мікросхему BIOS, 0 = заборонена,
1 = дозволена. Біт 1 того ж регістра (біт BLE, BIOS Lock Enable) забезпечує
перехоплення несанкціонованого вимкнення функції захисту. Якщо біт BLE = 1, то при спробі
встановити біт BIOSWE = 1 буде генеруватися переривання SMI (System Management
Interrupt) з викликом спеціальної процедури, що входить до складу BIOS. Причому, якщо
BIOS при старті встановить біт BLE = 1, програмно обнулити його чіпсет не
дозволяє, режим перехоплення буде вимкнений тільки після апаратного скидання (по
сигналу RESET). Подробиці в.

Практика показує, що даний механізм "захисту від зняття захисту" зазвичай не
активується розробниками BIOS. У всіх материнських платах, досліджених
автором, біт BLE = 0, тому для зняття захисту записи досить встановити біт
BIOSWE = 1, ця операція не буде перехоплена.

Мікросхема Intel ICH8 також підтримує захист вмісту мікросхеми BIOS,
шляхом завдання адресних діапазонів, захищених від читання і (або) записи.
Теоретично, на базі даного механізму можна реалізувати ефективний захист,
так як заборона програмно включається процедурами BIOS при старті платформи, і
може бути знятий тільки при апаратному скиданні. Але і цей механізм зазвичай не
активується розробниками BIOS.

(Далі буде)

Джерела інформації


developer.intel.com.

1) Intel Low Pin Count (LPC) Interface Specification. Revision 1.1. Document
Number 251289-001.
2) Intel P965 Express Chipset Family Datasheet - For the Intel 82P965 Memory
Controller Hub (MCH). Document Number: 313053-001.
3) Intel I / O Controller Hub 8 (ICH8) Family Datasheet - For the Intel 82801HB
ICH8 and 82801HR ICH8R I / O Controller Hubs. Document Number: 313056-001.

Електронні документи, доступні на сайті
www.superflash.com або
ssti.com.

4) 1 Mbit SPI Serial Flash SST25VF010 Data Sheet. Document Number:
S71233-01-000.
5) 8 Mbit SPI Serial Flash SST25VF080B Data Sheet. Document Number:
S71296-01-000.

Електронні документи, доступні на сайті
winbond.com.tw.

6) W25X10A, W25X20A, W25X40A, W25X80A 1M-bit, 2M-bit, 4M-bit and 8M-bit
Serial Flash Memory with 4KB sectors and dual output SPI Data Sheet.

Електронні документи, доступні на сайті
macronix.com.

7) MX25L802 8M-bit CMOS Serial Flash EEPROM Data Sheet.

Електронні документи, доступні на сайті
datakey.com.

8) SPI EEPROM Interface Specification. Part Number 223-0017-004 Revision H.

Електронні документи, доступні на сайті
vtitechnologies.com.

9) SPI Interface Specification. Technical Note 15.

Електронні документи, доступні на сайті
pcisig.com.

Документи, на сайті pcisig.com доступні тільки для членів PCI
Special Interest Group. Скориставшись пошуковими системами, можна знайти
дані документи для вільного завантаження.
10) PCI BIOS Specification. Revision 2.1.
11) PCI Local Bus Specification. Revision 3.0.
12) PCI-to-PCI Bridge Architecture Specification. Revision 1.1.

Сподобалася стаття? Поділіться з друзями!