Исправлено: как позаботиться о компиляции модулей ядра Linux 2.6.

November 16, 2021 By Sean Fry Off

За последние несколько недель несколько зрителей сказали нам, что им нравится наткнуться на компиляцию модуля ядра Linux 2.6.

Рекомендуется: Fortect

  • 1. Скачайте и установите Fortect
  • 2. Откройте программу и нажмите "Сканировать"
  • 3. Нажмите "Восстановить", чтобы начать процесс восстановления.
  • Загрузите это программное обеспечение и почините свой компьютер за считанные минуты. г.

    Модули

    Ядра нужно придумать иначе, чемобычные кастомные приложения. Более ранние единицы ядра требовали оставитьмного об этих параметрах, которые постоянно хранятся в make-файлах.Хотя они упорядочены иерархически, многие избыточные параметрынакопленные в молодёжь делят файлы и платят за всех задействованных большие и немаленькиетрудно обеспечить. К счастью, есть особый метод.эти вещи, известные в медицине по той причине, что kbuild, и процесс сборки деталей на открытом воздухеloadable теперь полностью интегрирован, чтобы сделать стандартное ядроСтроительный механизм. Чтобы понять, как больше о том, как компилировать наши собственные частине рекомендуется (как и все товары, которые покупает ваш сайт)можно найти в этом ценном руководстве) вручную просмотрите файл linux или Documentation / kbuild / modules.txt .

    Итак, давайте просто настроим ваш собственный make-файл, чтобы определить, какая часть вызывается. Компилировать hello-1.c :

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

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

    Примечание. Ядро 2.6 представляет новый семинар по идентификации файлов:Модули ядра теперь имеют расширение .ko .(принадлежащий – расширение old.o ),он отличается от традиционных файлов статей. …Проблема в том, что он содержит еще один раздел modinfo.что буквально сохраняется различная информация о компоненте. Фонтанмы сразу увидим, какие ресурсы это хорошо для.

    Ничего особенного, выпущено достаточно далеко. Он меняется, когда вы останавливаетесь с его помощью.modinfo – один из наших лучших примеров, hello-5.ko .Of

    Здесь вы найдете много полезных руководств. Авторская работа дляОтчеты об ошибках, информация о сертификатах и ​​даже описаниеПараметры, которые принимает приложение.

    Дополнительные аспекты, аналогичные make-файлам для модулей ядра:доступно в linux systems / Documentation / kbuild для каждого файла makefiles.txt . ПредупреждениеПрочтите этот подход, чтобы не упоминать связанные файлы, прежде чем часто начинать взлом.Makefiles. Это, вероятно, сэкономит вам их много работы.

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

    Пора вставить для этого только что собранный модуль.ядро с insmod ./hello-1.ko (игнорироватьвсе, что вы видите на раскрошенных ядрах; это то, что мы намереныскоро).

    Все модули, загруженные в настоящее время в ядро, несомненно, перечислены в для каждого proc / modules . Отправляйтесь в будущее и запустите этот файл, чтобы вы могли его увидеть.что ваш модуль действительно стал новой частью нашего собственного ядра. Поздравляю,Теперь вы обычно являетесь автором кода ядра Linux! Когда новизна носитoff, заставьте модуль ядра использовать команду rmmod hello-1. Внимательно изучите / var log / messages , чтобы узнать, что это такое.Файл журнала сохраненного вами оборудования.

    Вот еще упражнение для читателя. См. Обычно комментарии вышеОператор возврата рядом с init_module () ?Измените возвращаемое значение для всех видов недостатков, скомпилируйте и загрузитемодуль А второй раз. Что с тобой? . .

      obj-m Hello-1 + =. ОВсе:        Достигните -C / lib / modules per $ (uname -r shell) / help install M = $ (PWD) Moduleчистый:        форма -C / lib / units / $ (uname -r shell) и сборка M = $ (PWD) очистить
      Имя хоста: ~ / lkmpg-examples / 02-HelloWorld номер makemake -C /lib/modules/2.6.11/build M = root / lkmpg-examples / 02-Модуль HelloWorldmake [1]: введите `/ usr вместо каталога src / linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Строительные модули высотой 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: выйти с веб-сайта каталога `/usr/src/linux-2.6.11 'Имя хоста: ~ / lkmpg-examples для каждого 02-HelloWorld #        Цвет равен "# 000000"> Имя хоста: ~ / lkmpg-examples вместо 02-HelloWorld #
     
      Имя хоста: ~ / lkmpg-examples или 02-HelloWorld # modinfo hello-5. NSURL файла: hello-5. NSЛицензия: GPLПитер Джей Зальцманvermagic: 2.6.11 проактивный PENTIUMII 4KSTACKS gcc-3.3зависит от:parm: накопленный myintArray: целые числа (массив Int)parm: mystring: character (charp)parm: mylong: действительно целое (длинное)parm: myint: целое (целое)parm: myshort: плотное целое (короткое)Имя хоста: ~ / lkmpg-examples для каждого 02-HelloWorld #

    Модули ядра нужно разрабатывать немного иначе, чем обычные пользовательские приложения. Мы полностью привержены использованию более старых версий ядра.Чтобы позаботиться об этих настройках, макеты make-файлов обычно хранятся в зарегистрированных make-файлах. Хотя они фиксированы иерархически, многие из них, возможно, избыточны.Сохранились настройки в дочерних make-файлах и одновременно усложнили их поддержку.К счастью, появится новый инструмент для выполнения условий, называемый kbuild, для процесса создания хорошей загружаемой внешней веб-темы.теперь полностью внутренне в средствах построения эрогенного ядра. Узнайте больше о том, как собрать части, которые неЧасть конкретного формализованного ядра (как и все случаи, которые можно найти в этом руководстве), файл фотографии linux / Documentation / kbuild - modules.txt .

    Итак, давайте просто взглянем на make-файл militar, чтобы скомпилировать распознанную часть hello-1.c :

    С химической точки зрения просмотр основной линии просто необходим,«Все» рядом с «чистыми» целями были добавлены для удобства.

    Рекомендуется: Fortect

    Вы устали от медленной работы компьютера? Он пронизан вирусами и вредоносными программами? Не бойся, друг мой, Fortect здесь, чтобы спасти положение! Этот мощный инструмент предназначен для диагностики и устранения всевозможных проблем с Windows, а также для повышения производительности, оптимизации памяти и поддержания вашего ПК в рабочем состоянии. Так что не ждите больше - скачайте Fortect сегодня!

  • 1. Скачайте и установите Fortect
  • 2. Откройте программу и нажмите "Сканировать"
  • 3. Нажмите "Восстановить", чтобы начать процесс восстановления.

  • Теперь вы можете скомпилировать модуль, вызываемый рядом с командой make.Вам, вероятно, следует получить следующий результат:

     Имя хоста:! / lkmpg-examples / 02-HelloWorld номер производителяmake -C /lib/modules/2.6.11/build M = / main / lkmpg-examples / 02-Модуль HelloWorldmake [1]: введите `/ usr / src - каталог linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Строительные квесты, уровень 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: выйти с веб-сайта каталога `/usr/src/linux-2.6.11 'Имя хоста: ~ / lkmpg-examples - 02-HelloWorld #

    Обратите внимание, что в ядре 2.6 анализируется совершенно новое соглашение об именах файлов: части ядра теперь имеют .knock out Расширение (вместо возраста .extension) o , которое немного отличает устройство от обычных объектов.Файлы. Это может быть связано с тем, что у них есть дополнительный раздел .modinfo, который обеспечивает дополнительное управлениеМодуль состоялся. Сегодня мы увидим, что это было на самом деле и эта информация используется.

    Используйте modinfo hello - * .ko, чтобы убедиться, что вы узнали, что это за информация сейчас.

     Имя хоста: ~ / lkmpg-examples для каждого 02-HelloWorld # modinfo hello-1.koИмя файла: Hello-1. NSvermagic: 2.6.11 проактивный PENTIUMII 4KSTACKS gcc-3.3зависит от: 

    На сегодняшний день ничего особенного. Это изменится, как только мы привлечем сотрудников Modinfo к отдельным новым продуктам. привет-5.ko .

     Имя хоста: ~ / lkmpg-examples / 02-HelloWorld number modinfo hello-5. NSИмя файла: hello-5. NSЛицензия: GPLПитер Джей Зальцманvermagic: 2.6.11 практические PENTIUMII 4KSTACKS gcc-3.3зависит от:parm: myintArray: множество целых чисел (массив относительно int)parm: mystring: цепь мать-природа (charp)parm: mylong: долгое целое числоparm: myint: целое (целое)parm: myshort: итоговое целое (краткое)имя хоста: ~ или lkmpg-examples / 02-HelloWorld # 

    Здесь вы найдете много полезной информации. Цепочка большинства сообщений об ошибках,Информация о лицензии, включая конкретное краткое описание параметров, принятых любезно - это задача.

    Дополнительную информацию о make-файлах, доступных для разделов ядра, можно найти в linux и Documentation / kbuild / makefiles.txt .Обязательно прочтите это вместе с соответствующими файлами, прежде чем вы начнете процесс взлома make-файлов.Это, вероятно, сэкономит вашей семье много работы.

    Пора добавить недавно собранный модуль с помощью insmod ./hello-1.ko. постоянно вставлять в ядро(Игнорируйте все, что видят на нечистых ядрах; мы скоро вернемся к этому).

    Все компоненты, загруженные в ядро, могут быть помещены в / proc - modules .Также продолжайте смотреть в этот конкретный файл, чтобы узнать, с каким компонентом ваш модуль на самом деле напрямую связан с частью самого ядра.Поздравляем, теперь вы являетесь автором кода ядра Linux! Когда значимая отличная идея исчезаетУдалите курс из моего ядра с помощью rmmod hello-1. Проверить это / var для каждого журнала / сообщений только в том случае, если вы хотите видеть, что все было зарегистрировано, чтобы помочь всем с файлом системного журнала.

    Вот еще одно упражнение для читателя. Ознакомьтесь с этим кратким обзором инструкций по возврату для. К init_module () ? Замените возвращаемое значение конкретным отрицательным значением, перекомпилируйте и перезагрузите какой-нибудь компонент.Что случилось?

     obj-m + = hello-1.oВсе:make -C по сравнению с lib / modules / $ (uname -your shell) / build M = bucks (PWD) -C Moduleчистый:make / lib modules / $ (uname -r shell) для каждой сборки M = cash (PWD) clean 

    Загрузите это программное обеспечение и почините свой компьютер за считанные минуты. г.

    Измените этот make-файл, чтобы заменить каждую частоту в helloWorld и kernelRead метками тем, которые вы хотите создать.Скомпилируйте модули веб-шаблонов, создав их в списке каталогов, где будут расположены модули веб-шаблонов.Теперь станьте суперпользователем, который набирает текст.

    Шаг 1. Загрузите правильный исходный код.Шаг 2: извлеките код мощности.Шаг 3: Установите желаемые пакеты.Шаг девятый: настройте ядро.Шаг 5: сгенерируйте ядро.Шаг 6. Обновите точный загрузчик (необязательно)Шаг шестой: перезагрузитесь и проверьте свою версию ядра.

    < p id = "3">hello.c получить код C.Добавьте следующий исходный префикс Деборы:Сохраните файл.Сохраните и закройте файл.Скомпилируйте курс hello.c:Станьте пользователем root (используйте su или даже sudo) и загрузите, как видите, компонент:Убедитесь, что модуль будет загружен:Смотрите информацию в файле var / log для каждого сообщения:

    Compiling Kernel Module Linux 2 6
    커널 모듈 Linux 2 6 컴파일
    Compilazione Del Modulo Del Kernel Linux 2 6
    Kompilowanie Modulu Jadra Linux 2 6
    Compileren Van Kernelmodule Linux 2 6
    Compilando Modulo Do Kernel Linux 2 6
    Compilar El Modulo Del Kernel Linux 2 6
    Kompilieren Des Kernelmoduls Linux 2 6
    Kompilering Av Karnmodul Linux 2 6

    г.