LINUX.ORG.RU

Поддержка FatELF в ядре

 , ,


1

0

Райан Гордон в рассылке LKML представил патч, осуществляющий поддержку нового формата исполняемых файлов.

FatELF — это формат компоновки, позволяющий хранить в себе набор ELF бинарников под разные архитектуры, аналог технологии Universal Binary в MacOS X. Этот формат позволяет объединять в себе бинарные файлы, отличающиеся разными OS ABI, порядком байт, размером машинного слова и архитектурой процессора. Этот формат поддерживается преимущественно в среде GNU/Linux, но может быть использован и на других unix-like системах, например на BSD, Solaris и т.д.

Основные достоинства данного формата:

  • Дистрибутивы ОС могут иметь один единственный инсталлятор под все доступные платформы при наличии достаточного дискового пространства.
  • Нет необходимости иметь отдельные каталоги /lib, /lib32, /lib64.
  • Сторонние разработчики могут облегчить себе жизнь, публикуя только один deb/rpm пакет под все архитектуры.
  • Можно будет создавать плагины для браузеров и модули ядра, работающие на всех платформах.
  • Возможность создания приложений, бинарные файлы которых могут работать на Linux и FreeBSD без лишнего слоя совместимости.

Оригинальное письмо в рассылке

>>> Сайт FatELF



Проверено: Aceler ()

Ответ на: комментарий от jackill

>Пойди в жопу.
>
>Юникс-подобные - легитимный термин для систем, реализующих posix-стандарт.
>jackill ***** (*) (23.10.2009 14:47:12)

Сам придумал этот термин? или вычитал на википедии? Муахахаха, мудилкин

- Я своему сыну покупаю памперсы Хаггис, они стоят дешевле да и качество нормальное.
- А я своей 12-летней дочке покупаю олвейс!

ещё один пример

- Ты ездил на джипе BMW X5, вот это машина! Даа...
- Не, джипы Porsche Cayenne круче, у них мотор мощнее.

Термин UNIX-like выдумали для того, чтобы продвигать свои студенческие подделки вроде Linux, 386BSD (в последствии NetBSD и FreeBSD). Нет такого слова и понятия: "UNIX подобная система". Посикс есть посикс, его не надо сюда приплетать, также стоит отметить что Linux не является POSIX совместимой, и никогда им не станет. Частичная совместимость есть в стандартах POSIX - полной нет.

Pampers - торговая марка. Jeep - торговая марка. Почему тогда вы называете продукты/вещи/средства гигиены защищенной торговой маркой другого производителя? Читайте http://www.unix.org/tmug2.pdf там даже в картинках для особо долб^W разъясняется какие формы допускают упоминания марки UNIX, а какие запрещают. Напротив, UNIX-like стоит крест :-)

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

Угумс, сравниваем

В красном углу ринга - самообновляющийся fatelf (ну или пара - клиент и обновлялка), изготавливаемый разработчиком

В синем углу ринга - зоопарк дебов, рпмок, ебилдов-слакбилдов, которые, хоть и собираются где-нибудь на билдсервисе, так или иначе требуют мантейнера. А ещё к этому добавляем необходимость синхронизировать репозиторий при каждом запуске игры или каждую ночь.

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

>Ты unix от unix-like отличаешь? У соседа вон машина
>тоже mercedes-like (колес и дверей ровно столько же),
>а зовется она почему-то "жигули". И на звание мерса не претендует.
>shutty (*) (23.10.2009 17:06:10)
>

Ты прочитай официальный документ, а потом умничать пытайся.
Владелец торговой марки в праве наложить __любые__ ограничения, в данном конкретном случае The Open Group запрещает использовать термин UNIX-like и многие другие.

anonymous
()

Появятся универсальные и мультиплатформенные вирусы, которые будут скачивать обновления опять таки мультиплатформенные?

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

You are an idiot, sir

По той же методе сейчас работает Heroes of Newerth, но без fatelf - там два четыре бинаря и скрипт

#!/bin/sh

# change to the directory where the script is located
dir="$0"
name=`basename "$dir"`
if [ "$name" = "$dir" ]; then
OIFS=$IFS
IFS=:
for path in $PATH; do
if [ -x "$path/$name" ]; then
dir="$path/$name"
break;
fi
done
IFS=$OIFS
fi
while [ -L "$dir" ]; do
dir=`readlink "$dir"`
done
cd "`dirname "$dir"`"

# launch the appropriate binary
if [ "$(uname -m)" = "x86_64" ]; then
./hon-x86_64 "$*"
else
./hon-x86 "$*"
fi

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

>а ничего, что сейчас ничего не "самообновляется"?

