Ядро Злому середовища


22

Я працював у вбудованій ОС на зразок uCOS, ThreadX. Поки я кодував програми в Linux, тепер я планую почати вивчати Linux Kernel. У мене мало питань щодо довкілля.

  1. Який найкращий дистрибутив, у якому є прості у використанні інструменти для розробки ядра? (до цих пір я використовував RHEL та Fedora. Хоча мені це зручно, схоже, що Ubuntu має вбудовані сценарії для легкої компіляції ядра, наприклад make_kpkg, тощо)

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

  3. Який інструмент найкращий для налагодження та відстеження коду ядра? Як згадувалося раніше, чи є єдиною можливістю послідовна консоль? Або для ПК існує якийсь інтерфейс IDE / JTAG?


3
Для №1 сам Лінус використовує Fedora, так що можливо щось говорить. Я недостатньо знаю цю тему, щоб справді дати відповідь, але мені було б цікаво, що кажуть інші.
jonescb

1
make_kpkg походить від Debian, на якому базується Ubuntu, і мій фаворит distro;)
Видалений обліковий запис

Відповіді:


14

Мій особистий смак для розробки ядра Linux - Debian. Тепер для ваших балів:

  1. Як ви, напевно, здогадалися, Ubuntu не приносить ядра нічого нового для полегшення розробки afaik, крім того, що вже є в Debian. Наприклад, make_kpkg - це функція Debian, а не Ubuntu. Ось декілька посилань, щоб розпочати роботу зі звичайними завданнями розробки ядра Linux в Debian:

  2. Найпростіший спосіб налагодження ядра - це використання QEMU та GDB. Деякі посилання для початку роботи:

    Хоча вам слід пам’ятати, що цей метод не є життєздатним для певних сценаріїв, таких як налагодження конкретних апаратних проблем та таких, для яких краще використовувати фізичну послідовну налагодження та реальне обладнання. Для цього ви можете використовувати KGDB (він працює і за допомогою Ethernet). КДБ - також хороший вибір. О, і до речі, і KGDB, і KDB були об'єднані в ядро ​​Linux. Більше про цих двох тут . Інший класний метод, який чудово працює для проблем, не пов'язаних з обладнанням, - це використання ядра Linux в режимі користувача . Запуск ядра в режимі користувача, як і будь-який інший процес, дозволяє налагоджувати його так само, як і будь-яка інша програма ( приклади ). Детальніше про користувальницький режим Linuxтут . UML є частиною ядра Linux з 2.6.0, тому ви можете створити будь-яку офіційну версію ядра вище цієї в режимі UML, виконавши ці кроки .

  3. Див. Пункт 2. На жаль, тут не існує найкращого методу, оскільки кожен інструмент / метод має свої плюси та мінуси.


Спасибі! для детальної відповіді. До речі, мене цікавлять fs та біо підсистеми в ядрі. який тип налаштування був би найкращим для мене?
rajaganesh87

UML і QEMU - це, мабуть, дорога, оскільки ви можете легко грати з файловими системами безкоштовно.
Шінок

Дуже хороші посилання, лише одне. Моя улюблена також debian, але розробку ядра можна зробити будь-яким дистрибутивом. Можливо, млявість - це найкращий спосіб, якщо ви пурист, оскільки він використовує ванільне ядро, але конфігурація - це не поганий матеріал, ви знайдете найкраще.
D4RIO

Знайдено ще кілька корисних посилань: [Посилання 1] ( ibm.com/developerworks/linux/tutorials/l-kernelhack1/index.html ) [Посилання 2] ( ibm.com/developerworks/linux/tutorials/l-kernelhack2/index. html )
rajaganesh87

6

Якщо ви розробляєте для вбудованої платформи, яка не базується на апаратному забезпеченні i386, вам потрібно перехрестити компіляцію. Проект Emdebian забезпечує ланцюги інструментів для розробки для багатьох архітектур (ARM, m68k, MIPS тощо) на ПК (i386 або amd64). Це означає, що під Debian ви можете просто додати сховища та apt-get встановити ланцюжок інструментів для вибраних цілей.


3

Зонди JTAG існують, але вони досить дорогі (а компанії, що їх будують, мають ексклюзивні договори). Найкращий спосіб налагодження коду ядра - це запустити його в kvm або qemu за допомогою gdbserver всередині емуляції.


Ще краще використовувати користувальницький режим Linux. Linux як звичайний процес користування.
vonbrand

0

По суті, будь-який дистрибутив на головній лінії повинен працювати для цього добре (вони використовують свій власний дистрибутив, щоб зламати його). Використовуйте все, що відчуває себе комфортніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.