The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Проект по созданию универсальных исполняемых файлов FatELF з..., opennews (ok), 05-Ноя-09, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


8. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 00:11 
Как binfmt_misc поможет мне сделать dlopen() или другим способом подключить динамическую библиотеку .so из программы так, чтобы сборка для нужной архитектуры выбралась автоматически?
Ответить | Правка | Наверх | Cообщить модератору

10. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +1 +/
Сообщение от Kirill A. Shutemov (?), 06-Ноя-09, 00:17 
>Как binfmt_misc поможет мне сделать dlopen() или другим способом подключить динамическую библиотеку
>.so из программы так, чтобы сборка для нужной архитектуры выбралась автоматически?
>

Ядро вообще и binfmt_misc в частности никогда не "подключал" динамические библиотеки. Обычно это делает /lib/ld-linux.so.2. Учите мат. часть.

Ответить | Правка | Наверх | Cообщить модератору

11. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 00:24 
>>Как binfmt_misc поможет мне сделать dlopen() или другим способом подключить динамическую библиотеку
>>.so из программы так, чтобы сборка для нужной архитектуры выбралась автоматически?
>>
>
>Ядро вообще и binfmt_misc в частности никогда не "подключал" динамические библиотеки. Обычно
>это делает /lib/ld-linux.so.2. Учите мат. часть.

Именно так. Но в FatELF входили патчи на readelf и ld (точнее, gold), так что система, поддерживающая FatELF могла бы автоматически выбирать нужный бинарник и из .so.

Ответить | Правка | Наверх | Cообщить модератору

12. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +2 +/
Сообщение от Kirill A. Shutemov (?), 06-Ноя-09, 00:27 
>>>Как binfmt_misc поможет мне сделать dlopen() или другим способом подключить динамическую библиотеку
>>>.so из программы так, чтобы сборка для нужной архитектуры выбралась автоматически?
>>>
>>
>>Ядро вообще и binfmt_misc в частности никогда не "подключал" динамические библиотеки. Обычно
>>это делает /lib/ld-linux.so.2. Учите мат. часть.
>
>Именно так. Но в FatELF входили патчи на readelf и ld (точнее,
>gold), так что система, поддерживающая FatELF могла бы автоматически выбирать нужный
>бинарник и из .so.

Может вы ещё раскажите, почему это нельзя сдалать при помощи binfmt_misc+модифицированный userspace? Единственное что может быть -- это конфликт с binfmt_elf, хотя и это маловероятно.

Ответить | Правка | Наверх | Cообщить модератору

13. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 00:36 

>Единственное что может быть -- это конфликт с binfmt_elf, хотя и
>это маловероятно.

сильно-сильно маловероятно -- на моей памяти он не меняется уже оооочень давно -- да и чего там менять - всё сделано просто и надёжно

Ответить | Правка | Наверх | Cообщить модератору

14. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –3 +/
Сообщение от амонинус (?), 06-Ноя-09, 00:38 
>Может вы ещё раскажите, почему это нельзя сдалать при помощи binfmt_misc+модифицированный userspace?
>Единственное что может быть -- это конфликт с binfmt_elf, хотя и
>это маловероятно.

А что именно модифицировать предлагаете?

Ответить | Правка | К родителю #12 | Наверх | Cообщить модератору

15. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +1 +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 00:42 
>>Может вы ещё раскажите, почему это нельзя сдалать при помощи binfmt_misc+модифицированный userspace?
>>Единственное что может быть -- это конфликт с binfmt_elf, хотя и
>>это маловероятно.
>
>А что именно модифицировать предлагаете?

ты немного того? да?

binfmt_misc может вызвать любой userspace - а дальше? -- да как хотите хоть jit компилятор, хоть выбор архитектуры, хоть запрос на какие-то критерии.

Ответить | Правка | Наверх | Cообщить модератору

18. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 00:55 
>binfmt_misc может вызвать любой userspace - а дальше? -- да как хотите
>хоть jit компилятор, хоть выбор архитектуры, хоть запрос на какие-то критерии.

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

