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 ()
Ответ на: комментарий от I-Love-Microsoft

> Нет. Не так. Оценки "дурь, глупые" - не объективны. Сейчас, чтобы запустить сторонний исталлятор в 100% случаев требуется менять всяческие флаги. Пользователь, он почитает, мануал, найдет что где и как делать, да еще чтобы именно для его DE. Только вопрос - ради чего? Чтобы почувствовать себя молодцом?

Нет, пользователю нужно научиться запускать пакетный менеджер и пользоваться в нем поиском.
Плюсы:
- нет разброда среди инсталляторов;
- пакет проверен мэтнейнером, вероятность "закладок" существенно снижается;
- пакет установится со всеми необходимыми зависимостями;
- весь софт обновляется в один "клик".

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

> Можно развить эту идею дальше -- в fat binary запихивается несколько бинарей одной архитектуры, но собранные с оптимизацией под разные процессоры. Например для Intel Atom, Intel Core и AMD. При инсталляции пакета ненужные архитектуры можно вырезать, таким образом не будет впустую расходоваться место на диске.

Для этого не нужен FatELF - в пакете можно держать несколько бинарей, а менеджер пакетов установит в систему только нужный.

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

> Но черт возьми, почему мне все говорят ... Мне обидно это слышать

Поставь семёрку, и все будут в восторге от твоей крутизны. И обидно не будет.

Или не слушай идиотов.

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

у всех файл-менаджеров есть опция "разрешить выполнение".
Так что не надо про "чайников".

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

В целом верно. Поддерживаю вашу точку зрения. Но есть нюанс: это все верно, если нет проблем с разбродом внутри конкретной системы управления пакетами. Трудно, согласитесь говорить пользователю: "Учись, дарагой, да?, если твоя система допускает установку вперемешку пакетов i386 и x86 и манагер управления пакетами то ли от этого, а то ли от цикличных зависимостей пакетов переклинивается до полного подвисания на банальной операции обновления пакета.

Еще раз: я согласен с вашей позицией, но управление пакетами под линхом явно не идеал. Это касается всех - как рпм так и деб'ов. Последние, правда, чуть более сильны (на мой взгляд) скриптовой поддержкой....

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

> С какого перепугу, неужели дебиановское мамонтово говно сразу станет последних версий?

Не захочет — помрёт, какие проблемы.

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

> Для этого не нужен FatELF - в пакете можно держать несколько бинарей, а менеджер пакетов установит в систему только нужный.

Можно и так.

Relan ★★★★★
()

Линукс любим тем, что он предоставляет свободы, в том числе свободу сидения за ним домохозяйки или красноглазика. Под свою нишу - свой инструмент. Пусть домохозяйки используют фателф, ничего плохого в этом нет. Хуже, когда некто диктует один определённый формат пакетов, как в этой вашей венде. Тут спор а ля "какой язык кручи: пейтон или сиплюс". Под каждую задачу свой инструмент.

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

От такого размера программ место на диске сильно не распухнет. Толстые же программы большей частью состоят из кросс-платформенной воды.

Aceler ★★★★★
()

Для скачиваемых игр будет полезно (тем более, учитывая, кто автор). Для дистрибутивов GNU/Linux — бессмысленно. В ядре — пусть будет. Для периодов миграции, как сейчас с x86 на x86_64, тоже пригодится (а до того Motorola-PPC и PPC-x86 на маках и Motorola-ARM на палмах).

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

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

По-твоему, вирусы не распространяются, потому что у разных людей разные процессорные архитектуры?

Aceler ★★★★★
()

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

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

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

Точно :)

Кстати, технология крайне удобна для постепенной миграции с одной архитектуры на другую. Поставили всё в толстых бинарниках, выключились, поменяли проц, включаемся, грузимся в новое ядро — опа!

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

Aceler ★★★★★
()
Ответ на: Выкинуть. от Camel

>Хороший пример. Даже проприетарщикам универсальные бинарники не нравятся.

как толсто

никуда эпл свои универсальные бинарники не выкидывает. большинство всееще - ppc/i386/x86_64

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

А ещё интереснее — для новомодных мультиархитектурных серверов и нетбуков.

Представьте — блейд-сервер с кучей мощных лезвий на Xeon и парой лезвий на ARM. Ночью, когда нагрузка минимальна, работают ARM лезвия, обеспечивая дежурный режим и потребляя 1.5 Вт на всю систему. Утром приходят работники и в систему включаются тяжёлые Xeon-ы...

Нетбуки на процессорах ARM+X86_64. То же самое — прототипы мы уже видели. Маленький слабенький ARM отображает вам интерфейс, почту и браузер, а хотите киношку — запускайте свой i7.

Профит же!

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

>бинарник от дебиана одной версии может сегфолтнуться на дебиане другой версии

Ну на дебиан сарж у меня не запустился бинарик, скомпиленный опенсюс 11.2, но на том дебиане ядро 2.4. В обратную сторону всё успешно работает. И ещё я ставил рпм пакет с гнусной проприетарщиной 2001 года выпуска и всё нормально работало.

Твоя точка зрения - это твоя фантазия.

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

> Еще раз: я согласен с вашей позицией, но управление пакетами под линхом явно не идеал. Это касается всех - как рпм так и деб'ов. Последние, правда, чуть более сильны (на мой взгляд) скриптовой поддержкой....

Да, менеджеры пакетов не идеал, но они пока лучшее, что сейчас есть.

andreyu ★★★★★
()

