Naprawiono: Jak Naprawić Kompilację Modułów Jądra Linux 2.6.

November 16, 2021 By Brock Radcliffe-Brown Off

 

W ciągu ostatnich kilku tygodni kilku czytelników powiedziało nam, że natknęli się na zdobycie modułu jądra Linux 2.6.

Zalecane: Fortect

  • 1. Pobierz i zainstaluj Fortect
  • 2. Otwórz program i kliknij „Skanuj”
  • 3. Kliknij „Napraw”, aby rozpocząć proces naprawy
  • Pobierz to oprogramowanie i napraw swój komputer w kilka minut.

     

     

    Moduły

    Jądra muszą się kompilować inaczej niżregularne niestandardowe aplikacje. Wcześniejsze wersje dokładnego jądra wymagały pozostawieniadużo o tych problemach, które zwykle są przechowywane w plikach makefile.Chociaż są one zorganizowane hierarchicznie, wiele zbędnych parametrównagromadzone w dzieciach sprawiają, że pliki są jeszcze zapłacone za duże i wolą dużetrudne do trzymania. Na szczęście istnieje zwykle niesamowita metodate rzeczy, znane w medycynie jako kbuild, oraz przebieg czynności montażu części zewnętrznychloadable jest w tej chwili w pełni zintegrowany z jednorodnym jądremMechanizm konstrukcyjny. Aby dowiedzieć się więcej o tym, jak skompilować częścinie promowane (jak wszystkie kupowane produkty)można znaleźć w tym podręczniku) ręcznie przeglądać plik linux / Documentation lub kbuild / modules.txt danej osoby.

    Przyjrzyjmy się więc plikowi get makefile, aby zobaczyć, która część jest normalnie wywoływana. Skompilować cześć-1.c :

    Z technicznego punktu widzenia prawie pierwsza linia jest zwykle prawdziwa.niewątpliwie nowe „wszystko” i „czyste” cele normalnie potrzebne do sprzątaniaWygoda. Ty

    mają teraz możliwość skompilowania zaktualizowanego modułu poprzez wydanie polecenia allow. Musisz uzyskać wynik podobny dokiedy:

    Uwaga. Jądro 2.6 wprowadza nową konwencję wyszukiwania plików:Moduły jądra mają teraz rozszerzenie .koh .(należący do rozszerzenia old.o ),różni się nieco od tradycyjnych teczek przewodników. …Powodem jest to, że będzie zawierał dodatkową sekcję modinfoże urządzenie jest dodatkową informacją o zwykle zapisanym komponencie. Fontannawkrótce zobaczymy, do jakich zasobów nadaje się ten rodzaj.

    Nic znaczącego, wystarczająco daleko. Zmienia się w przypadkach, gdy przestajesz z niego korzystać.modinfo to ty z naszych nowych przykładów, hello-5.ko .Of

    Znajdziesz tutaj wiele przydatnych instrukcji. występ autorski dlaRaporty o błędach, informacje o licencji, a nawet konkretny opisAkceptowane parametry.

    Dodatkowe aspekty plików makefile dla modułów jądra:dostępne podczas linux / Documentation - kbuild / makefiles.txt . OstrzeżeniePrzeczytaj to podejście i powiązane pliki przed rozpoczęciem hakowania.Pliki Make. To prawie na pewno pozwoli Ci zaoszczędzić wiele miejsc pracy.

    kompilacja jednostki jądra linux 2.6

    Czas umieścić w nowo skompilowanym module, bo to.jądro z insmod ./hello-1.ko (ignorujcokolwiek zauważysz na uszkodzonych jądrach; tyle zamierzamywkrótce).

    Wszystkie moduły zainstalowane w jądrze są niewątpliwie omówione w / proc / elements . Śmiało i uruchom plik, abyś mógł go zobaczyćże twój moduł jest rzeczywiście twórczą częścią jądra. Gratulacje,Teraz zwykle stałeś się autorem kodu jądra Linuksa! Kiedy nowość nosiwyłącz, wypchnij moduł jądra, aby przećwiczyć rmmod hello-1. Spójrz, kiedy był / var / log / wiadomości głosowe , aby zobaczyć, co to jestPlik dziennika zapisanych urządzeń.

    Oto kolejne ćwiczenie dla czytelnika. Zobacz większość recenzji powyżejinstrukcja return w init_module () ?Zmień zwracaną wartość dla większości rodzajów negatywnych rzeczy, kompiluj, a ponadto pobierajmoduł po raz drugi. O co chodzi z całą sprawą?

      obj-m Hello-1 + równa się. OWszystko:        Osiągnij -C dla każdej biblioteki / modułów / $ (uname -3rd theres r shell) / build M = RR (PWD) Moduleczysty:        make -C i lib / modules / cash (uname -r shell) / build M oznacza $ (PWD) clear
      Hostname: ~ lkmpg-przykłady / 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M = / root lkmpg-examples / 02-HelloWorld Modulemake [1]: zaangażuj się `/ usr / src / linux-2 directory.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Moduły budowlane, poziom 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: wyjmij katalog `/usr/src/linux-2.6.11 'Nazwa hosta: ! /przykłady-lkmpg / 02-HelloWorld #        Kolor = "# 000000"> Nazwa hosta: ! /przykłady-lkmpg / 02-HelloWorld #
     
      Nazwa hosta: ! / lkmpg-examples / 02-HelloWorld numer modinfo hello-5. NSNazwa pliku: cześć-5. NSLicencja: GPLAutor: Peter Jay Saltzmanvermagic: 2.6.11 proaktywny PENTIUMII 4KSTACKS gcc-3.3zależy od:parm: nadmiar myintArray: liczby całkowite (tablica Int)parm: mystring: mechanika (charp)parm: mylong: zawsze liczba całkowita (long)parm: myint: liczba całkowita (int)parm: myshort: krótka liczba całkowita (krótka)Nazwa hosta: ! /przykłady-lkmpg / 02-HelloWorld #

    Moduły jądra muszą być rozwijane nieco inaczej niż zwykłe niestandardowe powody. Jesteśmy zobowiązani do używania wersji jądra dla ludziAby zadbać o te świetne ustawienia, jakie typy plików makefile są nadal zwykle przechowywane w zarejestrowanych plikach makefile. Chociaż są zorganizowane hierarchicznie, wiele z nich jest zbędnych.Zachowano ustawienia w plikach makefile nastolatków, a także utrudniło ich utrzymanie.Na szczęście powinien istnieć nowy sposób spełnienia wymagań zwany kbuild oraz proces tworzenia ładowalnego zewnętrznego motywu sieci.jest teraz w pełni zintegrowany z ogólnie erogennym mechanizmem budowy jądra. Dowiedz się więcej o tym, jak montować części, które niewątpliwie nie sąCzęść sformalizowanego (jak wszystkie przypadki, które znajdziesz w samouczku), pliku wizji linux/ Dokumentacja / kbuild / modules.txt .

    Przyjrzyjmy się więc ogólnemu plikowi makefile, aby skompilować dokładną część o nazwie hello-1.c :

    Z technicznego punktu widzenia przeglądanie pierwszej linii jest zazwyczaj konieczne,Dla uproszczenia dodano „wszystkie” w „czystych” celach.

    Zalecane: Fortect

    Czy masz dość powolnego działania komputera? Czy jest pełen wirusów i złośliwego oprogramowania? Nie obawiaj się, przyjacielu, ponieważ Fortect jest tutaj, aby uratować sytuację! To potężne narzędzie jest przeznaczone do diagnozowania i naprawiania wszelkiego rodzaju problemów z systemem Windows, jednocześnie zwiększając wydajność, optymalizując pamięć i utrzymując komputer jak nowy. Więc nie czekaj dłużej — pobierz Fortect już dziś!

  • 1. Pobierz i zainstaluj Fortect
  • 2. Otwórz program i kliknij „Skanuj”
  • 3. Kliknij „Napraw”, aby rozpocząć proces naprawy

  • Jesteś teraz gotowy do skompilowania tego modułu wywoływanego przez polecenie Bring in.Powinieneś prawdopodobnie uzyskać następujące źródło:

     Nazwa hosta: ~ / lkmpg-przykłady kontra 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M = / root / lkmpg-examples dla modułu 02-HelloWorldmake [1]: wpisz `/ usr versus src / linux-2 directory.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Segmenty budowlane, poziom 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: przenieś katalog `/usr/src/linux-2.6.11 'Nazwa hosta: ~ - przykłady lkmpg / 02-HelloWorld #

    Zauważ, że nowa konferencja nazewnictwa plików jest omawiana w jądrze 2.6: części jądra mają więc .ko Rozszerzenie (zamiast używania starego .rozszerzenie) , co sprawia, że ​​nieco różni się od zwykłych obiektówPliki. Może to być głównie dlatego, że mają inną sekcję .modinfo, która zawiera dodatkowe wskazówki dotycząceModuł poleciał na miejsce. Dzisiaj zobaczymy dokładnie, jak to naprawdę jest iTa informacja jest również wykorzystywana.

    Użyj modinfo yo - * .ko, aby dowiedzieć się, czym jest ta informacja.

     Nazwa hosta: ! / lkmpg-examples / 02-HelloWorld numer modinfo hello-1.koNazwa pliku: Witam-1. NSvermagic: 2.6.11 agresywny PENTIUMII 4KSTACKS gcc-3.3zależy od: 

    Jeszcze nic specjalnego. To się zmieni, gdy tylko zaangażujemy pracowników Modinfo w nasze nowe produkty. hi-5.ko .

     Nazwa hosta: ~ lub lkmpg-przykłady / 02-HelloWorld # modinfo hello-5. NSNazwa pliku: cześć-5. NSLicencja: GPLAutor: Peter Jay Saltzmanvermagic: 2.6.11 proaktywny PENTIUMII 4KSTACKS gcc-3.3zależy od:parm: myintArray: tablica liczb całkowitych (tablica równoważna int)parm: mystring: łańcuch oczekująca matka natura (charp)parm: mylong: długa liczba całkowitaparm: myint: liczba całkowita (int)parm: myshort: krótka liczba całkowita (krótka)nazwa hosta: ! / lkmpg-examples / 02-HelloWorld numer 

    Znajdziesz tutaj wiele przydatnych informacji. Łańcuch komunikatów o błędach,Informacje o licencji, które zawierają konkretny krótki opis parametrów zaakceptowanych przez to zadanie.

    Więcej informacji na temat plików makefile dostępnych do zakupu dla modułów jądra można znaleźć w linux / Dokumentacja na kbuild / makefiles.txt .Upewnij się, że sprawdziłeś to wraz z powiązanym oprogramowaniem, zanim zaczniesz łamać pliki Makefile.To z pewnością zaoszczędzi ci dużo pracy.

    Czas dodać nowo skompilowany moduł mając insmod ./hello-1.ko. do wstawienia do aktualnego jądra(Zignoruj ​​wszystko, co widzisz na skażonych, ponieważ rdzenie; wkrótce do tego wrócimy).

    Wszystkie komponenty załadowane w celu umożliwienia dostępu do jądra są umieszczane jako ostatnie / proc / modules .Zajrzyj również do tego pliku, aby wybrać, z którym modułem Twój moduł może się faktycznie połączyć z lokalizacją jądra.Gratulacje, jesteś w tym momencie autorem kodu jądra Linuksa! Kiedy świetny pomysł gaśnieUsuń moduł z części mojego jądra za pomocą rmmod hello-1. Sprawdź to / var / log / ideas tylko wtedy, gdy chcesz zobaczyć, że został nasączony, aby pomóc ci z jakimś plikiem syslog.

    Oto kolejne ćwiczenie dotyczące czytelnika. Zapoznaj się z tym pomocnym omówieniem instrukcji zwrotu. DO init_module () ? Zastąp zwracaną wartość wartością ujemną, przekompiluj i w konsekwencji przeładuj komponent.O co chodzi dużo?

     obj-m + oznacza hello-1.oWszystko:make -C / lib / modules $ (uname -r shell) / build M = $ (PWD) -C Moduleczysty:make / lib / modules / rrr (uname -r shell) / build M = $ (PWD) clean 

    kompilowanie modułu jądra systemów linux 2.6

     

     

    Pobierz to oprogramowanie i napraw swój komputer w kilka minut.

    Zmodyfikuj ten plik makefile, aby upewnić się, że zastępujesz każde wystąpienie w tych kierunkach helloWorld i kernelRead pozycjami modułów, które chcesz pomyślnie utworzyć.Skompiluj moduły, tworząc te elementy w katalogu, w którym znajdują się moduły szablonów domeny.Teraz zostań superużytkownikiem, aby pisać.

    Krok pierwszy. Pobierz dokładny kod źródłowy.Krok wielokrotny: wyodrębnij kod źródłowy.Krok 3: Zainstaluj wymagane pakiety.Krok dziewiąty: skonfiguruj każde jądro.Krok 5: zbuduj jądro.Krok. Zaktualizuj bootloader (opcjonalnie)Krok szósty: uruchom ponownie i sprawdź wersję jądra.

    hello.c pobierz kod C.Dodaj przyszły oryginalny prefiks c:Zapisz plik.Zapisz, ale zamknij plik.Skompiluj kurs hello.c:Zostań głównym (użyj su lub szczególnie sudo) i pobierz komponent:Upewnij się, że ten moduł jest załadowany:Zobacz informacje poprzez plik / var / dziennik / wiadomość:

     

     

     

    Compiling Kernel Module Linux 2 6
    커널 모듈 Linux 2 6 컴파일
    Compilazione Del Modulo Del Kernel Linux 2 6
    Compileren Van Kernelmodule Linux 2 6
    Kompilyaciya Modulya Yadra Linux 2 6
    Compilando Modulo Do Kernel Linux 2 6
    Compilar El Modulo Del Kernel Linux 2 6
    Kompilieren Des Kernelmoduls Linux 2 6
    Kompilering Av Karnmodul Linux 2 6