Потом, что этот костыль сделает? Ну, вызовется он. И что, поднимет свой отдельный линкер для работы с бинарником? Если нет, то как быть с shared objects? А если да, то это ж какой геморрой получается с бинарной совместимостью.


Ответить | Правка | Наверх | Cообщить модератору

19. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +1 +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 00:59 
>[оверквотинг удален]
>>хоть jit компилятор, хоть выбор архитектуры, хоть запрос на какие-то критерии.
>
>Во-первых, это в любом случае означает, что на машину пользователя надо поставить
>костыль. Только костыль уже будет не централизованный и не в ядре,
>а совершенно отдельный.
>
>Потом, что этот костыль сделает? Ну, вызовется он. И что, поднимет свой
>отдельный линкер для работы с бинарником? Если нет, то как быть
>с shared objects? А если да, то это ж какой геморрой
>получается с бинарной совместимостью.

вот потому что это костыль он не нужен в ядре.

а какой сакральный смысл использовать не системный линкер.

Ответить | Правка | Наверх | Cообщить модератору

21. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 01:09 
>вот потому что это костыль он не нужен в ядре.

Смотря что считать костылем. Кто-то, может, и сам binfmt_misc костылем назовет.

>а какой сакральный смысл использовать не системный линкер.

Ну как, binfmt_misc позволит вызвать некоторую программу для обработки FatELF'а. Хорошо. Допустим этот загрузчик найдет в FatELF'е версию бинарника под нужную архитектуру.

Но этот бинарник будет слинкован, допустим, с libA.so, libB.so и libC.so, каждый из которых тоже является FatELF'ом. Если системный линкер не читает FatELF'а, как он там нужный код найдет? Как ядро с binfmt_misc ему поможет?

Ответить | Правка | Наверх | Cообщить модератору

22. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +1 +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 01:20 
>[оверквотинг удален]
>
>>а какой сакральный смысл использовать не системный линкер.
>
>Ну как, binfmt_misc позволит вызвать некоторую программу для обработки FatELF'а. Хорошо. Допустим
>этот загрузчик найдет в FatELF'е версию бинарника под нужную архитектуру.
>
>Но этот бинарник будет слинкован, допустим, с libA.so, libB.so и libC.so, каждый
>из которых тоже является FatELF'ом. Если системный линкер не читает FatELF'а,
>как он там нужный код найдет? Как ядро с binfmt_misc ему
>поможет?

аноним -- ну ты уже сам придумываеш какие-то нереальные вещи

смотрим http://icculus.org/fatelf/ сюда и видим

"
Overview:
FatELF is a file format that embeds multiple ELF binaries for different architectures into one file. This is the Linux equivalent ...
"

эквивалент чему? к чему?

т.е. учитывая то, что binfmt_misc позволяет делать загрузку программы _вместе_ с библиотеками под определённую архитектуру/окружение/настроение нам нужно придумать
1. сначала модифицировать линкёр, чтобы стандартным способом этого делать не удавалось
2. придумать к этому линкёру ядерный костыль

и всё для того чтобы не пользоваться misc

FatELF - это _идиотизм_

Ответить | Правка | Наверх | Cообщить модератору

23. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 01:35 
>FatELF is a file format that embeds multiple ELF binaries for different
>architectures into one file. This is the Linux equivalent ...
>"
>
>эквивалент чему? к чему?

Так вот же, написано: This is the Linux equivalent of what Mac OS X calls "Universal Binaries."

>т.е. учитывая то, что binfmt_misc позволяет делать загрузку программы _вместе_ с библиотеками

В каком смысле вместе с библиотеками? Существует возможность сделать так, чтобы ld.so/ld-linux.so начал читать .so какого угодно формата (через интерпретатор)? Хоть на Питоне напиши?

Или это в смысле, что можно прикрутить интерпретатор, который будет этот бинарник (содержащий машинный код) интерпретировать?

Ответить | Правка | Наверх | Cообщить модератору

25. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +1 +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 01:45 
>[оверквотинг удален]
>OS X calls "Universal Binaries."
>
>>т.е. учитывая то, что binfmt_misc позволяет делать загрузку программы _вместе_ с библиотеками
>
>В каком смысле вместе с библиотеками? Существует возможность сделать так, чтобы ld.so/ld-linux.so
>начал читать .so какого угодно формата (через интерпретатор)? Хоть на Питоне
>напиши?
>
>Или это в смысле, что можно прикрутить интерпретатор, который будет этот бинарник
>(содержащий машинный код) интерпретировать?

не выспался да?

ещё раз спрошу чтобы было понятно

1. зачем придумывать новый формат и линкёр для него, если можно использовать старый?
2. зачем придумывать костыль в ядро если с таким-же успехом можно использовать binfmt_misc

ниже для тупых

fatelf был придуман от безделия или отсутствия мозгов как таковых (крайний вариант как никому не нужный вилосипед в целях потренироваться в программировани)

1. берём 2 deb файла, один для adm64 второй для x86
2. распаковываем в один каталог
3. запаковываем любимым архиватором и сжимаем если нужно

как теперь это запустить? да очень легко

пишем скрипт к binfmt_misc который

1. проверяет текущую архитектуру
2. распаковывает ту часть файла которая относится непосредственно к ней
3. выставляем LD_LIBRARY_PATH
4. запускаем

ВСЁ


Ответить | Правка | К родителю #23 | Наверх | Cообщить модератору

26. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –2 +/
Сообщение от амонинус (?), 06-Ноя-09, 02:09 
>1. берём 2 deb файла, один для adm64 второй для x86
>2. распаковываем в один каталог
>3. запаковываем любимым архиватором и сжимаем если нужно

А, понятно...

А теперь сравни это с тем, что предлагал Р.Гордон:

1.Твое решение предполагает, что все файлы библиотеки надо куда-то распаковать или скопировать. FatELF можно хоть с CD-ROM'а запускать безо всякой распаковки.

2.Если есть два разных бинарника, слинкованные с одним набором библиотек, придется сделать 2 копии этого набора библиотек. В случае с FatELF'ом - нет, они будут лежать как нормальные библиотеки.

3.Обычные бинарники нельзя будет линковать с такими архивами. В случае с FatELF - можно.

4.FatELF работал бы абсолютно прозрачно для пользователя и для программ. Пользователь видел бы обычный исполнимый бинарник. Программе можно было бы подсунуть FatELF-библиотеку вместо простого ELF'а, и никакой бы разницы не было.

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


Ты что, серьезно думаешь, что Гордон не рассмотрел все возможные варианты до того, как пошел ставить на уши разработчиков ядра? Все-таки человек не с улицы выскочил, если бы мог решить проблему проще, уж наверное решил бы. Обвиняли его не в том, что FatELF не дает никаких преимуществ, а в том, что и без этих преимуществ прожить можно. Можно-то, конечно, можно, да только с ними как-то удобнее.

Ответить | Правка | К родителю #25 | Наверх | Cообщить модератору

28. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 02:58 
>[оверквотинг удален]
>>2. распаковываем в один каталог
>>3. запаковываем любимым архиватором и сжимаем если нужно
>
>А, понятно...
>
>А теперь сравни это с тем, что предлагал Р.Гордон:
>
>1.Твое решение предполагает, что все файлы библиотеки надо куда-то распаковать или скопировать.
>FatELF можно хоть с CD-ROM'а запускать безо всякой распаковки.
>

в моём предложении архивирование это по желанию

>2.Если есть два разных бинарника, слинкованные с одним набором библиотек, придется сделать
>2 копии этого набора библиотек. В случае с FatELF'ом - нет,
>они будут лежать как нормальные библиотеки.

т.е. вы хотите сказать что бинарник для amd64 легко и просто бы подцепил в рабиту библиотеку от mips'а??? -- да я бы хотел посмотреть как бы это реализовывалось

