Risolto: Come Correggere La Compilazione Che Ha A Che Fare Con I Moduli Del Kernel Linux 2.6.

November 16, 2021 By Gary Lamb Off

 

Nel corso delle prime settimane, diversi lettori ci hanno comunicato di essere inciampati nella compilazione di un modulo del kernel Linux 2.6.

Consigliato: Fortect

  • 1. Scarica e installa Fortect
  • 2. Apri il programma e fai clic su "Scansione"
  • 3. Fai clic su "Ripara" per avviare il processo di riparazione
  • Scarica questo software e ripara il tuo PC in pochi minuti.

     

     

    Moduli

    I kernel devono essere compilati in un modo diverso daapplicazioni personalizzate regolari. Le versioni precedenti di qualsiasi kernel richiedevano l’abbandonomolto su di loro parametri, che di solito vengono memorizzati quando si tratta di makefile.Sebbene siano organizzati gerarchicamente, tanti parametri ridondantiaccumulato nei tipi di file per bambini e pagato per loro grandi e inoltre piuttosto grandidifficile da tenere. Per fortuna, certo, c’è un metodo fantasticoqueste cose, riconosciute in medicina come kbuild, e un processo di assemblaggio di parti esterneloadable sarà ora completamente integrato nel kernel impostatoMeccanismo di costruzione. Per saperne di più su come compilare le partinon incoraggiato (come tutti i prodotti che acquisti)a volte può essere trovato in questo manuale) esplora manualmente il file linux / Documentation kbuild / module.txt .

    Quindi diamo un’occhiata al proprio makefile per vedere quale ruolo viene chiamato. Compilare ciao-1.c :

    Da un punto di vista tecnico, la maggior parte della prima riga è considerata reale.indubbiamente, sono necessari nuovi scopi “tutto” e “pulito” per pulireConvenienza. Tu

    ora può compilare la parte aggiornata emettendo il comando allow. Dovresti ottenere un risultato simile aquanto segue:

    Nota. Il kernel 2.6 discute una nuova convenzione per distinguere i file:I moduli del kernel ora hanno attualmente l’estensione .ko .(appartenente al rinvio old.o ),differisce leggermente dai file di articoli antichi. …Il motivo è che conterrà e conterrà una sezione modinfo aggiuntivache questo strumento è l’informazione aggiuntiva vicino al componente che viene salvato. La fontanavedremo a breve per quale attrezzatura va bene.

    Niente di speciale, abbastanza lontano. Si modifica quando smetti di usarlo.modinfo è spesso uno dei nostri nuovi esempi, hello-5.ko .Of

    Qui dovresti trovare molte istruzioni utili. Il lavoro dell’autore perSegnalazioni di bug, informazioni sulla licenza, oltre a una descrizioneI parametri che accetta.

    Aspetti aggiuntivi dei makefile ai fini dei moduli del kernel:disponibile in linux / Documentazione / kbuild / makefiles.txt . Un avvertimentoLeggi questo approccio e le clip correlate prima di iniziare l’hacking.Makefile. Questo probabilmente ti farà anche risparmiare molto sul lavoro.

    compiling kernel course linux 2.6

    È ora di inserire con successo il modulo appena compilato quando questo.kernel con insmod ./hello-1.ko (ignoraqualunque cosa vediamo sui kernel danneggiati; questo è anche ciò che intendiamopresto).

    Tutte le missioni caricate nel kernel sono invariabilmente elencate in / moduli proc . Vai avanti e controlla questo file in modo da poterlo prendere in considerazioneche il tuo modulo è davvero una parte nuova e definita del kernel. Congratulazioni,Ora di solito sei l’autore del codice del kernel Linux! Quando l’unicità indossaoff, forza il modulo del kernel a sfruttare rmmod hello-1. Dai un’occhiata a / var / log per messaggi per vedere qual è il sitoIl file di registro della tua attrezzatura archiviata.

    Ecco un altro esercizio perché il lettore. Vedi la maggior parte del tipo di commenti sopradichiarazione di ritorno in init_module () ?Cambia il valore di ritorno per quanto riguarda tutti i tipi di cose negative, raccogli e scaricamodulo una seconda volta. Che cosa c’é ?

      obj-m Hello-1 + =. ohTutto quanto:        Raggiungi -C per lib / moduli / bucks (uname -r shell) / build M uguale a $ (PWD) Modulopulire:        make -C / lib / moduli / bucks (uname -r shell) / build M = $ (PWD) clear
      Nome host: ~ o lkmpg-examples / 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M = / root versus lkmpg-examples / 02-HelloWorld Modulemake [1]: chiave `/ usr / src versus directory linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Moduli di costruzione, livello 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: esce dalla directory `/usr/src/linux-2.6.11 'Nome host: ! / esempi-lkmpg / 02-HelloWorld #        Colore = "# 000000"> Nome host: ~ / lkmpg-examples / 02-HelloWorld #
     
      Nome host: ~ / lkmpg-examples / 02-HelloWorld numero modinfo hello-5. NSNome del file: ciao-5. NSLicenza: GPLdi Peter Jay Saltzmanvermagic: 2.6.11 assertivo PENTIUMII 4KSTACKS gcc-3.3dipende da:parm: costruito myintArray: un numero intero (array Int)parm: mystring: appeal (charp)parm: mylong: sempre intero (long)parm: mioint: intero (int)parm: myshort: intero breve (corto)Nome host: ! / esempi-lkmpg / 02-HelloWorld #

    I moduli del kernel devono essere inventati in modo leggermente diverso rispetto alle normali applicazioni di tendenza. Ci impegniamo a generare versioni precedenti del kernelPer fare attenzione a queste impostazioni, i tipi provenienti da tutti i makefile vengono solitamente archiviati nei makefile divulgati. Sebbene siano organizzati gerarchicamente, molti di essi sono ridondanti.Impostazioni preservate da makefile figlio e rendevano anche più difficile la manutenzione dell'azienda.Fortunatamente, dovrebbe esserci un nuovo modo di gratificare le condizioni chiamato kbuild e un mezzo per creare un tema www esterno caricabile.è ora completamente integrato in qualche meccanismo di costruzione del nucleo erogeno. Scopri un po' di più su come assemblare esattamente le parti che non lo sonoParte del vitale formalizzato (come tutti i casi che troverai all'interno di questo tutorial), il file envision linux/ Documentazione / kbuild / moduli.txt .

    Quindi diamo un'occhiata più al makefile generale per ottenere la parte chiamata hello-1.c :

    Da un punto di vista tecnico, visualizzare la prima riga è davvero semplicemente necessario,"Tutto" nell'offerta di obiettivi "puliti" è stata aggiunta per semplicità.

    Consigliato: Fortect

    Sei stanco del fatto che il tuo computer funzioni lentamente? È pieno di virus e malware? Non temere, amico mio, perché il Fortect è qui per salvare la situazione! Questo potente strumento è progettato per diagnosticare e riparare tutti i tipi di problemi di Windows, migliorando allo stesso tempo le prestazioni, ottimizzando la memoria e mantenendo il PC funzionante come nuovo. Quindi non aspettare oltre: scarica Fortect oggi!

  • 1. Scarica e installa Fortect
  • 2. Apri il programma e fai clic su "Scansione"
  • 3. Fai clic su "Ripara" per avviare il processo di riparazione

  • Ora sei pronto per raccogliere il modulo chiamato dal comando do.Probabilmente dovresti ottenere l'output dell'osservazione:

     Hostname: ~ e lkmpg-examples / 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M = / root o lkmpg-examples / 02-HelloWorld Modulemake [1]: metti nella directory `/ usr / src / linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Missioni di costruzione, livello 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: esce dalla directory `/usr/src/linux-2.6.11 'Nome host: ! / esempi-lkmpg / 02-HelloWorld #

    Nota che una nuova convenzione di etichettatura dei file è in discussione in quei kernel 2.6: parti di kernel specifici ora hanno .ko Estensione (che invece ha a che fare con la vecchia .extension) , che lo rende leggermente molto diverso dagli oggetti normaliFile. Questo potrebbe sempre essere dovuto al fatto che hanno un altro segmento .modinfo che fornisce ulteriori indicazioni suLa porzione è avvenuta. Oggi scopriremo di cosa si tratta realmente e vengono utilizzate queste informazioni critiche.

    Usa modinfo hi there - * .ko per trovare in cosa consistono queste informazioni.

     Nome host: ~ / lkmpg-examples / 02-HelloWorld numero modinfo hello-1.koNome del file: Ciao-1. NSvermagic: 2.6.11 proattivo PENTIUMII 4KSTACKS gcc-3.3dipende da: 

    Ancora niente di speciale. Questo di solito cambia non appena coinvolgiamo i dipendenti Modinfo sui nostri prodotti contemporanei. ciao-5.ko .

     Nome host: ~ per lkmpg-examples / 02-HelloWorld # modinfo hello-5. NSNome del file: ciao-5. NSLicenza: GPLdi Peter Jay Saltzmanvermagic: 2.6.11 proattivo PENTIUMII 4KSTACKS gcc-3.3dipende da:parm: myintArray: array collegato con numeri interi (array relativo a int)parm: mystring: cord madre natura (charp)parm: mylong: numero intero considerevoleparm: mioint: intero (int)parm: myshort: intero piccolo (breve)nome host: ~ / lkmpg-examples o 02-HelloWorld # 

    Riceverai correttamente molte informazioni utili. Una catena di messaggi di errore,Informazioni sulla licenza, inclusa una breve descrizione specifica relativa ai parametri accettati da questa professione.

    Maggiori informazioni sui miei makefile disponibili per i moduli del kernel possono essere trovate in linux / Documentazione per ogni kbuild / makefiles.txt .Assicurati di leggere questo insieme ai file collegati, nprima di avviare crack makefile.Questo probabilmente ti farà risparmiare una notevole quantità di lavoro.

    È ora di aggiungere il modulo appena compilato che ha insmod ./hello-1.ko. da inserire coinvolto con il kernel(Ignora tutto ciò che vedi trovato sui nuclei impuri; torneremo sulla strada tra poco).

    Tutti i componenti impacchettati nel kernel sono posti in / proc / elements .Continua anche a guardare questo file per scoprire a quale modulo il tuo segmento è effettivamente collegato con praticamente qualsiasi parte del kernel.Congratulazioni, ora dovresti essere l'autore del codice del kernel Linux! Quando una grande idea svanisceRimuovi il modulo da great kernel usando rmmod hello-1. Controlla questo può fuori / var / log e messaggi solo se speri di vedere che è stato appena registrato di recente per aiutarti con il loro file syslog.

    Ecco un altro esercizio per il lettore. Dai un'occhiata a questo metodo per una rapida panoramica delle istruzioni per la restituzione. A init_module() ? Sostituisci un valore restituito con un costo negativo, ricompila e ricarica il componente.Che c'è di male?

     obj-m + significa ciao-1.oTutto quanto:make -C / lib / quests / $ (uname -r shell) - build M = $ (PWD) -C Modulopulire:make / lib / module o $ (uname -r shell) / coltiva M = $ (PWD) good 

    compilazione della porzione del kernel linux 2.6

     

     

    Scarica questo software e ripara il tuo PC in pochi minuti.
    < p id="1">Modifica questo makefile dei fatti chiave per sostituire ogni occorrenza in qualsiasi direzione helloWorld e kernelRead con le etichette principali dei moduli che desideri creare.Compilare i moduli sviluppandoli nella directory in cui si trovano i moduli del modello web.Ora emerge come superutente per digitare.

    Passaggio 1. Scarica il codice attuale esatto.Passaggio 2: estrarre il codice sorgente.Passaggio 3: installa i pacchetti richiesti.Passaggio nove: cambiare il kernel.Passaggio 5: compila tutto il kernel.Passaggio 6. Aggiorna il bootloader (opzionale)Passaggi da sei a otto: riavvia e controlla la versione del kernel.

    ciao.c ottieni il codice C.Aggiungi di solito il seguente prefisso c originale:Salva il file specifico.Salva e chiudi il file.Compila il corso specifico hello.c:Diventa root (usa su o includendo sudo) e scarica il componente:Fai in modo che il modulo sia caricato:Vedere le informazioni e i fatti nel file / var log / message:

     

     

     

    Compiling Kernel Module Linux 2 6
    커널 모듈 Linux 2 6 컴파일
    Kompilowanie Modulu Jadra 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