Как открыть код линукса

Можно ли получить доступ к исходному коду или файлу конфигурации команды терминала, прочитать, как она работает и даже настроить ее на локальном компьютере?

Я пытаюсь понять Linux, и я часто решаю свои проблемы в каждом конкретном случае, фактически не изучая, как придумать ответ сам, что, конечно, я предпочитаю не делать.

Например, я установил сочетание клавиш, чтобы выбрать область и сделать ее снимок экрана. Каждый раз, когда я выбираю область, по умолчанию всегда используется /Pictures, и я хотел бы редактировать либо каталог по умолчанию, либо быстрый выбор выпадающего меню, который он мне представляет.

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

Для этого конкретного случая я искал в Интернете, какую команду использует Ubuntu для создания снимков экрана, которая оказывается import ,

Так что мой вопрос в том, каков подход (ы) к

Найдите информацию о файлах конфигурации / местоположении / уровне кода (например, не о том, как ее вызывать, а о том, что конкретно она делает, когда вызывается) команды терминала

Как узнать, какой терминальной команде соответствует конкретное действие. (Выяснение import называется когда я сделал скриншот например)

Другими словами, как я мог понять это сам, если у меня не было доступа к Интернету, или никто не знал ответа?:) Меня больше интересует подход / логика, однако import в этом случае будет хорошим примером.

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

Это должно быть сохранено где-то в операционной системе. «Это невозможно, потому что. » (возможно, это на уровне сборки) также является ответом, но использование man для получения инструкций о том, что делает эта функция, не является ответом, потому что я хочу понять, как она работает.

Другими словами, если ниндзя Linux должен был изменить команду импорта на своем локальном компьютере, куда он пойдет и скажет добавить подпись на изображениях, сохраненных со скриншотом.

4 ответа

В поисках источника

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

Например, чтобы узнать больше о ls команда, Google ls source code , который даст вам один специальный удар Google прямо вверху, который говорит вам, что ls является частью coreutils ,

Coreutils, которые являются GNU, а не Linux, — это команды, которые вы используете весь день в большинстве дистрибутивов. С этой целевой страницы вы легко можете либо загрузить весь tar-архив, либо просмотреть его git-репозиторий напрямую.

Например, это наиболее интересный каталог (на данный момент ссылка показывает фиксированный хеш, поэтому обязательно просмотрите сверху снова, если вы прочитаете этот ответ позже): историческое представление «src» в основной ветке

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

Где все?

which ls показывает, где находится этот конкретный двоичный файл.

Стандарт файловой системы Linux перечисляет все обычные места, где хранятся файлы.

Управление пакетами

В зависимости от вашего дистрибутива вы можете более или менее легко загружать исходные пакеты через менеджер пакетов (например, apt-get source $package ), что должно быть еще более безболезненным. Это имеет очевидное преимущество: а) это очень просто и б) должно возвращать именно ту версию исходного кода, которую фактически использует ваш бинарный файл. В зависимости от распределения конечно.

Поиск вещей

Суть вашего вопроса в том, как узнать о поведении какого-либо программного обеспечения. Обычно это нетривиально, если вы просто выбираете источник. В крайних случаях, т. Е. Если программное обеспечение действительно критично / важно для вас, и вы обязательно должны заставить его работать, это может быть жизнеспособным путем, но в целом вам лучше не гуглить. Я выполнил свою часть (ab), используя исходный код больших пакетов, особенно при компиляции программного обеспечения (часто бывают странные крайние случаи, когда библиотеки или версии компилятора имеют небольшие несоответствия), и я уверяю вас, что это может быть выполнено, но часто много работы.

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

Относительно того, как другие люди узнают; часто они делают это потому, что на самом деле работают с программным обеспечением, и с ними связываются через их баг-трекер — знание базы кода уже очень помогает.

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

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

Взяв его на следующий уровень

Все это приятно и весело, но если вы хотите глубоко проникнуть в кроличью нору, вы можете загрузить Linux с нуля. Этот веб-сайт поможет вам полностью построить (хотя и очень небольшую) систему Linux с нуля, то есть из исходного кода. Нет готовых двоичных файлов вообще.