в моём предложении ... используются обычные библиотеки, и вовсе не обязательно использовать два набора одинаковых файлов
>
>3.Обычные бинарники нельзя будет линковать с такими архивами. В случае с FatELF
>- можно.
>

в моём предложении все библиотеки нормальные

>4.FatELF работал бы абсолютно прозрачно для пользователя и для программ. Пользователь видел
>бы обычный исполнимый бинарник. Программе можно было бы подсунуть FatELF-библиотеку вместо
>простого ELF'а, и никакой бы разницы не было.

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

если бы я предлагал статическую линковку -- я бы даже ни разу не заикнулся о LD_LIBRARY_PATH
>
>Ты что, серьезно думаешь, что Гордон не рассмотрел все возможные варианты до
>того, как пошел ставить на уши разработчиков ядра? Все-таки человек не
>с улицы выскочил, если бы мог решить проблему проще, уж наверное
>решил бы. Обвиняли его не в том, что FatELF не дает
>никаких преимуществ, а в том, что и без этих преимуществ прожить
>можно. Можно-то, конечно, можно, да только с ними как-то удобнее.

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

думаю что этот господин пёрнул в лужу, и ты аноним выколупывая никчёмные доводы пытаешся за ним поспеть

а теперь по порядку

какие-такие "преимущества", с которыми бы было жить веселей.

Ответить | Правка | К родителю #26 | Наверх | Cообщить модератору

30. "Проект по созданию универсальных исполняемых файлов FatELF з..."  –1 +/
Сообщение от амонинус (?), 06-Ноя-09, 03:25 
>в моём предложении архивирование это по желанию

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

>т.е. вы хотите сказать что бинарник для amd64 легко и просто бы подцепил в рабиту библиотеку от mips'а??? -- да я бы хотел посмотреть как бы это реализовывалось

Нет. Бинарник подцепил бы FatELF.so. А в нем бы был код, допустим, для MIPS'а, и для x86, и для ARM, и для amd64. Но бинарнику не нужно бы было искать там код для amd64. За него бы это сделал пропатченный линкер. А если бы этот FatELF заменили на обычную библиотеку для amd64, то бинарник бы даже не заметил.

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

Это как? Вроде речь шла о "распаковать два пакета в один каталог, запаковать, приделать особый magic number и заголовок, загружать скриптом для binfmt_misc".

>в моём предложении.... ничего никому подсовывать не нужно

А я не про "нужно", я про "можно". Идея в том, что с FatELF можно работать, как с обычной библиотекой.

>если бы я предлагал статическую линковку -- я бы даже ни разу не заикнулся о LD_LIBRARY_PATH

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

>думаю что этот господин пёрнул в лужу, и ты аноним выколупывая никчёмные доводы пытаешся за ним поспеть

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

>какие-такие "преимущества", с которыми бы было жить веселей.

Главное преимущество одно: я купил CD/скачал из интернета какой-нибудь инсталлятор, запустил его, и вне зависимости от того, какая у меня архитектура процессора (а в идеале - и операционка) оно у меня заработало. При этом на CD-ROMе лежит не 12 разных бинарников (под, допустим, Linux, FreeBSD и OpenSolaris, да еще под несколько архитектур), а один. И выбирать я должен не вручную, а автоматически. Я-то, может, и могу вручную выбрать, а среднестатистический пользователь Вася - не факт. И если бинарников несколько, потому что это разные программы, а многие разделяемые библиотеки у них общие, то они действительно разделяются, а не прилинкованы к каждому бинарнику отдельно, так что программа, которая могла бы влезть на CD, влезает только на какой-нибудь BluRay.

Если у меня процессор x86-64, я не должен держать у себя отдельно /lib32, отдельно /lib64 и при необходимости собрать программу вручную смотреть, к чему именно ее прилинковать. У меня каждая библиотека будет в одном файле, даже если у нее есть сборки под несколько архитектур. А если одна из сборок станет не нужна, я ее вычищу из этого файла, и все.

Ответить | Правка | К родителю #28 | Наверх | Cообщить модератору

31. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +/
Сообщение от pavel_simple (ok), 06-Ноя-09, 04:34 
....
userspace реализация делается много гибче и много легче ЛЮБОЙ ядерной, и всё что можно сделать в ядре касательно данного вопроса уже сделано -- конкретно binfmt_misc уже есть.


"какой-нибудь инсталятор" это для виндов, где широко распространены adware,trialware,malware,spyware, просто вирусы и остальное говно в виде патченых mp3 .ico .aim


использование двух копий библиотек x86 и amd64 в любом современном дистрибутиве ничем не осложнено

Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

35. "Проект по созданию универсальных исполняемых файлов FatELF з..."  +/
Сообщение от alexxisr (?), 06-Ноя-09, 07:19 
Но копировать-то все равно придется? Ну, хорошо, возможно, удастся создать виртуальную ФС, где разные куски файла будут представлены как разные файлы, затем еще как-то совместить это с реальной ФС, чтобы все файлы лежали где положено... и получить еще больший костыль, чем FatELF.

зачем выделять какие то куски файлов? если каждый кусок - это бинарник под определенную архитектуру, так и пусть он будет ОТДЕЛЬНЫМ файлом, я смогу по крайней мере удалить его, если он мне не нужен.
а для хранения файлов уже придумано куча ФС.
вместо перемещения файлов можно просто прописать в переменных окружения пути к библиотекам.

>т.е. вы хотите сказать что бинарник для amd64 легко и просто бы подцепил в рабиту библиотеку от mips'а??? -- да я бы хотел посмотреть как бы это реализовывалось

Нет. Бинарник подцепил бы FatELF.so. А в нем бы был код, допустим, для MIPS'а, и для x86, и для ARM, и для amd64. Но бинарнику не нужно бы было искать там код для amd64. За него бы это сделал пропатченный линкер. А если бы этот FatELF заменили на обычную библиотеку для amd64, то бинарник бы даже не заметил.

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

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

Это как? Вроде речь шла о "распаковать два пакета в один каталог, запаковать, приделать особый magic number и заголовок, загружать скриптом для binfmt_misc".

да изврат, что то, что другое.

>в моём предложении.... ничего никому подсовывать не нужно

А я не про "нужно", я про "можно". Идея в том, что с FatELF можно работать, как с обычной библиотекой.

только использоваться будет максимум процентов 20 от файла фательф. остальное - просто мусор, ненужный на данной платформе.

>если бы я предлагал статическую линковку -- я бы даже ни разу не заикнулся о LD_LIBRARY_PATH

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

можно линковать с упакованными, только если в системе нет более подходящих.

>думаю что этот господин пёрнул в лужу, и ты аноним выколупывая никчёмные доводы пытаешся за ним поспеть

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

>какие-такие "преимущества", с которыми бы было жить веселей.

Главное преимущество одно: я купил CD/скачал из интернета какой-нибудь инсталлятор, запустил его, и вне зависимости от того, какая у меня архитектура процессора (а в идеале - и операционка) оно у меня заработало.

это можно сделать и через ./configure && make && make install
в install.sh
почему же никто не кричит, что так и надо везде делать?

При этом на CD-ROMе лежит не 12 разных бинарников (под, допустим, Linux, FreeBSD и OpenSolaris, да еще под несколько архитектур), а один.

но этот 1 в 12 раз больше размером, я не верю что бинарники под разные платформы могут иметь общие библиотеки.
+ я не могу скачать только нужное мне - я буду обязан качать под все 12 вариантов

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

Вася пупкин скачивает маленький установочный скрипт, который выбирает что нужно поставить, и автоматически скачивает/ставит
(скачивать можно и cdrom)

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

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

Если у меня процессор x86-64, я не должен держать у себя отдельно /lib32, отдельно /lib64 и при необходимости собрать программу вручную смотреть, к чему именно ее прилинковать. У меня каждая библиотека будет в одном файле, даже если у нее есть сборки под несколько архитектур. А если одна из сборок станет не нужна, я ее вычищу из этого файла, и все.

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

Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру