LINUX.ORG.RU

Загрузчик ELF-файлов, где его исходники?

 ,


0

1

Я по-наивности думал, что загрузкой файлов занимается какой-то модуль ядра. Модуль, потому что форматов много, и вот под ELF отдельный модуль, под другой формат - другой модуль.

Ну, собрался я, зайду сейчас в /usr/src/linux, да погрепаю.

/usr/src/linux-5.15.41-x86_64 # grep -R "e_phentsize" *
include/uapi/linux/elf.h:  Elf32_Half	e_phentsize;
include/uapi/linux/elf.h:  Elf64_Half e_phentsize;
scripts/mod/modpost.c:	hdr->e_phentsize = TO_NATIVE(hdr->e_phentsize);

Но не тут-то было! В ядре нет кода, который занимается загрузкой!!!

# find . -iname *.c -exec grep -nil -R "include.*elf\.h" {} \;
./scripts/sorttable.c
./scripts/mod/modpost.c
./scripts/mod/mk_elfconfig.c
./scripts/insert-sys-cert.c
./scripts/recordmcount.c

Как оно работает-то тогда?

То есть, вот файл ld-linux.so https://man7.org/linux/man-pages/man8/ld.so.8.html он же в этом же ELF-формате,

# file /lib/ld-linux.so.2
/lib/ld-linux.so.2: ELF 32-bit LSB shared object, Intel 80386, version 1 (GNU/Linux), static-pie linked, stripped
# file /lib64/ld-linux-x86-64.so.2 
/lib64/ld-linux-x86-64.so.2: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), static-pie linked, stripped

кто же его загрузит?

★★★

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

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

https://github.com/torvalds/linux/blob/master/fs/binfmt_elf.c

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

подход к изучению … начинаешь бегать

Так и должно быть. Движение внутренне присуще материи. Противоречием между бытиём и ничтом объясняется становление.

Shushundr ★★★
() автор топика
Ответ на: комментарий от shell-script

взять и почитать маны

Они написаны некачественно.

Например, вот, вроде бы, статья по теме: https://www.opennet.ru/base/dev/objdump_elf.txt.html

В ней полностью отсутствуют ссылки на веб-интерфейс к git-репозиторию с исходниками. Так же нет ссылок на конкретные места в стандартах ELF32 (1995) и ELF64 (1998). Кроме того, текст не привязан к бинарным дампам файлов-примеров, а так же выводам (stdout) результатов работы утилит. Ещё нет ссылок на синтаксис используемого ассемблера (в команде move первый аргумент копируется во второй, или наоборот?). На reference manual по процессору. На исходники библиотек из состава компилятора gcc. Для 2022-го года качество оформления статьи неприемлемо низкое! Да, статья написана давно (20 лет назад), и тогда не было gitweb и тому подобных программ. Но современные-то статьи на эти темы не сделали…

Shushundr ★★★
() автор топика
Последнее исправление: Shushundr (всего исправлений: 4)
Ответ на: комментарий от devl547

Ну хорошо, отвечает ли эта статья на вопросы: «где специфицирован формат a.out?», «можно ли штатными способами собрать ядро linux без поддержки ELF (чтобы враги не пробрались)?»

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

Например, вот, вроде бы, статья по теме: https://www.opennet.ru/base/dev/objdump_elf.txt.html

В ней полностью отсутствуют ссылки на веб-интерфейс к git-репозиторию с исходниками

Date: Mon, 14 Apr 2003 13:01:37 +0000 (UTC)

Ты ничего не слышал про актуальность информации? Ничего, что в 2003 году не было ни Git, ни Web-интерфейсов позволяющих смотреть исходный код с удобством?

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

Такие великие мыслители как Вы должны заниматься общими концепциями и развитием человечества, а не отслеживать конкретные события и ОТДЕЛЬНЫХ ЛЮДЕЙ.

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

По-твоему, существует одна-единственная статья во всём интернете и в документации ядра? И эта статья двадцатилетней давности должна отвечать каким-то современным требованиям и реалиям?

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

Потом посмотри подробнее. Там много интересного. С особенностями под разные архитектуры с подробным описаний различий. Заранее отвечу на возможные требования ответить конкретнее. Будет конкретный вопрос, можно по указанным ссылкам и ответы искать конкретные.

shell-script ★★★★★
()
Ответ на: комментарий от Shushundr

Да. Я использую комментарии к пользователям, есть такая функция на ЛОР.

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

Рекомендую остальным сделать то же самое.

Aceler ★★★★★
()