Читайте также:  Hancom office для windows

Быстрый ответ:

Исследуйте терминальную команду.

Там нет абсолютного правила набора, где хранятся переменные или детали. Если вы не знаете подробностей терминальной команды, вам придется посмотреть ее, чтобы быть уверенным.

У большинства команд терминала, особенно у команд, которые имеют много опций, есть руководства, которые установлены в системе по умолчанию, что упрощает поиск. Это также включает в себя оболочку для команд терминала, которая в случае с Ubuntu bash по умолчанию.

До того, как Интернет стал настолько популярным, что он не знал, на что вы ссылаетесь, люди полагались на библиотеки, книги и руководства. У людей было много книг и руководств в их доме. Они часто ходили в книжный магазин и библиотеку. Раньше я проводил много часов в библиотеке, почти всегда две или три книги проверяли на предмет домашнего исследования (или программирования и команд). Прошло около 20 лет с тех пор, как я пошел в библиотеку, чтобы заняться исследованиями. Я время от времени хожу в библиотеку на какие-то семинары или встречи. Я также принадлежал к двум компьютерным клубам, которые делились информацией. Оба клуба публиковали ежемесячные информационные бюллетени, которые включали важную информацию о компьютерах и программировании.

Если у вас нет доступа к Интернету, вы можете использовать руководства, которые уже являются вашим компьютером, для команд терминала.

Спасибо за терминальную команду и введите это:

Вы можете исследовать bash и команду import (из вашего вопроса) с помощью:

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

Чтобы узнать подробности переменных команды, вам нужно изучить конкретную команду. Некоторые из одних и тех же команд могут даже иметь различные разновидности или варианты, которые могут хранить некоторые из этих переменных или подробностей в другой области в зависимости от дистрибутива Linux или сопровождающего конкретной команды.

Как скачать исходный код команд и приложений Ubuntu:

