2013-03-24 3 views
5

Я пытаюсь скомпилировать ядро ​​Linux 2.6.32.6 с несколькими модулями, встроенными в ядро ​​по очень определенной причине. Я включил Корневую файловую систему на NFS в попытке PXE Загрузите собственное собственное спасение Live-CD по локальной сети. После включения зависимостей и модуля, необходимых для ROOT_NFS, я пытаюсь скомпилировать только ядро ​​Linux с make bzImage. Когда это работает, я получаю ошибкуКомпиляция ошибки ядра Linux xt_CONNMARK.h

make[4]: *** No rule to make target './linux-2.6.32.6/include/linux/netfilter/xt_CONNMARK.h', needed by './linux-2.6.32.6/usr/include/linux/netfilter/.install'. Stop. 

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

Любые предложения по устранению этой ошибки были бы замечательными.

+0

Возможно, вам потребуется очистить 'зависит' от этого файла. * Kbuild * должен был понять, что вы изменяете '.config', но, возможно, не с этой старой версией Linux. –

+0

Сделайте «make clean» первым или вручную, удалите информацию о зависимостях 'Makefile'. Ваша проблема кажется странно знакомой, но я не могу вспомнить, в чем проблема. Возможно, это связано с 'make O = ...'. –

+0

После нескольких попыток я удалил конкретную запись в Kbuild. странная вещь, однако, была там, где 2 записи для 'xt_CONNMARK.h'. Тот, у кого не получилось, было все шапки, а у другого - все в нижнем регистре. Выиграл еще несколько случаев с этим, но как только я удалил все события (всего около 5), система скомпилировалась и загрузилась должным образом. – Blackninja543

ответ

10

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

Для тех, кому интересно, файлы, которые находятся на этом пути, находятся в дереве netfilter - см. include/linux/netfilter/xt_CONNTRACK.h против include/linux/netfilter/xt_conntrack.h в версии 3.0.

Итак, эти файлы существуют, но вы их потеряли. Получите новое исходное дерево, распакуйте его в зависящей от регистратора файловой системе, и у вас больше не будет этой ошибки. В качестве альтернативы, скопируйте файлы из «первозданного» исходного дерева или github mirror of the kernel, если вы боитесь потерять изменения в своем дереве - они, скорее всего, не будут изменены из версии в вашей компиляции.

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