LINUX.ORG.RU

компиляция модуля ядра

 , ,


1

2

Всем привет кто знает как скомпилировать данный модуль ядра в МСВС5

#include <linux/module.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <asm/uaccess.h>

extern void *sys_call_table[];

int (*orig_open)(const char *pathname, int flag, int mode);

int own_open(const char *pathname, int flag, int mode)
{
    char *kernel_path;
    char hide[]="test.txt";
    kernel_path=(char *)kmalloc(255,GFP_KERNEL);

    copy_from_user(kernel_path, pathname, 255);
    if(strstr(kernel_path,(char *)&hide) != NULL)
    {
	kfree(kernel_path);
	return -ENOENT;

    }
    else
    {
	kfree(kernel_path);
	return orig_open(pathname, flag, mode);

    }

}
int init_module()
{
    orig_open=sys_call_table[SYS_open];
    sys_call_table[SYS_open]=own_open;
    return 0;

}

void cleanup_module()

{
    sys_call_table[SYS_open]=orig_open;
}

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

сделал все как вы сказали вывалило кучу ошибок

[root@maks modl]# make
make -C /lib/modules/`uname -r`/build M=`pwd` modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-358.14.1.el6.x86_64'
  CC [M]  /modl/interupt.o
  In file included from include/linux/module.h:17,
                   from /modl/interupt.c:2:
                   include/linux/moduleparam.h:4:18: error: init.h: Нет такого файла или каталога
                   include/linux/moduleparam.h:5:23: error: stringify.h: Нет такого файла или каталога
                   /modl/interupt.c:4:25: error: sys/syscall.h: Нет такого файла или каталога
                   /modl/interupt.c: In function 'own_open':
                   /modl/interupt.c:20: предупреждение: результат 'copy_from_user', декларированной с атрибутом warn_unused_result, игнорируется
                   /modl/interupt.c: In function 'init_module':
                   /modl/interupt.c:37: ошибка: 'SYS_open' undeclared (first use in this function)
                   /modl/interupt.c:37: ошибка: (Each undeclared identifier is reported only once
                   /modl/interupt.c:37: ошибка: for each function it appears in.)
                   /modl/interupt.c: In function 'cleanup_module':
                   /modl/interupt.c:46: ошибка: 'SYS_open' undeclared (first use in this function)
                   make[2]: *** [/modl/interupt.o] Ошибка 1
                   make[1]: *** [_module_/modl] Ошибка 2
                   make[1]: Leaving directory `/usr/src/kernels/2.6.32-358.14.1.el6.x86_64'
                   make: *** [all] Ошибка 2
                   [root@maks modl]#    
kold2015 ()
Ответ на: комментарий от metawishmaster

ну раз до такого дошло, то рано ТС к ядру подпускать ;)

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

теперь иди книжки читать, хоть ldd тот же

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

при чем тут это у меня такая проблема у меня не находит файлы

      

#include <linux/string.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <sys/syscall.h>
#include <linux/types.h>
#include <linux/slab.h>

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

sys/syscall.h - это не ядерный хедер, там даже каталога такого нет

но и вцелом хрень ккая-то

а сделай в консоли

locate init.h

и покажи, что он напишет...

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

С каких пор лабораторки стали делать на мсвс?

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

ибо нужен <linux/init.h>

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

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

эт да :))

а уже и самому интересно... по-идее бОльшая часть хидеров должна быть найдена :-\

metawishmaster ★★★★ ()
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от anonymous

но это из хидера modulaparam.h - я как-раз хотел спросить первые строчки этого файла у ТС...

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

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

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

мило... я уже и забыл, что такое МСВС, ну ладно, попробуй

find /usr/src/kernels/2.6.32-358.14.1.el6.x86_64 -name init.h

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

нужен пакет с хидерами
в RH он называется или kernel-devel, или kernel-headers

а, ставить, по-моему

yum install kernel-headers

но могу и ошибаться

metawishmaster ★★★★ ()
Последнее исправление: metawishmaster (всего исправлений: 1)
Ответ на: комментарий от kold2015

такая ситуация по хидерам #include <linux/string.h>--- лежит в /usr/include/linux #include <linux/module.h>--- нету #include <linux/kernel.h>--- лежит в /usr/include/linux #include <sys/syscall.h>  — лежит в /usr/include/sys/ #include <linux/types.h> — лежит в /usr/include/linux #include <linux/slab.h>  — не найден

kold2015 ()
Ответ на: комментарий от kold2015
#include <linux/string.h>--- лежит в /usr/include/linux #include <linux/module.h>--- нету #include <linux/kernel.h>--- лежит в /usr/include/linux #include <sys/syscall.h>  — лежит в /usr/include/sys/ #include <linux/types.h> — лежит в /usr/include/linux #include <linux/slab.h>  — не найден
kold2015 ()
Ответ на: комментарий от kold2015

// не, чувак, тебе реально LDD ботать нада

все ядерные хедеры лежат в дереве ядра в каталоге kerel-X.Y.Z/include
то что в /usr - это юзер-спейсные

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

смотрите

[root@maks modl]# yum install kernel-headers
Loaded plugins: aliases, filter-data, keys, list-data, protect-packages, protectbase, security, tmprepo, verify, versionlock
file:///mnt/cdrom/Server/repodata/repomd.xml: [Errno 5] OSError: [Errno 2] Нет такого файла или каталога: '/mnt/cdrom/Server/repodata/repomd.xml'
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: Addons. Please verify its path and try again
[root@maks modl]#  
kold2015 ()
Ответ на: комментарий от metawishmaster

да вы правы module.h в /usr/srckernels/`uname -r`/include/linux и slab там жее

kold2015 ()
Ответ на: комментарий от metawishmaster
[root@maks /]# ls -l /lib/modules/`uname -r`/build/include
итого 128
drwxr-xr-x   3 root root  4096 Ноя  8  2014 acpi
lrwxrwxrwx   1 root root     7 Янв 23 19:39 asm -> asm-x86
drwxr-xr-x   3 root root  4096 Ноя  8  2014 asm-generic
drwxr-xr-x   2 root root  4096 Ноя  8  2014 asm-x86
drwxr-xr-x 507 root root 24576 Янв 23 19:39 config
drwxr-xr-x   3 root root  4096 Ноя  8  2014 crypto
drwxr-xr-x   4 root root  4096 Ноя  8  2014 drm
drwxr-xr-x   2 root root  4096 Ноя  8  2014 keys
drwxr-xr-x  36 root root 36864 Янв 23 19:39 linux
drwxr-xr-x   2 root root  4096 Ноя  8  2014 math-emu
drwxr-xr-x   3 root root  4096 Ноя  8  2014 media
drwxr-xr-x   2 root root  4096 Ноя  8  2014 mtd
drwxr-xr-x  12 root root  4096 Ноя  8  2014 net
drwxr-xr-x   2 root root  4096 Ноя  8  2014 pcmcia
drwxr-xr-x   2 root root  4096 Ноя  8  2014 rdma
drwxr-xr-x   2 root root  4096 Ноя  8  2014 rxrpc
drwxr-xr-x   3 root root  4096 Ноя  8  2014 scsi
drwxr-xr-x   2 root root  4096 Ноя  8  2014 sound
drwxr-xr-x   3 root root  4096 Ноя  8  2014 trace
drwxr-xr-x   2 root root  4096 Ноя  8  2014 video                     
kold2015 ()
Ответ на: комментарий от kold2015

Нет такого файла или каталога: '/mnt/cdrom/Server/repodata/repomd.xml'

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

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

факт. сначала отправить читать LDD, в версии, которая была для ядра 2.6 (https://lwn.net/Kernel/LDD3/), на три раза. потом уже подпускать к компилятору.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от kold2015

посмотри на http://pastebin.com/U0C6t4eA

скопируй текст в буфер обмена, потом напиши

cat > modl.base64
// нажми ENTER, Ctrl-V и Ctrl-D
base64 -d < modl.base64 > modl.rar
unrar x modl.rar
cd modl
make

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

это то, что точно и гарантированно компилится у меня обламывается в другом месте

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

я так понял в папке Modl нужно создать файл modl.base64 и в него заполнить текст по ссылке http://pastebin.com/U0C6t4eA а дальше не совсем понятно зачем распаковывать архив у меня есть моя папка... base64 -d < modl.base64 > modl.rar  — не понятна эта команда

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

текст по ссылке - это перекодированный в ASCII архив с твоим модулем, чуток подправленным и адекватным Makefile'ом. А-то твой какие-то несоответствия при сборке пишет.

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

скиньте архив который у вас норм в нормальном виде у мея просто мсвс виртуалка

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

ты неправильно скопировал текст


UmFyIRoHAM+QcwAADQAAAAAAAABVCXQgkDEAhAEAADkDAAADXT7mgNOFmkcdMw8ApIEAAG1vZGxc
aW50ZXJ1cHQuYwDADd1RDIvVgVe4vhWoyM2kEGMh1DXrF6EgsRehjCbNdNC2Ft0l3aoRj7uxQRS2
m3dtKJAkPALLNmzMznwzM3x7M3c+fM+E/Sc6edH/wTjcfI7DfKDod/jDkrnRB++Gs30sbcl41+F0
v3WIsD5XfpGXGU+5kHdH6Sx83jO9XhGQkUD/mLkQk3B6mcvgqHynEQbrokRXkE871nT+YgAahpLs
IjRyvshIZ+T0BGxwRPxjQ2+N4tUEtNgjtwr6psQrMws3s+oTw4hj3YAn5dSu9RSgrNEZuS1Ldapy
dxpVkagqa5exVtBWOZxPJtIxA89ixV6+ruF2Wu+5atytxRZI1lFggM8KE8XA7BFnUORIDK0NzAFO
sJ//1VOg5JWuyDiaBc8bccageoylijgKXZBJK6WkkQpzxy2rnbovCZm/CuYiyF8CBr0qGh1LyBWR
9Z/Y0UuW9G4gS/LwZ8yay81tbxd8rqo95d772a1Pt1dNM2OZK0lWV5UJE4b8OOhYmWd+Zzt9nRh/
KLrWdCCALQB7AAAAnwAAAANnImAUanSaRx0zDQCkgQAAbW9kbFxNYWtlZmlsZQ1RUMj+DS6bwraJ
RJQR3iRRFIURSEoOBNsboYtbYgGjvpYCBIBCLjgGXeWcp//EspziX2Wf/L+9/JxjkExMSZr1QJdh
jwchqxirOZMGEoB0nppibqWOtXXCq3w8EEUYdOvabzmZ3yf6HFcfY+aQ9Vyjjv+FGAh3IWwC9MQ9
ewBABwA=



без пробелов на концах и пустых строк

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