2013-02-10 2 views
1

Я хочу научиться программированию ядра Linux, поэтому я загрузил исходный код ядра Linux 3.7.6 с сайта www.kernel.org. Однако перед редактированием чего-либо я попытался скомпилировать его, используя онлайн-учебники.Быстрое тестирование ядра Linux

make занимает много времени, чтобы скомпилировать, и я еще не закончил его. Есть ли быстрый способ изменить исходный код и проверить его? Потому что я читал, что компиляция ядра занимает около часа.

Кроме того, если возможно скопировать и протестировать измененное ядро ​​на USB-накопителе? Возможно ли установить GRUB на USB-накопитель, скопировать ядро ​​на USB, настроить GRUB на USB и затем запустить его? Если это так, пожалуйста, дайте мне какие-либо ресурсы, которые имеют шаги для этого. У меня также установлен GRUB на моем ноутбуке. Как настроить новый GRUB на USB, не нарушая настройки на моем ноутбуке?

спасибо .. :)

+5

Не беспокойтесь. Это займет много времени. Если вы измените один исходный файл и перекомпилируете, будет скомпилирован только этот файл. Таковы чудеса 'make'. –

+3

Я рекомендую вам использовать виртуальную машину для тестирования, по крайней мере для первых итераций: Qemu может напрямую загружать ядро. Это быстрее и легче загружаться, и вы не рискуете своей собственной машиной, когда нарушаете вещи. Потому что вы _will_ сломаете что-то ... – rodrigo

ответ

2

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

Очень легко иметь несколько вариантов загрузки (с использованием разных ядер) путем добавления новых записей в grub.cfg (для grub2). Однако я не могу просто повторить несколько страниц документации.

+0

Я получил grub2 (я еще не создал grub.cfg). Только отформатированный USB-накопитель с ext4 и установленный grub2 на нем с помощью 'grub-install'. –

5

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

Почему бы вам не начать использовать небольшое программирование ядра, например, вводить ОЧЕНЬ простые драйверы или что-то делать с netfilter (вы можете почти контролировать весь TCP/IP с помощью этого), не требуя компиляции ядра ?

Kernel modules ваши друзья :)
Они просто кусок кода, который вы собираете отдельно затем попросите работает ядра (с помощью команды insmod Linux), чтобы прикрепить этот код к работающему ядру и там ты иди! У вас есть собственный код, запущенный в пространстве ядра.

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

Для того, чтобы вы знаете, что вы можете сделать с помощью модулей ядра:
-Драйвер
-Добавления новой функциональности в ядро ​​
-У лично использовал его с Netfilter (набором функций и крючков в ядро), чтобы изменить обработку сетевого трафика
-Вы можете также исправить свое ядро ​​(изменить исходный код, скомпилировать, запустить все это), затем использовать модули ядра для редактирования somethings, которые обычно нуждаются в полной перекомпиляции, например, при редактировании системных вызовов; хотя этот подход не рекомендуется, но он может увеличить время тестирования, когда каждый раз, когда вы хотите выполнить тест, который вам не нужно компилировать и перезапускать.
-Much more ..

Сообщите мне, если я запутался в какой-то момент.

Смежные вопросы