LINUX.ORG.RU
решено ФорумTalks

[EFI] [Костыли] Кто там ещё считает, что UEFI — это не костыль?

 ,


0

1
# strings -n 5 /mnt/cdrom/efi/boot/bootx64.efi | head -5
!This program cannot be run in DOS mode.
.text
`.data
.reloc
(memdisk)/boot/grub

# file /mnt/cdrom/efi/boot/bootx64.efi 
/mnt/cdrom/efi/boot/bootx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), for MS Windows

Обратите внимание на первую строчку. Ну и на вывод file конечно.

И кто ещё будет утверждать что UEFI — это не ненужное костылище?

А диск это от Ubuntu Natty Amd64, откопал его потому что rw и я собираюсь записать Оцелота (для пробы).

Какого хрена вроде как новый продвинутый стандарт требует упоминания мёртвой говноОС?

★★★★★

Последнее исправление: Xenius (всего исправлений: 1)

Костыли - это модно и молодёжно. Вливайся в движуху! Запиливай костыли!

CYB3R ★★★★★
()

У кого есть винда? Запускаем, отписываемся, не стесняемся.

Cancellor ★★★★☆
()

Кто бы сомневался. Потом всех будут судить за использование PE формата...

robot12 ★★★★★
()

> Какого хрена вроде как новый продвинутый стандарт требует упоминания мёртвой говноОС? А почему ты сразу решил, что это стандарт такой, а не хитрость линуксового uefi загрузчика?

Вообщем пока не покажешь ссылку на стандарт - не зачтено.

snizovtsev ★★★★★
()
Ответ на: комментарий от snizovtsev

> Вообщем пока не покажешь ссылку на стандарт - не зачтено.

«Windows - это стандарт» (c) //troll mode

pacify ★★★★★
()

Стандартная PE-шапка, а ты ожидал ELF ?

У тебя просто strings неправильный - мой пропускает PE-шапку.

З.Ы. Единственная проблема с UEFI boot - в отличие от биоса, пусть к источнику загрузки хранится в efivars, а не первых байтах жёсткого диска - при серьёзном сбое или перепрошивке инфа может потеряться, и UEFI будет пытаться грузить X:/EFI/{boot,microsoft}/bootx64.efi вместо X:/EFI/gentoo/grubx64.efi :)

Adjkru ★★★★★
()
Ответ на: комментарий от Adjkru

> Стандартная PE-шапка

Но это же формат исполнимых файлов Шиндошс. Какого фига?

а ты ожидал ELF ?


Думаю, правильней было бы что-то вроде формата KolibriOS или DOS-овского com, то есть просто сырые бинарные данные. Но можно было и ELF, да, ибо самый универсальный формат для исполнимых объектов (например в шиндошс для объектов используется формат COFF, а не PE)

пусть к источнику загрузки хранится в efivars


Это типа CMOS?

UEFI будет пытаться грузить X:/EFI/{boot,microsoft}/bootx64.efi вместо X:/EFI/gentoo/grubx64.efi


microsoft?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Deleted

> А это точно не STUB шапка? Правда зачем она там тогда.

Что за STUB-шапка? Факт в том что совершенно не связанная с мелкомягкими и DOS система вынуждена подстраиваться под шиндовс. До EFI в BIOS такого не было.

Кстати, а вообще, правильно ли говорить что UEFI — это не BIOS? Мне казалось, что BIOS — это общее слово для самого начального загрузчика, который должен загрузить всё остальное с носителя — Basic Input/Output System и значит UEFI — тоже разновидность BIOS.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Lordwind

> С такой логикой можно сказать что вся жаба большой костыль и андроид не нужен.

А что, где-то в стандарте Java-файлов упоминается Microsoft, Windows или DOS?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Вообще я сам не понимаю, зачем оно надо. Достаточно было простой пускалки загрузчика ОС. Теперь имеем много геморроя.

Quasar ★★★★★
()
Ответ на: комментарий от Xenius

Windows EXE'шники все несут в себе эту хрень, которая будучи запущенной в DOS'е выдаёт это известное сообщение про DOS режим (или похожее). Самой Windows программе это не нужно.

Deleted
()
Ответ на: комментарий от Xenius

да, разновидность, просто грузит по-другому. ну окей, програмы efi в урезаном формате pe. что плохого? ну под шиндоус их можно запустить или под вайн. был бы другой формат- окромя как c uefi-shell их нельзя было бы просто запускать и да объясните тоже нубу где эти efivars находятся, где находится БЛДЖАД acpi таблицы, а конкретно dsdt(?) с этим гребанным сликом? прошивка firmware без slic ВНЕЗАПНО привела к тому, что slic остался.

parrot
()
Ответ на: комментарий от Xenius

> Это типа CMOS?

А вот хз, где они хранятся, efivars эти, но после обновления биоса оно таки сбросилось.

microsoft

Думаешь в биосах нет заточек под мс? та же DSDT. да и почему нет? uefi должно же что-то по умолчанию попытаться загрузить (прежде чем включать bios emulation). а это обычно либо boot/boot.efi, либо microsoft/boot.efi

Adjkru ★★★★★
()

Ну да. Пацаны замаскировались под DOS exe. А Зачем? Затем чтоб их не DDOSили идиоты. А тут мы! Так и объявим всему миру - нельзя разговаривать с DOS юзерами. format.com с: /yes

demmsnt
()
Ответ на: комментарий от Xenius

>Думаю, правильней было бы что-то вроде формата KolibriOS или DOS-овского com

DOS-овского com

Благодаря этому говну мы имеем ошибки в детектировании file текстовых файлах. Спасибо, PE лучще. Тем более что у этого формата нет особых проблем (напоминаю: сейчас уже не 90е и не 00е, главный враг свободы давно не мелкомягкие, а гугль и прочий веб и далее по Столлману).

x3al ★★★★★
()
Ответ на: комментарий от Deleted

> Windows EXE'шники все несут в себе эту хрень, которая будучи запущенной в DOS'е выдаёт это известное сообщение про DOS режим (или похожее). Самой Windows программе это не нужно.

И теперь объясни нафига это нужно, учитывая что DOS давно уже никто не использует, в серьёз надеясь на то что под ней запустится хотя бы половина случайно выбранных exe-файлов.

Ясно же что это костыль, и если его наличие в виндовых программах объяснимо, то нафига оно в совершенно новом формате, который должен работать сразу в защищённом режиме и полностью заменять традиционный BIOS?

Из одного факта что это требуется стандартом UEFI (а не требовалось бы — стали бы это пихать в GRUB?) можно сделать вывод, что UEFI — полная фигня. А учитывая наличие в нём зондов — уж лучше тогда взять BIOS и как-то прикрутить поддержку больших винтов.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Adjkru

> uefi должно же что-то по умолчанию попытаться загрузить (прежде чем включать bios emulation). а это обычно либо boot/boot.efi, либо microsoft/boot.efi

boot/boot.efi на активном/загрузочном разделе (или флаг активности из GPT убран совсем?) — это было бы нормально и логично (в конце концов, в GNU/Linux оно тоже называается /boot), хотя лучше бы просто /boot.efi — ибо нафиг вложенность, а если microsoft/boot.efi — то это уже как-то ну совсем не нейтрально, реклама говнософта какая-то.

Думаешь в биосах нет заточек под мс? та же DSDT


К сожалению, есть, но там хотя бы это не торчит наружу.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от x3al

> главный враг свободы давно не мелкомягкие, а гугль

Пока мокрософт держит долю больше 50% компов простых пользователей, его никак нельзя оправдывать

мы имеем ошибки в детектировании file текстовых файлах


Пусть по расширению определяет.

Но да, если учитывать этот резон, то лучше формат как у исполнимых файлов KolibriOS, там есть ключевая строчка MENUET01 кажется, и бинарные поля. Минимальный оверхед на заголовок.

Естественно, в EFI-файлах должно быть написано что-то вроде 'EFI'+какие-то ещё данные.

Или ты хочешь сказать, что file определяет efi-файлы как исполнимые файлы для шиндовс — это нормально?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>Ясно же что это костыль, и если его наличие в виндовых программах объяснимо, то нафига оно в совершенно новом формате, который должен работать сразу в защищённом режиме и полностью заменять традиционный BIOS?

Собственно, я тоже этому удивляюсь.

Deleted
()
Ответ на: комментарий от Xenius

>>И теперь объясни нафига это нужно, учитывая что DOS давно уже никто не использует,

Кое-где используется, к сожалению.

kott ★★★★★
()
Ответ на: комментарий от kott

> Кое-где используется, к сожалению.

Но я думаю что только для запуска заранее выбранных программ типа fdisk, disk-edit и тд, требующих полного доступа к железу, ну и может быть какого-то старья, которое ещё работает, так что нет смысла переписывать.

А если именно так, то пользователи DOS уже не надеятся на то что случайно выбранная программа запустится, так что надпись «эта программа не может быть запущена в DOS» совершенно излишняя даже пожалуй уже для первых PE-файлов (NE которые для 3.11 — другой случай)

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>Или ты хочешь сказать, что file определяет efi-файлы как исполнимые файлы для шиндовс — это нормально?

Ну:
% file /System/Library/CoreServices/boot.efi
/System/Library/CoreServices/boot.efi: Universal EFI binary with 2 architectures, x86_64, i386

kostian ★★★★☆
()
Ответ на: комментарий от kostian

Вот это ещё более грустно. В одном контейнере, заведомо не запускающимся под досом - два PE-файла с «This program cannot be run in DOS mode» :)

Adjkru ★★★★★
()

>Какого ... требует упоминания

Потому, что в оригинале этот режим назывался «real mode», если написать так сегодня - никто не поймёт, т.ч. вполне адекватная замена.

DonkeyHot ★★★★★
()
Ответ на: комментарий от DonkeyHot

> Потому, что в оригинале этот режим назывался «real mode», если написать так сегодня - никто не поймёт, т.ч. вполне адекватная замена.

Может дело в том что DOS не умеет загружать 32-битные файлы и даже не умеет сказать о том что файлы которые загружены не работают?

Мне интересно, а если эльфовский файл переименовать в exe и попробовать запустить под DOS, что будет?

Но вообще, вопрос в том, почему EFI ориентируется на DOS — уже в общем-то мёртвую операционку?

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

Мне интересно, а если эльфовский файл переименовать в exe и попробовать запустить под DOS, что будет?

Зависание, с большой долей вероятности.

вопрос в том, почему EFI ориентируется на DOS

Если бы ориентировался, то там был бы полезный код, а это просто стандартный stub который ставит компилятор.

PE файл имеет свою структуру. Очень вкратце я ее постараюсь описать. Вначале файла идет DOS заголовок, который включает в себя DOS MZ-заголовок и DOS-stub. DOS-stub, фактически, является полноценным exe, котоpый запускается опеpационной системой, не знающей о PE-фоpмате. Обычно в этом случае он пpосто отобpажает стpоку вpоде «This program cannot be run in DOS mode» или типа того =) Если же ОС - Windows, то DOS-stub не выполняется. Далее идет PE-заголовок

JustGuest
()
Ответ на: комментарий от JustGuest

Да знаю я что такое DOS-stub, мог бы и не цитировать.

Вопрос в том, нафига они используют формат богомерзкой ОС, когда есть православный ELF, например, не говоря уже об a.out и возможности придумать свой формат?

Xenius ★★★★★
() автор топика

А когда x86 был без костылей? Всё нормально, расслабьтесь и получайте удовольствие.

GotF ★★★★★
()
Ответ на: комментарий от JustGuest

> Для винды больше драйверов?

Причём здесь драйвера. Это исполнимые файлы EFI, они вообще не должны быть завязаны на ОС.

Xenius ★★★★★
() автор топика
Ответ на: комментарий от Xenius

>Но это же формат исполнимых файлов Шиндошс.

Это не совсем так. Формат PE - расширение COFF. А он в свою очередь использовался в System V (до SVR4).

Какого фига?

Потому что EFI разрабатывался во времена оголтелого wintel'а.

Macil ★★★★★
()
Ответ на: комментарий от Xenius

EFI Shell разве не использует PE формат?

Ну и:
The EDK (EFI Developer Kit) includes an NT32 target, which allows EFI firmware and EFI applications to run within a Windows application. But no direct hardware access is allowed by EDK NT32. This means only a subset of EFI application and drivers can be executed at the EDK NT32 target.

JustGuest
()
Ответ на: комментарий от Xenius

>И теперь объясни нафига это нужно, учитывая что DOS

Ты забываешь подробности. NT появилась в 93-м году, и в те времена мера была вполне-себе оправданной. А формат вот остался.

Macil ★★★★★
()
Ответ на: комментарий от JustGuest

Так что все владельцы мамок с EFI принудительно получают ещё и маленькую виндоподобную систему, лол.

JustGuest
()
Ответ на: комментарий от JustGuest

Забавно:

http://www.rom.by/book/EFI_Inside

CAR - не имеет никакого отношения к машинам. Это есть режим работы системы - «Cache as RAM», когда кэш используется как память. Размер такой «халявной» памяти равняется объёму кэша второго уровня делённому на ассоциативность. Например, для Core 2 Duo это поулучится 2Мб / 8 = 256кБ (для каждого ядра отдельно) - «выше крыши».
Именно поэтому, в частности, последним идёт выключение кэша - ведь он должен «работать памятью».

JustGuest
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.