Как вставить модифицированный загрузчик ELF, если присутствует текущий загрузчик ELF?

Мне нужно изменить реализацию ядра загрузчика ELF дистрибутива Ubuntu 14.04. Загрузив исходники, используя:

sudo apt-get source linux-image-$(uname -r) 

Я запустил скрипт конфигурации:

  • Замена для крышки
  • Как заставить strace «декодировать» связь AF_NETLINK как с ioctl?
  • sigaction (7): семантика члена si_code siginfo_t
  • Какое состояние (состояния) процесса пересчитывается на время процессора?
  • Что такое альтернатива zcache?
  • Крутящий момент на диске NVMe PCIe
  •  make config 

    в корневом исходном дереве. После бесконечной последовательности входных запросов скрипт создал файл .config необходимый для сборки ядра (или набора модулей). Версия ядра, которую я использую, – linux-3.13.0 , и имеет следующую структуру исходного дерева:

     $ ls arch Documentation fs kernel README sound block drivers include lib REPORTING-BUGS tools COPYING dropped.txt init MAINTAINERS samples ubuntu CREDITS elf.dat ipc Makefile scripts usr crypto FileSystemMake Kbuild mm security virt debian.master firmware Kconfig net shortcuts 

    Загрузчик ELF расположен в /path/to/source/fs/binfmt_elf.c . Следуя этому вопросу , чтобы скомпилировать отдельный модуль, достаточно запустить

     make /path/to/module/directory 

    В этом случае это будет:

     make /path/to/source/fs 

    Компиляция довольно длинная; это занимает около двадцати минут (на виртуальной машине), а вывод записывается (по умолчанию) в том же каталоге, в котором находится модуль. Я нашел объектные файлы, запустив:

     find . -name "*.o" 

    in /path/to/source/fs . Фильтрация по имени, загрузчик ELF можно найти, запустив:

     find . -name "*elf*.o" 

    В текущих источниках он записывается (по умолчанию) в:

     /path/to/source/fs/binfmt_elf.o 

    Пройдя этот учебник , я заметил, что модули ядра имеют соглашение об именах module_name .ko , чтобы отличать их от файлов объектных пространств.

    Как я могу вставить новый (измененный) загрузчик ELF в ядро, учитывая, что текущий загрузчик ELF присутствует (и выгрузка может помешать выполнению двоичных файлов)?

    Linux и Unix - лучшая ОС в мире.