Как задействовать задействовать структуры, определённые в исходниках ядра?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение жучара »

Друзья! Мне надо всего-то навсего две структурки, суперблок и инод, ext2_super_block и ext2_inode, они определены в /linux-4.2/fs/ext2/ext2.h

Исходники ядра взял здесь
https://mirrors.edge.kernel.org/astra/frozen/orel-1.11/repository/pool/main/l/linux/linux_4.2.0.orig.tar.gz

И вот такой кодик надо просто скомпилить:

Код: Выделить всё

//main.c
#include "/linux-4.2/fs/ext2/ext2.h"
int main ()
{
    return 0;
}

Shell

gcc main.c
Естессно, ничего не компилится, ему нужнен какие-то заголовочный файл, потом один, потом, второй, потом третий. Я это решаю с помощью опции -I (показываю компилятору, где искать хидеры), потом появляются ошибки, которые устраняются с помощью каких-то макросов (#define __KERNEL__, например), потом ещё и ещё. В общем одну ошибку устраняю, появляются две как у той гидры, вместо одной отрубленной головы появляются две новые.

++++++++++++++++++++++++++++++++++++++++++++++++++

Я вдруг зачем-то собрал ядро (make oldconfig && make), долго собиралось, но даже без ошибок вроде. В ядре задействован похожий функционал, только в миллиарды раз сложнее. Уж всяко переменные и ext2_super_block и ext2_inode объявлены. Можно мне как-нибудь свой кодик присобачить, что ли к ядру, не знаю, как выразиться. Чтобы и он до кучи скомпилился?

Я так понимаю, по сборке ядра получился файл .config и там все-все нужные штуки, типа
...
CONFIG_64BIT=y
CONFIG_X86_64=y
CONFIG_X86=y
...
в виде определений, что ли, их к моему файлу прицепить? я бы уж переделал их как-нибудь в #define, лишь бы был в коня корм

++++++++++++++++++++++++++++++++++++++++++++++++++

Раньше я бы просто файл /linux-4.2/fs/ext2/ext2.h не подсоединял, а взял бы эти две структуры и переписал бы их в файле main.c, а типы полей подогнал бы (там ведь главное размер данных); __le32 заменил бы на unsiged int и всё в тако духе и не парился бы. И супербок бы считал, и иноды, и все данные получил. Но хочется как-то уже пограмотнее, что ли. Грамотно задействовать уже готовый код.
Спасибо, кто откликнется. Астралинукс Смоленск 1.5. Bizdelnick, прошу прощения, что я вам снова нахамил.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение Bizdelnick »

Драйверы для Linux
(ссылка там битая, но, вроде, оно есть на https://flibusta.is/a/36262)
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение serzh-z »

См. libext2fs-dev.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение жучара »

serzh-z писал:
16.01.2020 15:33
См. libext2fs-dev.
увы, в моём репозитории такого пакета нет. А ещё у меня есть debian 7, но в его репозиториях тоже нет.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu
Контактная информация:

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение serzh-z »

жучара
Простите, не велите казнить. Не собирался вас обманывать. В качестве компенсации готов сам к вам приехать, все сделать и все скомпилировать. Напишите, когда вам будет удобно. Спасибо за ожидание.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение жучара »

serzh-z писал:
16.01.2020 16:44
жучара
Простите, не велите казнить. Не собирался вас обманывать. В качестве компенсации готов сам к вам приехать, все сделать и все скомпилировать. Напишите, когда вам будет удобно. Спасибо за ожидание.
хорош ёрничать, нету да и нету.
Я просто читаю маны.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение IMB »

жучара писал(а):
16.01.2020 16:49
хорош ёрничать, нету да и нету.
мда ....

Код: Выделить всё

$ apt-cache search ext2 dev
e2fslibs-dev - transitional package to libext2fs-dev
e2fsprogs - ext2/ext3/ext4 file system utilities
fuse2fs - ext2 / ext3 / ext4 file system driver for FUSE
libext2fs-dev - ext2/ext3/ext4 file system libraries - headers and static libraries
...........
https://packages.debian.org/search?keywords=ext2+dev&searchon=names&suite=stable&section=all

возможно для поиска через сайт Вам потребуется скорректировать используемую версию
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение жучара »

IMB писал(а):
16.01.2020 17:01
жучара писал(а):
16.01.2020 16:49
хорош ёрничать, нету да и нету.
мда ....

Код: Выделить всё

$ apt-cache search ext2 dev
e2fslibs-dev - transitional package to libext2fs-dev
e2fsprogs - ext2/ext3/ext4 file system utilities
fuse2fs - ext2 / ext3 / ext4 file system driver for FUSE
libext2fs-dev - ext2/ext3/ext4 file system libraries - headers and static libraries
...........
https://packages.debian.org/search?keywords=ext2+dev&searchon=names&suite=stable&section=all

возможно для поиска через сайт Вам потребуется скорректировать используемую версию
так его всё равно нет.
Я просто читаю маны.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение IMB »

https://packages.debian.org/search?keywords=ext2+dev&searchon=names&suite=all&section=all

к сожалению Вы не приводите используемые команды и их вывод, если у Вас очень древняя версия, то предлагаю воспользоваться https://www.debian.org/distrib/archive , в этом случае возможно потребуются некие действия руками для достижения желаемого
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 937
ОС: астралинукс

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение жучара »

IMB писал(а):
16.01.2020 17:26
https://packages.debian.org/search?keywords=ext2+dev&searchon=names&suite=all&section=all

к сожалению Вы не приводите используемые команды и их вывод
я раньше прошерстил репозитории debian 7 и астралинукс Смоленск 1.5 на предмет этого пакета. А вообще вот:

Shell

user@astra:~foo$ apt-cache search ext2 dev
libattr1-dev - Extended attribute static libraries and headers
e2fslibs-dev - ext2/ext3/ext4 file system libraries - headers and static libraries
umview-mod-umfuseext2 - View-OS in user space - ext2 module for UMFUSE
recover - Undelete files on ext2 partitions
zerofree - zero free blocks from ext2, ext3 and ext4 file-systems
user@astra:~foo$
Я просто читаю маны.
Спасибо сказали:
IMB
Сообщения: 2559
ОС: Debian

Re: Как задействовать задействовать структуры, определённые в исходниках ядра?

Сообщение IMB »

ммм, тогда я не понимаю ваших затруднений

из приведённого Вами вывода
e2fslibs-dev - ext2/ext3/ext4 file system libraries - headers and static libraries
разве описание не соответствует нужному?
Спасибо сказали:
Ответить