Не скомпилировать все ядро, только его часть
Меня интересует понимание ядра Linux. Особенно файловая система. Поэтому я помещаю операторы "printk" в файлы (такие как inode.c, ialloc.c и т. Д.) В папку fs/ext3/ в исходном коде ядра.
Итак, теперь я хочу, чтобы вместо компиляции всего ядра я хотел компилировать только ту часть, которая связана с файловой системой ext3. Есть ли способ компилировать только часть, в которую я внес изменения в системах на основе Debian (я использую Ubuntu 14.04). Я должен ждать, пока все ядро скомпилируется без необходимости, хотя я внес изменения только в небольшую его часть. Пожалуйста, помогите мне в этом отношении.
PS - Я искал в Интернете и нашел некоторые ссылки тоже. Но они не являются удовлетворительными. Их шаги указывают на компиляцию полного ядра вместо этого.
3 ответа
Собрать индивидуальный модуль (ext3 в вашем случае). попробуйте сделать M="path_to_module"
cd linux-src
make M=fs/ext3
Да, я согласен, сэр, но он собирает полное ядро. И что я хочу, так это собрать только ту часть, где я внес изменения, и добавить ее в существующее ядро. Не собирайте все ядро за небольшие изменения.
Если я правильно понимаю, вы хотите скомпилировать объектный код для файловой части ядра и каким-то образом взломать его в текущем ядре.
Короткий ответ:
Это не может быть сделано. Просто скомпилируйте все ядро. После первой компиляции make
будет гарантировать, что только измененные файлы будут перекомпилированы, поэтому будущие сборки будут быстрыми.
Длинный ответ:
Если ваше текущее работающее ядро скомпилировало поддержку EXT3 как модуль (я предполагаю, что это возможно - я не проверял), вы также можете попробовать скомпилировать измененный код вашей файловой системы как модуль и заменить его на работающее ядро, выгружая его. текущий модуль файловой системы и загрузка вашего. Конечно, вы сможете сделать это, только если вы на самом деле не используете драйвер EXT3 во время выгрузки.
Затем вы столкнетесь с теми же проблемами, что и сборка и запуск модулей ядра OOT. Вам почти наверняка понадобятся заголовки ядра, та же версия компилятора, которая использовалась для компиляции текущего ядра и исходных кодов ядра для соответствия. Вам также может понадобиться возиться с файлами Makefile, чтобы модули внутри дерева можно было собрать как модуль OOT.
Конечно, все это предполагает, что ваше текущее ядро было собрано с драйвером EXT3 в качестве загружаемого модуля ядра, что может быть не так.
Если это не так, вам не повезло. Если вы сообразительны, вы можете использовать некоторые хакеры для компоновки, чтобы заменить подсистему EXT3 вашими измененными объектными файлами в вашем текущем ядре. Если это не имеет смысла для вас, достаточно сказать, что это невозможно.
Я предположил, что вы изменили fs/ext3/inode.c
Предположим, что ваш исходный каталог ядра - linux-xxx, измените каталог
CD Linux-XXX
Чтобы скомпилировать конкретный файл
make./fs/ext3/inode.o
Только определенный файл будет скомпилирован. Сделайте то же самое для всех файлов, которые вы изменили.