2015-03-12 4 views
1

Этот вопрос является продолжением this. Я пытаюсь скомпилировать загрузчик ELF как отдельный LKM и использовать его как автономное приложение (замена исходного модуля в базовом ядре звучит слишком рискованно). До этого момента я скопировал source file в отдельное дерево каталогов и попытался скомпилировать его с помощью следующих Makefile:Компиляция загружаемого модуля ядра (Debian/Ubuntu)

obj-m += binfmt_elf_mod.o 

all: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules 

clean: 
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean 

Модуль является генерации, но следующие предупреждения Дано:

make -C /lib/modules/3.13.0-32-generic/build M=/path/to/source/Resources modules 
make[1]: Entering directory `/usr/src/linux-headers-3.13.0-32-generic' 
    Building modules, stage 2. 
    MODPOST 1 modules 
WARNING: "start_thread" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "arch_randomize_brk" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "find_extend_vma" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "security_bprm_secureexec" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "vdso_enabled" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "arch_align_stack" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "arch_setup_additional_pages" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "randomize_va_space" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "set_personality_64bit" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "elf_core_write_extra_data" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "get_dump_page" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "elf_core_write_extra_phdrs" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "task_cputime" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "elf_core_extra_data_size" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "copy_siginfo_to_user" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "thread_group_cputime" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "elf_core_extra_phdrs" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "arch_vma_name" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
WARNING: "get_gate_vma" [/path/to/source/Resources/binfmt_elf_mod.ko] undefined! 
make[1]: Leaving directory `/usr/src/linux-headers-3.13.0-32-generic' 

В настоящее время я использую сценарий построения по умолчанию в /lib/modules/3.13.0-32-generic вместо загруженных источников. Как можно решить эти зависимости?

+0

Пробовал ли вы просить lkml? – srd

+0

Я просмотрел списки, и обсуждения, проведенные там, сосредоточены вокруг исправлений ошибок и исправлений, а не на том, как twos: http://www.google.com/custom?domains=lkml.org&q=binfmt_elf.c&sa=Google + Поиск и SiteSearch = lkml.org и клиент = паб-3128732077138691 & forid = 1 & т = UTF-8 & ае = UTF-8 & ароматиз = 0000 & сиг = IZwGi0IG8Xeqz31p & кок = GALT% 3A% 23008000% 3BGL% 3A1% 3BDIV% 3A% 23336699% 3BVLC% 3A663399% 3BAH% 3Acenter% 3BBGC % 3AFFFFFF% 3BLBGC% 3Adde8e8% 3BALC% 3A0000FF% 3BLC% 3A0000FF% 3BT% 3A000000% 3BGFNT% 3A0000FF% 3BGIMP% 3A0000FF% 3BFORID% 3A1 & гл = еп – Sebi

ответ

2

В практическом плане вы не можете. Загрузчик ELF в ядре Linux связывается с несколькими символами, которые не доступны для модулей ядра.

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

Смежные вопросы