Вы можете скачать исходный код команд, добавив исходный код в свой репозиторий. Вы можете найти это по:

  • Перейти к программному обеспечению и обновлениям ->
  • (нажмите на вкладку) Программное обеспечение Ubuntu ->
  • (поставьте галочку) Исходный код

    Используйте эту команду для получения исходного пакета, который вы хотите загрузить:

    Источник

    Администрирование систем Linux. Ядро Linux

    Часть VI. Работа с ядром ОС

    Глава 28. Ядро Linux

    28.1. О ядре Linux

    28.1.1. Версии ядра

    В 1991 году Linus Torvalds разработал первую версию ядра Linux. Он выложил исходный код ядра в открытый доступ, после чего другие люди начали вносить свой вклад в его развитие. В разработке одной из версий ядра (а именно, версии 2.6.27, выпущенной в ноябре 2008 года) поучаствовало более 4000 разработчиков.

    Для основных версий ядра Linux используются четные и нечетные номера. Ранее существовало разделение версий, в соответствии с которым версии 2.0 , 2.2 , 2.4 и 2.6 считались стабильными. В то же время версии 2.1 , 2.3 и 2.5 считались нестабильными (или разрабатываемыми). Начиная с выпуска версии ядра 2.6.0 в январе 2004 года вся разработка велась в рамках ветки 2.6. Версия ядра 2.7.0 так и не была выпущена и, судя по заявлениям главного разработчика ядра, которым все также является Linus Torvalds, схема разделения версий ядра на четные/стабильные и нечетные/разрабатываемые не используется и не будет использоваться в будущем.

    28.1.2. Команда uname -r

    Для того, чтобы узнать текущую версию ядра Linux, следует использовать команду uname -r таким образом, как показано ниже.

    В первом примере показан вывод данной команды в системе с ядром Linux основной версии 2.6 и дополнительной версии 24 . Остальная часть строки -22-generic является специфичной для дистрибутива (в данном случае используется дистрибутив Ubuntu).

    При выполнении этой же команды в дистрибутиве Red Hat Entrprise Linux можно получить информацию о более старом ядре (версии 2.6.18), причем строка -92.1.17.el5 также является специфичной для дистрибутива.

    28.1.3. Файл /proc/cmdline

    Параметры, которые были переданы ядру ОС в процессе загрузки системы, могут быть получены из файла /proc/cmdline .

    28.1.4. Однопользовательский режим

    В случае передачи ядру Linux параметра single будет осуществляться загрузка системы в однопользовательском режиме . В данном случае после загрузки ядра Linux будет запущена командная оболочка bash с привилегиями пользователя root (ввода пароля не потребуется).

    В некоторых дистрибутивах данная возможность заблокирована (на этапе компиляции ядра ОС).

    28.1.5. Параметр init=/bin/bash

    Обычно ядро ОС запускает бинарный файл, путь к которому передан с помощью параметра init , создавая таким образом первый процесс-демон. Добавление параметра init=/bin/bash к строке параметров ядра позволяет вызывать командную оболочку bash (снова с правами пользователя root без необходимости ввода пароля).

    28.1.6. Файл журнала /var/log/messages

    Ядро ОС в процессе загрузки передает демону syslogd информацию о множестве выполняемых действий, которая сохраняется в файле журнала /var/log/messages . Из данного файла журнала можно извлечь информацию о процессе загрузки ядра, включая информацию обо всех устройствах, которые были идентифицированы в процессе загрузки системы.

    А в данном примере показан фрагмент файла /var/log/messages , который может использоваться для извлечения информации о дисковом устройстве, представленном файлом устройства /dev/sda .

    28.1.7. Утилита dmesg

    Утилита dmesg выводит все сообщения ядра ОС (с момента последней загрузки системы).

    Следовательно, в случае поиска информации о дисковом устройстве, представленном файлом устройства /dev/sda, с помощью утилиты dmesg , будут выведены только сообщения ядра ОС с момента последней загрузки системы.

    28.2. Исходный код ядра Linux

    28.2.1. Ресурс ftp.kernel.org

    Официальное хранилище архивов исходного ядра Linux расположено по адресу ftp.kernel.org . Данный ресурс содержит архивы исходного кода всех официальных выпусков ядра Linux начиная с 1991 года. Доступ ко всем архивам исходного кода, а также к файлам со списками изменений и файлам с исправлениями может осуществляться по протоколам http, ftp и rsync. Дополнительная информация может быть получена на вебсайте www.kernel.org .

    Читайте также:  Linux mint second monitor

    Каждый человек может воспользоваться ftp-клиентом для осуществления анонимного входа на ресурс ftp.kernel.org.

    Архивы исходного кода всех версий ядра Linux расположены по пути pub/linux/kernel/.

    28.2.2. Директория /usr/src

    Исходный код ядра ОС на вашем локальном компьютере должен быть расположен в директории /usr/src . Учтите, что структура поддиректорий директории /usr/src может отличаться в зависимости от используемого вами дистрибутива.

    В первую очередь давайте рассмотрим структуру поддиректорий директории /usr/src в дистрибутиве Debian . В данном случае в этой директории можно обнаружить две версии полного исходного кода ядра Linux. При поиске определенного файла (e1000_main.c) исходного кода с помощью утилиты find можно получить полный путь к этому файлу.

    Данная структура поддиректорий очень похожа на структуру поддиректорий директории /usr/src в дистрибутиве Ubuntu за тем исключением, что в данном случае в директории расположен исходный код одной версии ядра (и эта версия более новая).

    Теперь давайте рассмотрим содержимое директории /usr/src в дистрибутиве Red Hat Entrprise Linux .

    Нам придется погрузиться немного глубже в дерево директорий для того, чтобы добраться до исходного кода ядра ОС в дистрибутиве Red Hat!

    28.2.3. Загрузка исходного кода ядра ОС

    Установка пакета программного обеспечения с исходным кодом ядра ОС в дистрибутиве Debian осуществляется достаточно просто с помощью команды aptitude install linux-source . В первую очередь вы можете осуществить поиск всех пакетов программного обеспечения с именами linux-source таким образом, как показано в примере ниже.

    После этого вы можете использовать команду aptitude install для загрузки и установки пакета программного обеспечения с исходным кодом ядра Linux из состава дистрибутива Debian.

    После того, как утилита aptitude закончит работу, вы обнаружите новый файл с именем /usr/src/linux-source- .tar.bz2 в файловой системе вашего компьютера.

    Дистрибутив Ubuntu основывается на дистрибутиве Debian, причем в нем также может использоваться утилита aptitude , поэтому задача полностью аналогична предыдущей.

    И после того, как утилита aptitude завершит свою работу, мы получим файл /usr/src/linux-source- .tar.bz2 .

    Red Hat Enterprise Linux

    Ранее пакет программного обеспечения с исходным кодом ядра ОС располагался на четвертом установочном диске с пакетами исходного кода дистрибутива Red Hat Enerprise Linux. Файл пакета программного обеспечения носит имя kernel-2.6.9-42.EL.src.rpm (пример для дистрибутива RHEL версии 4 с обновлением 4). Также данный пакет доступен по адресу ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/ (пример для дистрибутива RHEL 5).

    Для загрузки пакета исходного кода ядра ОС дистрибутива RHEL следует использовать длинную команду (команда должна располагаться в одной строке без завершающего символа \).

    После того, как утилита wget закончит свою работу, вы получите файл с расширением .rpm размером в 60 Мб.

    Нам придется выполнить дополнительные действия для того, чтобы использовать исходный код ядра ОС из пакета программного обеспечения по назначению.

    В первую очередь мы должны выполнить команду rpm -i kernel-2.6.9-42.EL.src.rpm для установки загруженного пакета программного обеспечения дистрибутива Red Hat.

    После этого мы должны перейти в директорию SPECS и задействовать утилиту rpmbuild .

    Утилита rpmbuild поместит исходный код ядра Linux дистрибутива RHEL в директорию /usr/src/redhat/BUILD/kernel- / .

    28.3. Файлы, используемые в процессе загрузки ядра ОС

    28.3.1. Файл vmlinuz

    Файл vmlinuz из директории /boot является сжатым исполняемым файлом ядра ОС.

    28.3.2. Файл initrd

    Ядро ОС использует файл initrd (Initial RAM disk — диск в оперативной памяти для начальной инициализации) в процессе загрузки системы. Данный диск монтируется до момента окончания загрузки ядра ОС и может содержать дополнительные драйверы и модули ядра ОС. На самом деле, данный файл является сжатым архивом формата CPIO , поэтому вы можете просмотреть его содержимое следующим образом.

    28.3.3. Файл System.map

    Файл System.map содержит таблицу символов и изменяется при каждой компиляции ядра ОС. Таблица символов также присутствует в файле /proc/kallsyms (до выпуска ядра Linux версии 2.6 данный файл носил имя /proc/ksyms).

    28.3.4. Файл .config

    Последним файлом, копируемым в директорию /boot, является файл со значениями параметров конфигурации ядра ОС, используемый в процессе его компиляции. Данный файл не должен находиться директории /boot для корректного функционирования ядра ОС, но размещение его копии в данной директории является обычной практикой. Благодаря его наличию появляется возможность осуществления повторной компиляции ядра ОС с использованием тех же значений параметров конфигурации, которые были использованы для компиляции существующего работоспособного ядра ОС.

    28.4. Модули ядра Linux

    28.4.1. Информация о модулях ядра Linux

    Ядро Linux является монолитным ядром с поддержкой загружаемых модулей. Данные модули содержат части ядра ОС, обычно используемые в качестве драйверов устройств, реализаций файловых систем и сетевых протоколов. В большинстве случаев необходимые модули ядра ОС загружаются автоматически и динамически без вмешательства системного администратора.

    28.4.2. Директория /lib/modules

    Модули ядра ОС хранятся в директории /lib/modules/ . Для хранения модулей каждой версии ядра Linux, которая была скомпилирована для вашей системы, создается отдельная директория.

    Имя файла, содержащего код модуля ядра ОС, обычно оканчивается на .ko . В данном примере показано расположение файлов модулей ядра ОС, предназначенных для поддержки протокола isdn.

    28.4.4. Утилита lsmod

    Для ознакомления со списком загруженных в текущий момент модулей ядра ОС, следует использовать утилиту lsmod . В выводе утилиты вы можете обнаружить информацию об имени каждого из загруженных модулей, его размере, значении счетчика использования модуля, а также именах других модулей, использующих данный модуль.

    28.4.5. Файл /proc/modules

    Файл /proc/modules содержит список всех модулей, загруженных ядром ОС. Список модулей ядра ОС из данного файла является слишком длинным для того, чтобы приводить его в данной книге, поэтому давайте используем утилиту grep для поиска модуля с именем vm .

    Мы видим, что одновременно загружены модуля ядра ОС vmmon и vmnet. Вы можете получить ту же самую информацию и с помощью утилиты lsmod . На самом деле, утилита lsmod всего лишь читает содержимое файла /proc/modules и выводит его с соответствующим форматированием.

    28.4.6. Зависимости модулей ядра ОС

    Некоторые модули ядра ОС зависят от других модулей ядра ОС. В следующем примере вы можете увидеть, что модуль ядра ОС с именем nfsd зависит от модулей с именами exportfs, lockd и sunrpc.

    28.4.7. Утилита insmod

    Модули ядра ОС могут быть загружены в ручном режиме с помощью утилиты insmod . Это очень простой (и устаревший) способ загрузки модулей ядра ОС. В примере ниже показан процесс загрузки модуля ядра ОС с именем fat (реализующего поддержку файловой системы fat).

    Читайте также:  Кнопки вперед назад для windows 10 пропали

    Утилита insmod не определяет зависимости между модулями ядра ОС, поэтому в следующем примере нам не удалось загрузить с помощью данной утилиты модуль с именем isdn (так как модуль с именем isdn зависит от модуля с именем slhc).

    28.4.8. Утилита modinfo

    Как вы можете увидеть в представленном ниже выводе утилиты modinfo , модуль ядра ОС с именем isdn зависит от модуля ядра ОС с именем slhc.

    28.4.9. Утилита modprobe

    Большим преимуществом утилиты modprobe перед утилитой insmod является возможность первой утилиты загружать все необходимые модули ядра ОС, в то время, как вторая утилита требует загрузки всех необходимых модулей ядра ОС в ручном режиме. Другое преимущество данной утилиты заключается в отсутствии необходимости указания полного пути к файлу загружаемого модуля ядра ОС.

    В данном примере показан способ загрузки модуля с именем isdn с помощью утилиты modprobe с автоматической загрузкой модуля с именем shlc в фоновом режиме.

    28.4.10. Файл /lib/modules/ /modules.dep

    Зависимости модулей ядра ОС описаны в рамках файла с именем modules.dep .

    28.4.11. Утилита depmod

    Файл modules.dep может быть обновлен (повторно создан) с помощью утилиты depmod . В следующем примере не было добавлено никаких новых модулей ядра ОС, поэтому утилита depmod сгенерировала идентичный файл.

    28.4.12. Утилита rmmod

    По аналогии с утилитой insmod , утилита rmmod на сегодняшний день практически не используется.

    28.4.13. Команда modprobe -r

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

    28.4.14. Файл конфигурации /etc/modprobe.conf

    Файл конфигурации /etc/modprobe.conf и специальные файлы конфигурации из директории /etc/modprobe.d могут содержать псевдонимы (для использования людьми), а также параметры (для зависимых модулей ядра ОС), используемые утилитой modprobe .

    28.5. Компиляция ядра ОС

    28.5.1. Дополнительная версия

    Перейдите в директорию /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/ и измените дополнительную версию ядра ОС, заменив значение параметра extraversion в файле с именем Makefile.

    28.5.2. Команда make mrproper

    Теперь необходимо удалить результаты предыдущих сборок ядра ОС с помощью команды make mrproper . В том случае, если это ваша первая сборка после загрузки исходного кода, вы не должны выполнять это действие.

    28.5.3. Файл .config

    Теперь скопируйте работоспособный файл с именем .config из директории /boot в директорию с исходным кодом вашего ядра ОС. Этот файл содержит значения параметров конфигурации, которые использовались при компиляции вашего текущего ядра ОС. Грубо говоря, данный файл содержит информацию о том, должны ли компилироваться определенные модули ядра ОС.

    28.5.4. Команда make menuconfig

    Теперь следует выполнить команду make menuconfig (или команду make xconfig в случае использования графического интерфейса). Запущенная утилита позволит вам установить, необходимо ли компилировать определенный модуль (m), включить код модуля в состав ядра ОС (*) или вообще не компилировать его (что позволит сократить размер ядра ОС). Если вы откажитесь от компиляции слишком большого количества модулей, ваше ядро ОС не будет работать корректно. Данные конфигурации будут сохранены в скрытом файле с именем .config.

    28.5.5. Команда make clean

    Выполните команду make clean для подготовки исходного кода ядра ОС к компиляции. Команда make clean позволяет удалить большую часть сгенерированных файлов, но сохраняет ваши файлы конфигурации ядра ОС. Исполнение команды make mrproper на данном этапе приведет к уничтожению файла .config, который был создан в результате исполнения команды make menuconfig .

    28.5.6. Команда make bzImage

    А теперь следует выполнить команду make bzImage , присесть и расслабиться, ожидая окончания процесса компиляции ядра ОС. Вы также можете использовать команду time make bzImage , чтобы получить информацию о времени, необходимым для компиляции ядра ОС, которая может понадобиться для планирования непродолжительной прогулки во время следующей компиляции.

    Исполнение данной команды завершится выводом информации о пути к результирующему файлу bzImage (а также времени компиляции, если вы также использовали команду time ).

    На данном этапе вы можете вручную скопировать результирующий файл в директорию /boot с помощью команды cp arch/i386/boot/bzImage /boot/vmlinuz- .

    28.5.7. Команда make modules

    Теперь следует выполнить команду make modules . На компиляцию всех модулей ядра ОС уйдет от 20 до 50 минут.

    28.5.8. Команда make modules_install

    Для копирования всех скомпилированных модулей ядра ОС в директорию /lib/modules следует всего лишь выполнить команду make modules_install (на установку модулей уйдет примерно 20 секунд). В примере ниже приведен список содержимого директории модулей перед исполнением упомянутой команды.

    А это список содержимого этой же директории после исполнения этой команды. Обратите внимание на то, что в процессе исполнения команды make modules_install была создана новая директория для модулей нового ядра ОС.

    28.5.9. Директория /boot

    Нам все также необходимо скопировать исполняемый файл ядра ОС, файл System.map и наш файл со значениями параметров конфигурации ядра ОС в директорию /boot. Строго говоря, копировать файл со значениями параметров конфигурации ядра ОС с именем .config совсем не обязательно, но он может пригодиться в будущем при компиляции ядра ОС.

    28.5.10. Утилита mkinitrd

    Ядро ОС обычно использует файл initrd в процессе загрузки. Мы можем использовать утилиту mkinitrd для генерации этого файла. Убедитесь в том, что вы используете корректное имя ядра ОС!

    28.5.11. Системный загрузчик

    На этом компиляция ядра ОС закончена, но не следует забывать о необходимости создания дополнительного станса для отображения пункта в меню системного загрузчика grub или lilo.

    28.6. Компиляция отдельного модуля ядра ОС

    28.6.1. Файл исходного кода hello.c

    Небольшая программа на языке C послужит основой для нашего модуля ядра ОС.

    28.6.2. Файл Makefile

    Файл для сборки модуля ядра ОС будет содержать следующие строки.

    Для компиляции модуля необходимы только два описанных файла.

    28.6.3. Команда make

    В примере ниже представлен результат исполнения команды make .

    Теперь у нас больше файлов.

    28.6.4. Файл hello.ko

    Следует использовать утилиту modinfo для проверки того, действительно ли файл с расширением .ko является модулем ядра ОС.

    Отлично, значит мы можем загрузить наш модуль ядра ОС с именем «hello».

    Наконец мы можем обнаружить небольшой сюрприз в файле журнала /var/log/messages .

    Источник

  • Оцените статью