Это ты сам придумал или тебе кто-то сказал? Клиент скачивает обновления, если есть и перезапускается

Gary ★★★★★
()

Ну и чё, какие мысли по этому поводу? Это грустно или весело?

:)

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

>>а ничего, что сейчас ничего не "самообновляется"?

>Это ты сам придумал или тебе кто-то сказал? Клиент скачивает обновления, если есть и перезапускается Gary ** (*) (23.10.2009 23:34:38)

Не сиди под рутом: известно кем станешь.

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

> Нет такого слова и понятия: "UNIX подобная система" > Pampers - торговая марка. Jeep - торговая марка

Ты сам себе противоречишь. Людям класть на эти ваши торговые марки, даже если их владельцы судятся попытаются (вспомним нетбук). Вон в "Популярной механике" даже постоянный раздел есть на последней страничке - про торговые марки, которые стали уже давно нарицательными. Так и тут - не зависимо от того что ты там себе возомнил, Linux и BSD - это UNIX-Like. Точка. Не нравится - можешь жаловаться в ЮНЕСКО.

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

> IMHO не нужно. Кроме MacOS этим вроде больше никто не пользуется, и я думаю это не даст особого профита. То, что открыто и не умерло, почти всегда можно пересобрать под нужную архитектуру.

А компилировать кто будет? Пользователи?
Они же пользователи, а не программисты.

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

Уныло читать местное ламерьё :/ По делу - очередная убогая поделка ничего не решает. Понятно, что это нужно только для проприетарщины, и тут юзерам никакого профита - в любом случае качать и обновлять бинарники, только с FatELF в разы больше. Авторам софта тоже никакого профита - собирать все тот же зоопарк бинарников.

По сути FatELF - in-kernel tar для бинарников. Ублюдская идея, а Иккулуса надо предать анафеме вслед за Мигелем.

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

>А компилировать кто будет? Пользователи? Они же пользователи, а не программисты.

readme (надо читать мануалы, а не бегать в сервисы, предварительно спалив девайс)

Пароль рута тоже теперь уберем? ...зверское неудобство! Или может быть ОС сама пусть за вас играется в игры и работу делает? Ну и на... вы тогда сдались? Понаехало мелкомягких.

Програмистам лишний геморой: собирать всеравно все бинарники под разные варианты. Никто не мешает сейчас выкладывать 6 бинарников под разные дистры. Не делают свиньи!!!! или кто то другой дурак?

Юзерам лишний геморой: качать то же самое только раза в полтора-два дольше (в зависимости от типа приложения)

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

> Не будьте такими пессимистами! Как минимум это позволит создать универсальные инсталляторы софта, в том числе и свободного. Не уверен что в таком формате можно делать софт, а инсталлер в самый раз: вставил диск, а там отработал авторан и под любой ОС поднялся ^_^ > Когда-нибудь вы это оцените...

Install anywhere писан на Java и стартует где надо. сабж не нужен.

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

>По голове себе постучи :)
Предлагаю все же включить мозг и подумать что случится с таким скриптом, когда появится обратносовместимая с x86_64 (или любой другой) архитектура, которая не была предусмотрена разработчиком инсталятора.

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

> Начиная с того что библиотеки именуются иногда по разному... и заканчивая тем что средства и системы защиты в дистрах (AppArmor, Selinux...) они как бы в разных дистрах разные...уются иногда по разному

1. библиотеки именуются одинаково, иначе это разные библиотеки

2. apparmor, selinux и прочие работают в ядре, и от библиотек не зависят

3. а вам надо подтянуть знание матчасти

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

Вообще, в криворукой синхронизации репозиториев надо винить разработчиков синхронизации. Не осилили они diff видать...

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

Я всё-таки так и не могу понять, чем FatELF так удобен (кроме безболезненного перехода с одной архитектуры на другую, как и было в Mac OS, и чего-нибудь подобного)?

Как это облегчит распространение программ? Тем, что можно будет предоставлять только один пакет? Всё равно нужно собирать и тестировать на всех архитекурах. Не думаю, что пользователю так трудно выбрать для загрузки свою архитектуру, её название можно уже и выучить :)

А как это поможет с обновлением? Не проще ли предоставить несколько репозитариев (под разные платформы), где будут расположены пакеты игры: библиотеки, ресурсы (возможно, тоже поделённые), разные скрипты окружения и т.д. Потом просто тянуть обновления с этого репозитария.

Вообще-то идея хорошая и уже многое сделано, но мне никак не представляется её массовая необходимость.

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

> Владелец торговой марки в праве наложить __любые__ ограничения, в данном конкретном случае The Open Group запрещает использовать термин UNIX-like и многие другие.

A student said to Master Foo: “We are told that the firm called SCO holds true dominion over Unix”.

