Різниця між прошивкою U-Boot та UEFI


1

Я читаю книгу (Освоєння вбудованого програмування Linux, 2-е видання). У главі про завантажувачі він пояснює процес завантаження з U-Boot та з програмним забезпеченням UEFI.

Схоже, кроки завантаження абсолютно однакові, за винятком того, що на останньому кроці U-Boot або UEFI вбудовується програмне забезпечення і завантажує в оперативну пам'ять зображення Linux.

То яка точна різниця? Чому можна вибрати U-Boot через UEFI або vica навпаки?


1
Це, мабуть, має багато спільного з тим, наскільки потрібна вам налаштування користувача у вашому завантажувачі. Uboot буде жорстко кодувати багато елементів конфігурації завантаження, таких як розташування ядра та параметри ядра тощо, хоча повний завантажувач UEFI, можливо, повинен бути трохи більш динамічним і мати можливість сканувати диски та місця завантаження.
Мокубай

Це дійсно залежить від того, що ви визначаєте як "останній крок". УЄФІ робить багато . U-Boot ні.
Даніель Б

@DanielB Чи можете ви дізнатися більше про деталі?
спалахування

Відповіді:


5

Специфікація UEFI описує API, який може відкрити прошивка. Цей API може використовуватися програмами та драйверами, завантаженими прошивкою.

Прошивка з відкритим кодом Das U-Boot містить часткову реалізацію специфікації UEFI. Повна реалізація з відкритим кодом пропонує TianoCore EDK II . Такі компанії, як Phoenix, пропонують прошивку UEFI із закритим кодом.

У 64-розрядної архітектурі ARM Linux-дистрибутиви Suse і Fedora використовують U-Boot для завантаження GRUB як програми UEFI з U-Boot, що в свою чергу завантажує і запускає ядро ​​Linux через дзвінки API UEFI. Сам Linux має заглушку UEFI, тому його можна запустити як додаток UEFI.

Специфікація UEFI визначає час виконання, яке залишається в пам'яті до перезавантаження системи. Виконання UEFI пропонує послуги, включаючи зміну змінних UEFI, завантаження нового мікропрограмного забезпечення та перезавантаження системи. Відповідний специфікації UEFI U-Boot також містить час виконання UEFI. Але на сьогоднішній день функціональність обмежується перезавантаженням системи.


3

Найбільша відмінність полягає в тому, що UEFI є по суті операційною системою, тоді як U-Boot є лише завантажувачем. U-Boot робить достатньо для того, щоб зробити систему завантажувальною та надає трохи додаткових даних для спрощення налагодження проблем із завантаженням. З іншого боку, UEFI надає великий набір API часу виконання, який робить MS-DOS здається простим у порівнянні, і на відміну від U-Boot, який значною мірою виходить з твого шляху після його виконання, UEFI тримається навколо.

Крім цього, існують відмінності у ліцензуванні (U-Boot трохи відкритіший, ніж UEFI), відмінності у форматі файлів (U-Boot використовує користувацький, мінімалістичний формат зображення, UEFI використовує виконувані файли PE32 +) та відмінності у фактичному стані система при передачі даних та засоби конфігурації (UEFI часто має вбудовані параметри конфігурації мікропрограмного забезпечення, тоді як U-Boot зазвичай потребує відновлення мікропрограмного забезпечення та його повторного прошивання).


UEFI - це API, а не операційна система. І EDK II, і U-Boot є завантажувачами, що реалізують цей API. Обидва мають ліцензію відповідно до GPL 2.
Xypron

@Xypron UEFI - це справді API, але це ОС в чистому сенсі. Простий факт полягає в тому, що UEFI забезпечує більшу частину функціоналу, який робить будь-яка сучасна ОС, тому це функціонально операційна система. Крім того, востаннє я перевірив, U-Boot жодним чином не реалізує UEFI (деякі функції, які вони надають, схожі ,, але це не ті самі API).
Остін Хеммельгарн

@ austin-hemmelgam Реалізація UEFI в U-Boot заснована на офіційній специфікації. З 2017 року GRUB можна запустити як корисне навантаження UEFI. Дивіться події17.linuxfoundation.org
sites/
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.