Intereting Posts
Как остановить пленник в Элементарной ОС Фрейи? Проблема с переключением сети Реконструкция двоичного дампа dmidecode из / sys / firmware / dmi / tables Проблема: слияние команды с конвейером и аргументом Как сделать загрузочную полную резервную копию корневого сервера Debian на облачный накопитель "Не удалось зафиксировать изменения в dconf: соединение закрыто" Настройка исполнения права на весь каталог – это хорошая или плохая идея? Разрешено авторизацию скрипта Systemd Fedora 25 как объявить переменные командной строки в сценариях оболочки? awk заменить конкретный столбец в определенной строке Сценарий Bash для отображения вновь введенных переменных env Как получить доступ к графическому интерфейсу «Настройки обновления программного обеспечения» на сервере RHEL 7? Apache server 32 двоичные файлы против 64 двоичных файлов? какая разница Сравните 2 файла и сохраните вывод как file1_value, file2_value, Match / NoMatch История команд и каталогов, в которых мы находились

Ядерная среда для ядра

Я работал во встроенной ОС, например, uCOS, ThreadX. Хотя у меня есть закодированные приложения в Linux, теперь я планирую начать изучение ядра Linux. У меня мало вопросов относительно окружающей среды.

  1. Какой лучший дистрибутив, который имеет простые в использовании инструменты для разработки ядра? (до сих пор я использовал RHEL и Fedora. Хотя мне это нравится, также похоже, что Ubuntu имеет встроенные скрипты для простой компиляции ядра, например make_kpkg и т. д.),

  2. Можете ли вы описать лучшую настройку для отладки ядра? Отлаживая другие встроенные операционные системы, я использовал последовательный порт для создания дампа, JTAG и т. Д. Какую настройку используют разработчики ядра Linux? (Будет ли мой тестовый ПК с последовательным портом достаточным для моих нужд? Если да, то как настроить ядро ​​для вывода на последовательный порт?) Я планирую перенаправить сообщения ядра на последовательную консоль, которые будут прочитаны на моем ноутбуке.

  3. Какой инструмент лучше всего подходит для отладки и отслеживания кода ядра? Как упоминалось ранее, последовательная консоль – единственный способ? Или какой-либо интерфейс IDE / JTAG существует для ПК?

Моим личным вкусом для разработки ядра Linux является Debian. Теперь для ваших вопросов:

  1. Как вы, наверное, догадались, что Ubuntu не приносит ничего нового для ядра, облегчая разработку ядра afaik, помимо того, что уже доступно в Debian. Например, make_kpkg – это подвиг Debian. а не Ubuntu. Вот некоторые ссылки, которые помогут вам начать работу с основными задачами разработки ядра Linux в Debian:

    • Глава 4 – Общие задачи, связанные с ядрами, в Руководстве ядра ядра Debian Linux
    • Глава 10 – Debian и ядро Debian GNU / Linux FAQ
  2. Самый простой способ выполнить отладку ядра – использовать QEMU и gdb. Некоторые ссылки, чтобы вы начали:

    Тем не менее, вы должны знать, что этот метод не является жизнеспособным для определенных сценариев, таких как отладка отдельных аппаратных проблем и т. Д., Для которых вам лучше использовать физическую последовательную отладку и реальное оборудование. Для этого вы можете использовать KGDB (он также работает с использованием ethernet). KDB также является хорошим выбором. О, и, кстати, как KGDB, так и KDB были объединены в ядро ​​Linux. Подробнее об этих двух здесь . Еще один классный метод, который отлично работает для не связанных с аппаратным обеспечением проблем, использует ядро Linux для пользовательского режима . Запуск ядра в пользовательском режиме, так как любой другой процесс позволяет вам отлаживать его, как и любую другую программу ( примеры ). Подробнее о Linux-режиме пользователя здесь . UML является частью ядра Linux с версии 2.6.0, поэтому вы можете построить любую официальную версию ядра выше, чем в режиме UML, выполнив следующие шаги .

  3. См. 2. К сожалению, здесь нет лучшего, так как каждый инструмент / метод имеет свои профи и con.

Надеюсь, это поможет вам начать свое безумное путешествие в Linux Kernel Development.

Если вы разрабатываете встроенную платформу, не основанную на оборудовании i386, вам необходимо выполнить кросс-компиляцию. Проект Emdebian предоставляет инструментальные средства для разработки для многих архитектур (ARM, m68k, MIPS и др.) На ПК (i386 или amd64). Это означает, что в Debian вы можете просто добавить репозитории и apt-get установить инструментальную цепочку для целевых объектов по вашему выбору.

JTAG-зонды существуют, но они довольно дороги (и компании, строящие их, имеют эксклюзивные контракты). Лучший способ отлаживать код ядра – запустить его в kvm или qemu с помощью gdbserver внутри эмуляции.

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