Master Foo nodded.

The student continued, “Yet we are also told that the firm called OpenGroup also holds true dominion over Unix”.

Master Foo nodded.

“How can this be?” asked the student.

Master Foo replied:

“SCO indeed has dominion over the code of Unix, but the code of Unix is not Unix. OpenGroup indeed has dominion over the name of Unix, but the name of Unix is not Unix”.

“What, then, is the Unix-nature?” asked the student.

Master Foo replied:

“Not code. Not name. Not mind. Not things. Always changing, yet never changing”.

“The Unix-nature is simple and empty. Because it is simple and empty, it is more powerful than a typhoon”.

“Moving in accordance with the law of nature, it unfolds inexorably in the minds of programmers, assimilating designs to its own nature. All software that would compete with it must become like to it; empty, empty, profoundly empty, perfectly void, hail!”

Upon hearing this, the student was enlightened.

> ESR, "The Art of Unix Programming"

***

Честно говоря, не думаю, что вы поймёте, ну да ладно...

anonymous
()
Ответ на: комментарий от no-dashi

> 1. библиотеки именуются одинаково, иначе это разные библиотеки

Ваша неправда. даже в рамках одного дистра библиотеки могут менять свое название: впихнуть "1" где нибудь посреди названия и т.д. На Личном опыте пару раз такое безобразие наблюдалось (в рамках одной и той же архитектуры). Про разные дистры даже речь не идет.

Про зависимости - понятно что в таких случаях происходит.

anonymous
()

Мне кажется, не нужно.
Это как смесь велосипеда, роликов, мотоцикла, автомашины, танка и вертолета. и с двумя дополнительными ногами.

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

>Linux и BSD - это UNIX-Like. Точка. Не нравится - можешь жаловаться в ЮНЕСКО. >anonymous (*) (23.10.2009 23:48:28) >

Ты не человек, ты человеко-подобная обезьяна. Можешь жаловаться в ЮНЕСКО.

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

Чего-то ты тугой сегодня. Простенькое видео смотрим на ARM, сложный потяжелее на более мощном x86_64. Бинарник запускается один, нужна только обвязка для того, чтобы переключать его на разные ядра в зависимости от задачи.

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

> Хотите киношку - покупайте аппарат на ARM Cortex с DSP.

Типично виндузячий ответ, ты не находишь?

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

> Не думаю, что пользователю так трудно выбрать для загрузки свою архитектуру, её название можно уже и выучить :)

Зря.

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

>Чего-то ты тугой сегодня. Простенькое видео смотрим на ARM, сложный потяжелее на более мощном x86_64. Бинарник запускается один, нужна только обвязка для того, чтобы переключать его на разные ядра в зависимости от задачи. Aceler ***** (*) (24.10.2009 0:59:34)

и покупаем ноут с 2-я камнями ?разной? архитектуры и разными наборами логики под них (вы сами будете гибридную логику разрабатывать?), с висящими 2-я исполняемыми кодами в оперативке (а как же - 2 логики работают ОДНОВРЕМЕННО - имхо я тоже такую траву хочу, чтобы логика была гибкой и всемогущей) и прочими прелестями, не говоря о "догадайся тупорылый ноут что за камень я хочу".

В каком милениуме монстрогибрид ожидать?

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

> В каком милениуме монстрогибрид ожидать?

Интересней всего вопрос как на таком уроде будет работать ОС. :) Ведь это получается должны работать одновременно два экземпляра ядра под разные архитектуры. Ни одна ОС так не умеет, это ведь будет не SMP, и наде не NUMA. Бред это, короче говоря.

Лично мне очень нравится идея сопроцессоров в ARM. Центральный процессор -- экономичный и сравнительно медленный -- исполняет код ядра и приложений. Для тяжелых задач типа декодирования видео будится более мощный сопроцессор, который берет на себя исполнение части кода "тяжелого" приложения. Собственно говоря, так и делают в настоящее время в продвинутых смартфонах.

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

>Как бы там не пыжились красноглазые фанатики, пока на линупс не прийдет серьезная проприетарщина, он будет в жопе.

Не надейся: ты с остальными хомячками в жопе останетесь как и раньша, и гостей не жди.

По теме: идея не нова, реализация её в Linux назревала в любом случае - хотя бы потому, что эта реализация не составляет большого труда. Не вижу никаких проблем для существования в системе, скажем, glibc и ещё нескольких системных библиотек в варианте, например, x86_64/x86_32 - тогда в 99% случаев не придётся устраивать биарчевый срач в системе (как это делается сейчас в дистрибутивах Linux и в горячё любимой a3 и другими "домохазяйками" венде)

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