Да! Это то чего все ждали: один толстый бинарь под все процессоры. Теперь бы ещё один формат пакетов под все операционки и чтобы все программы в мире были сразу на винт записаны в таком формате и обновлялись без предупреждения одним куском. Да и ещё надо исправить досадную багу из-за которой чтобы получить права рута надо пароль знать, а то неудобно как-то. И вообще, почему никто не догадался запаковывать все программы для работы с файлом в сам файл, а то скачаешь бывало файл, а он неоткрывается! А ещё надо сделать так, чтобы файлы с винта никогда не стирались -- тогда вирусов не будет и экономика подымится! И вообще надо законодательно запритить любые программы кроме майкрософта, чтобы красноглазые переучки не мешали нормальным людям нормально работать!

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

Для этого надо во-первых поддержку мультиархитектурности ядром обеспечить. А во-вторых тебя ничто сейчас не заставляет держать в системе ельф медиаплеера под х86_64 и эльф браузера под АРМ. Толстые эльфы заявленную тобой проблему не решают лучше чем существующие способы.

eugene2k
()

А вообще, не нужно, но можно, если не сильно часто.

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

> Для этого надо во-первых поддержку мультиархитектурности ядром обеспечить.

Не нужно, ты можешь грузиться в разные ядра.

> А во-вторых тебя ничто сейчас не заставляет держать в системе ельф медиаплеера под х86_64 и эльф браузера под АРМ.

А зачем мне медиаплеер в X86_64, если чтобы посмотреть видеоролик с тытуба достаточно возможностей ARM?

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

А потом, по вкусу, когда решишь обновиться на следующую архитектуру снова установишь кучу толстых бинарников вместо тонких?

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

>Не нужно, ты можешь грузиться в разные ядра.
А какой тогда смысл в наличии двух CPU для разных архитектур, если один из них все-равно не работает? Думаешь два арма не потянут твое видео?

eugene2k
()

> Дистрибутивы ОС могут иметь один единственный инсталлятор под все > доступные платформы при наличии достаточного дискового пространства.

Sponsory razrabotki proizvoditeli zhestkih diskov. V topku.

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

>Для этого не нужен FatELF - в пакете можно держать несколько бинарей, а менеджер пакетов установит в систему только нужный.

Ага, ещё игры обновлять регулярно менеджером пакетов, не лопнешь?

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

Игры лучше обновлять скачивая бинарник с несколькими архитектурами. Это верно. Ведь механизмы обновления остальных програм в ОС для игр не подходят.

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

> Игры лучше обновлять скачивая бинарник с несколькими архитектурами. Это верно. Ведь механизмы обновления остальных програм в ОС для игр не подходят.

толсто

anonymous
()

Не нужно. От него бинарники станут большими, а пользы никакой.

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

>>и на других unix-like системах,

>UNIX - есть UNIX. Это торговая марка, чтобы называться UNIX нужно пройти обязательную сертификацию. И никаких подобий не может быть. Читайте www.unix.org/tmug2.pdf

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

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

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

А сейчас вирусопесателям как-будто очень сложно собрать статический бинарник?

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

Для справок - некоторые игры обновляются раз в несколько дней (в основном, многопользовательские). Логиниться под рутом и синхронизировать репозитории каждые два-три дня из-за одной программы это дело идиотское.

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

>Линукс любим тем, что он предоставляет свободы, в том числе свободу сидения за ним домохозяйки или красноглазика. Под свою нишу - свой инструмент. Пусть домохозяйки используют фателф, ничего плохого в этом нет. Хуже, когда некто диктует один определённый формат пакетов, как в этой вашей венде. Тут спор а ля "какой язык кручи: пейтон или сиплюс". Под каждую задачу свой инструмент.

fat elf^Wtroll mode on

Естетсвенно питон

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

> А потом, по вкусу, когда решишь обновиться на следующую архитектуру снова установишь кучу толстых бинарников вместо тонких?

deltarpm + lzma спасут отца русской демократии

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

>ufoai? xmoto?

Полумёртвые проекты без мультиплеера в расчёт не берём

Heroes of Newerth обновляется как минимум раз в неделю

Gary ★★★★★
()

OS X 10.6.1

macbook:~ xeron$ file /bin/bash
/bin/bash: Mach-O universal binary with 2 architectures
/bin/bash (for architecture x86_64):	Mach-O 64-bit executable x86_64
/bin/bash (for architecture i386):	Mach-O executable i386
macbook:~ xeron$ du -sh /bin/bash
588K	/bin/bash

Ubuntu Server

~$ file /bin/bash 
/bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.8, dynamically linked (uses shared libs), stripped
~$ du -sh /bin/bash
692K	/bin/bash

Пыщь Пыщь.

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

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

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

> >Для этого не нужен FatELF - в пакете можно держать несколько бинарей, а менеджер пакетов установит в систему только нужный.
> Ага, ещё игры обновлять регулярно менеджером пакетов, не лопнешь?


1. Не редко в игре обновляются и ресурсы.
2. Можно разделить бинари и ресурсы (game_name-bin и game_name-resource). И обновлять только то, что необходимо.

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

> > Игры лучше обновлять скачивая бинарник с несколькими архитектурами. Это верно. Ведь механизмы обновления остальных програм в ОС для игр не подходят.
> толсто


Полагаю, что eugene2k сострил, а вы этого не уловили ;)

andreyu ★★★★★
()

> FatELF — это формат компоновки, позволяющий хранить в себе набор ELF бинарников под разные архитектуры

Зачем этот велосипед если есть глобальная и надежная джава?

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

т.е. вы не обновляетесь ежедневно? Ваши сложности :}

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

> Логиниться под рутом и синхронизировать репозитории каждые два-три дня из-за одной программы это дело идиотское.

crond в помощь

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

> То же самое и с приложениями -- если это universal binary, то оно будет работать на любом Маке, выпущенном в текущем веке.

Не надо, PPC уже не поддерживается.

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