2013-03-24 18 views
5

Próbuję skompilować jądro Linux 2.6.32.6 z kilkoma modułami wbudowanymi w jądro z bardzo konkretnego powodu. Zawarłem system plików Root na NFS, próbując PXE Uruchomić własną niestandardową ratunkową Live-CD przez LAN. Po uwzględnieniu zależności i modułu wymaganych dla ROOT_NFS, próbuję skompilować tylko jądro Linux z make bzImage. Gdy ta biegnie pojawia się błądKompilowanie jądra Linuxa Błąd 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. 

Teraz Próbowałem wyłączenie Netfiltera modułów w konfiguracji i starał się znaleźć żadnych zależności, które sprawiają, że wymagają netfilter, ale błąd ten nadal utrzymuje występujących.

Wszelkie sugestie dotyczące rozwiązania tego błędu będą wspaniałe.

+0

Prawdopodobnie musisz wyczyścić plik "zależy" od tego pliku. * Kbuild * powinien był zauważyć, że zmieniasz '.config', ale może nie w tej starszej wersji Linuksa. –

+0

Wykonaj 'make clean' first lub manual usuwając informacje o zależnościach' Makefile'. Twój problem wydaje się nieznany, ale nie pamiętam, o co chodzi. Może być związane z 'make O = ...'. –

+0

Po kilku próbach usunąłem konkretny wpis w Kbuild. dziwna rzecz jednak była tam, gdzie 2 wpisy dla 'xt_CONNMARK.h'. Ten, który zawiódł, to wszystkie czapki, podczas gdy drugi był cały mały. Zrobiłem to w kilku przypadkach, ale po usunięciu wszystkich zdarzeń (łącznie około 5) system został skompilowany i poprawnie uruchomiony. – Blackninja543

Odpowiedz

10

Jest to najprawdopodobniej dlatego, że masz utracone niektóre pliki z drzewa źródłowego, ponieważ są przenoszone przez system plików, który rozróżnia wielkość liter. W drzewie źródłowym Linux znajduje się około 15 różnych plików z różnych czasów, które są nazywane tymi samymi, ale mają różne wielkości liter. Zazwyczaj nie stanowi to problemu dla osób, które budują jądra Linux, ponieważ w rozsądnych systemach plików rozróżniana jest wielkość liter.

Dla tych, którzy są ciekawi, pliki w ten sposób znajdują się w drzewie netfiltra - patrz na przykład include/linux/netfilter/xt_CONNTRACK.h w porównaniu z include/linux/netfilter/xt_conntrack.h w wersji 3.0.

Pliki te istnieją, ale zostały utracone. Pobierz nowe drzewo źródłowe, rozpakuj je w systemie plików z rozróżnianiem wielkości liter i nie będziesz już mieć tego błędu. Alternatywnie, skopiuj pliki z "nieskazitelnego" drzewa źródłowego lub github mirror of the kernel, jeśli obawiasz się utraty modyfikacji w drzewie - najprawdopodobniej nie zostaną zmienione z wersji w kompilowanej wersji.