>Предлагаю в один файл запихнуть весь Debian под все платформы всех версий.

У меня так и есть. Файл называется /dev/sdd1

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

Конечно бред.

я пока даже не уверен как это вообще реализовать можно: сугубо теоретически.

вот и спрашиваю когда это чудовище ждать на свет.

Как сопр... нетбукам эт да: мощность там не впечатляет. хочется что то большее чем сидеть в инете. Но мне кажется проще допилить сами камни (с точки зрения затрат и себестоимости).

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

>Лично мне очень нравится идея сопроцессоров в ARM. Центральный процессор -- экономичный и сравнительно медленный -- исполняет код ядра и приложений. Для тяжелых задач типа декодирования видео будится более мощный сопроцессор, который берет на себя исполнение части кода "тяжелого" приложения. Собственно говоря, так и делают в настоящее время в продвинутых смартфонах.

в принципе идея стара уже, просто сейчас спохватились о целесообразности выноса специфических задачь из цп, поскольку его гибкость не идет на пользу производительности. 3dlabs помнится одна из родоначальниц, тот же cell или обещаный бульдозер.

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

> В красном углу ринга - самообновляющийся fatelf (ну или пара - клиент и обновлялка), изготавливаемый разработчиком

Да что ты? Неужели разработчик будет заставлять меня сидеть под рутом? Или бинари в хомяк класть, что некошерно?

> В синем углу ринга - зоопарк дебов, рпмок

Какой зоопарк? Вменяемые разработчики подключаемые к пакетным менеджерам репозитории освоили давно, даже проприетарщики (адоб, опера etc).

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

> Предлагаю все же включить мозг и подумать что случится с таким скриптом, когда появится обратносовместимая с x86_64 (или любой другой) архитектура, которая не была предусмотрена разработчиком инсталятора.

Выйдет обновление инсталлятора? :)

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

>С достаточных распространением FatELF появляется реальная, а не гипотетическая в каком то своем вакууме, угроза вирусных эпидемий в линуксе. Почему? Если в данный момент это технически довольно трудно... То с FatELF всё будет куда проще.

Никуда не проще. Сейчас, там где требуется поддержка x86_32 на x86_64 и так есть необходимый набор x86_32-библиотек и x86_32-программы выполняются. Или вы думаете, что "вирусу" для выполнения нужно что-то кроме 32-битной glibc в системе?

А там где нужна параноидальная безопасность - выключается поддержка 32-битных elf'ов в ядре и в конфиге пакетного менеджера ставиться флажок StripForeignBinary=1 и 32-битные куски ELF'ов вообще не попадут в систему (или ещё проще - изначально не подлючены MultiArch репозитарии)

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

>Чтобы сделать супербинарник под 100 архитектур, ему все равно придется в 100 раз больше компиллить и линковать, чем для сборки бинарника под одну архитектуру. Пусть уж лучше вместо этого 100главого бинарника сделает 100 нормальных.

Всё верно. А потом из 100 готовых бинарников можно сделать 101-й Multiarch бинарник (ничего не перекомпилируя) и положить его в ОТДЕЛЬНУЮ ветку репозитария, который вам лмчно - нафиг не нужен, а тот, кому он нужен - подключит в /etc/apt/sources.list

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

>Надо сказать, это единственная реальная проблема, которую решает новый формат.

Нет никаких проблем. Это просто фича, с узкой областью применения. Но от этого она не перестаёт быть полезной для этой узкой области.

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

>Запрашивает Миша Рыцаревъ: интересно, а не позаимствуют-ли что-нибудь из этого производители винды? А когда это нововведение появится? А будет-ли что из этого в софте под винду и другие ОС?

С подобными запросами обращайтесь к своему наркодиллеру: в Micro$oft

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

>А что, грядёт конвертор FatELF в кошерный ELF под конкретную платформу

Сходи по ссылке и пори чушь

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

>А на нетбуках?

Запросто. Ты только порнуху со своего нетбука вынеси (хотя бы частично) - и всё поместится

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

>когда толпа лоровцев начинает безапелляционно негодовать - это верный признак того, что идея стоящая и будет внедрена. :)

Так негодует-то только слакварная школота, у которых Linux только для понтов установлен, а сидят-то они 90% времени под вендой

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

>А затем по вкусу можно переустановить все пакеты в тонкие бинарники, если хочется сэкономить место.

Зачем переустанавливать? Их можно по-месту пострипать

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

>Да а в случае с FatELF ПО гарантированно заработает...

Дурачёк:) Учись или лечись!

Led ★★★☆☆
()

Ну если все такие ОС не называть UNIX-подобными, то как же тогда их звать? "частичноPOSIXсовместимые"???

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