Corrigido: Como Corrigir A Coleção De Módulos Do Kernel Do Linux 2.6.

November 16, 2021 By Gary Lamb Off

Como você pode ver, nas últimas semanas, vários leitores atualmente nos contaram que aconteceram ao compilar um módulo do kernel do Linux 2.6.

Recomendado: Fortect

  • 1. Baixe e instale o Fortect
  • 2. Abra o programa e clique em "Digitalizar"
  • 3. Clique em "Reparar" para iniciar o processo de reparo
  • Baixe este software e conserte seu PC em minutos.

    Módulos

    Os kernels devem ser compilados de maneira diferente deaplicativos personalizados regulares. Versões anteriores relacionadas ao kernel exigiam sairmuito em torno desses parâmetros, que geralmente são mantidos em makefiles.Embora sejam atrasados ​​hierarquicamente, muitos parâmetros redundantesacumulado em arquivos de criação de crianças e pago por eles e bastante grandedifícil de segurar. Felizmente, existe um método incrívelessas matérias, conhecidas na medicina como kbuild, e como consequência o processo de montagem de peças externascarregável agora está totalmente integrado em nosso kernel padrãoMecanismo de construção. Para aprender mais sobre como compilar a maioria das partesnão recomendado (como todos os produtos que a pessoa compra)pode ser encontrado neste manual) visualizar fisicamente o envio de linux / Documentation / kbuild / modules.txt .

    Então, vamos ver quando ele era seu próprio makefile para ver qual parte é geralmente chamada. Compilar hello-1.c :

    Do ponto de vista técnico, vindo de todos os pontos de vista, a maior parte do primeiro caminho é real.sem dúvida, novos “tudo” e também metas “limpas” são necessárias para limparConveniência. Você

    agora pode compilar o até módulo emitindo a liderança de permissão. Você deve obter um resultado correspondente ao seguinte:

    Nota. O kernel 2.6 apresenta uma nova convenção para trabalhar com a identificação de arquivos:Os módulos do kernel agora têm a extensão .ko .(pertencente ao proxy old.o ),ele difere ligeiramente em qualquer lugar dos arquivos de artigo tradicionais. …A razão pela qual realmente contém uma seção de modinfo excessivaque são as informações adicionais relacionadas sobre o componente que são conservadas. A fonteveremos em breve a quantidade de recursos para os quais isso é bom.

    Nada de especial, longe o suficiente. Ele muda quando você para de operá-lo.modinfo é um dos nossos novos cenários, hello-5.ko .Of

    Você encontrará muitas instruções úteis sobre isso. Trabalho do autor paraRelatórios de bugs, conceito de licença e até uma descriçãoOs parâmetros que ele permite.

    Aspectos adicionais de makefiles por módulos do kernel:disponível em linux versus Documentation / kbuild / makefiles.txt . Um avisoLeia esta abordagem e arquivos muito semelhantes antes de iniciar o hack.Makefiles. Isso provavelmente irá lhe poupar um bom trabalho.

    compilando módulo do kernel linux 2.6

    É um momento precioso para inserir o componente recém-compilado para isso.kernel com insmod ./hello-1.ko (ignorartudo o que todos veem em grãos danificados; isso é o que pretendemosem breve).

    Todos os módulos carregados no kernel realmente estão listados em - proc / modules . Vá em frente e, conseqüentemente, execute este arquivo para que você possa vê-loque seu módulo é certamente uma nova parte de cada kernel. Parabéns,Agora você geralmente é o autor relacionado ao código do kernel do Linux! Quando o único usadesligado, force seu módulo do kernel para que você possa usar rmmod hello-1. Dê uma olhada em / var / file / messages para ver o que éO arquivo de log do próprio equipamento salvo.

    Aqui está outro hábito para o leitor. Veja mais por causa dos comentários acimadeclaração de retorno sobre init_module () ?Altere o retorno e aproveite para todos os tipos de materiais negativos, compile e baixemódulo um segundo da vez. Qual é o problema ?

      obj-m Hello-1 + =. OTudo:        Alcance -C / lib / modules / usd (uname -r shell) / build M = $ (PWD) Módulolimpar:        alcance -C / lib / modules ou $ (uname -r shell) / venha com M = $ (PWD) clear
      Nome do host:! / lkmpg-examples / 02-HelloWorld número makemake -C /lib/modules/2.6.11/build M = / basic issues / lkmpg-examples / 02-HelloWorld Modulemake [1]: insira `/ usr / src e diretório linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Módulos de construção, nível 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: sai do site de envio `/usr/src/linux-2.6.11 'Nome do host: ~ / lkmpg-examples versus 02-HelloWorld #        Color = "# 000000"> Nome do host: ~ / lkmpg-examples versus 02-HelloWorld #
     
      Nome do host: ~ / lkmpg-examples ou 02-HelloWorld # modinfo hello-5. NSNome do arquivo: hello-5. NSLicença: GPLPor Peter Jay Saltzmanvermagic: 2.6.11 proativo PENTIUMII 4KSTACKS gcc-3.3depende de:parm: adicional myintArray: Um inteiro (matriz Int)parm: mystring: uniqueness (charp)parm: mylong: sempre inteiro (longo)parm: myint: integer (int)parm: myshort: minúsculo inteiro (curto)Nome do host: ~ / lkmpg-examples versus 02-HelloWorld #

    Os módulos do kernel precisam ser desenvolvidos de maneira um pouco diferente dos aplicativos personalizados periódicos. Estamos comprometidos quando você precisa usar versões mais antigas do kernelPara pensar sobre essas configurações, quais tipos de todos os makefiles são normalmente armazenados nos makefiles programados. Embora sejam construídos hierarquicamente, muitos deles são redundantes.As configurações de anel preservadas em makefiles filho também os tornaram mais difíceis de manter.Felizmente, também haverá uma nova maneira de cumprir as condições, chamada kbuild e cada processo para criar um tema da web tópico carregável.agora está totalmente integrado ao mecanismo de construção do núcleo erógeno. Saiba mais sobre como montar componentes que não sãoParte do núcleo estruturado (como todos os casos que você encontrará neste tutorial), o arquivo de foto linux / Documentation / kbuild e modules.txt .

    Então, vamos dar uma olhada no makefile geral como uma forma de compilar a parte chamada hello-1.c :

    Do ponto de vista técnico, ver pela primeira vez na web é simplesmente necessário,“Tudo” em escavações “limpas” foi adicionado para simplificar.

    Recomendado: Fortect

    Você está cansado de ver seu computador lento? Está cheio de vírus e malware? Não tema, meu amigo, pois Fortect está aqui para salvar o dia! Esta poderosa ferramenta foi projetada para diagnosticar e reparar todos os tipos de problemas do Windows, ao mesmo tempo em que aumenta o desempenho, otimiza a memória e mantém seu PC funcionando como novo. Então não espere mais - baixe o Fortect hoje mesmo!

  • 1. Baixe e instale o Fortect
  • 2. Abra o programa e clique em "Digitalizar"
  • 3. Clique em "Reparar" para iniciar o processo de reparo

  • Agora você está pronto para ajudar a compilar o módulo chamado pelo comando make de uma pessoa.Você provavelmente deve obter a seguinte saída:

     Hostname: ~ versus lkmpg-examples / 02-HelloWorld # makemake -C /lib/modules/2.6.11/build M = / root - lkmpg-examples / 02-HelloWorld Modulemake [1]: digite o diretório `/ usr / src linux-2.6.11 '  CC [m] /root/lkmpg-examples/02-HelloWorld/hello-1.o Missões de construção, nível 2. MODPOST   CC /root/lkmpg-examples/02-HelloWorld/hello-1.mod.o LD [M] /root/lkmpg-examples/02-HelloWorld/hello-1.komake [1]: sai do diretório `/usr/src/linux-2.6.11 'Nome de anfitrião: ! / lkmpg-examples / 02-HelloWorld #

    Observe que uma nova convenção de nomenclatura de lista está sendo discutida apenas no kernel 2.6: partes de seu kernel agora têm .ko Extensão (em vez do antigo .extension) , o que o torna bastante diferente de objetos regularesArquivos. Isso pode ser simplesmente porque eles têm uma seção principal .modinfo que fornece truques adicionais sobreO módulo aconteceu. Hoje provavelmente veremos o que realmente deve ser e esta informação é usada.

    Use modinfo hello - * .ko para descobrir quais são essas informações.

     Nome do host: ~ / lkmpg-examples 02-HelloWorld # modinfo hello-1.koNome do arquivo: Hello-1. NSvermagic: 2.6.11 proativo PENTIUMII 4KSTACKS gcc-3.3depende de: 

    Nada de especial ainda. Isso mudará assim que envolvermos os funcionários da Modinfo em nossos produtos modernos. hi-5.ko .

     Nome do host:! / lkmpg-examples / 02-HelloWorld número modinfo hello-5. NSNome do arquivo: hello-5. NSLicença: GPLPor Peter Jay Saltzmanvermagic: 2.6.11 proativo PENTIUMII 4KSTACKS gcc-3.3depende de:parm: myintArray: array para inteiros (array relativo a int)parm: mystring: ciclo mãe natureza (charp)parm: mylong: inteiro enormeparm: myint: integer (int)parm: myshort: número inteiro trivial (curto)hostname: ~ / lkmpg-examples - 02-HelloWorld # 

    Você pode encontrar muitas ideias úteis aqui. Uma cadeia de mensagens de erro,Informações sobre a licença, incluindo uma breve lista específica dos parâmetros aceitos por esta tarefa de habilidade.

    Mais informações sobre como os makefiles disponíveis para os módulos do kernel podem ser encontrados em linux / Documentation / kbuild / makefiles.txt .Certifique-se de ler isso junto com todos os arquivos relacionados, antes de iniciar makefiles brilhantes.Isso provavelmente irá lhe poupar muito trabalho.

    É muito tempo para adicionar a parte recém-compilada com insmod ./hello-1.ko. para ser colocado no kernel(Ignore o que quer que você compreenda sobre núcleos impuros; vamos voltar a isso em breve).

    Todos os tecidos carregados no kernel são estampados em / proc / Segmentos .Também continue olhando este catálogo para descobrir a qual módulo seu módulo real está realmente vinculado usando uma parte do kernel.Parabéns, os compradores agora são os autores do código do kernel Linux específico! Quando uma ideia excelente desapareceRemova o módulo por meio do meu kernel usando rmmod hello-1. Confira / var / document / messages somente se alguém quiser ver se já foi registrado para ajudá-lo a ter o arquivo syslog.

    Aqui está um exercício alternativo para o leitor. Confira e sobre esta rápida visão geral de recomendações de devolução para. PARA init_module () ? Substitua o valor de retorno por um valor terrível, recompile e recarregue o componente sem dúvida.Qual é o problema ?

     obj-m + é igual a hello-1.oTudo:make -C / lib para cada módulo / $ (uname -r shell) build M = buck (PWD) Módulo -Climpar:make / lib / parts / $ (uname -r shell) versus build M = $ (PWD) claro 

    compilando segmento de kernel linux 2.6

    Baixe este software e conserte seu PC em minutos.

    Modifique este método makefile para substituir cada ocorrência nas direções helloWorld e kernelRead pelos rótulos dos módulos que alguém deseja criar.Compile os módulos a partir de sua criação no diretório quando os módulos do modelo da web estiverem localizados.Agora torne-se o superusuário para digitar.

    Etapa 1. Baixe o código de origem exato.Etapa 2: extraia o código constituinte principal.Etapa 3: Instale os pacotes necessários.Etapa onze: configurar o kernel.Etapa 5: construir seu kernel.Etapa 6. Atualize o bootloader (opcional)Etapa seis: reinicie e verifique a versão do kernel.

    < p id = "3">hello.c obter o código C.Adicione o seguinte prefixo c original:Salve o tipo de arquivo.Salve e feche o arquivo.Compile nosso próprio curso hello.c:Torne-se root (use su, caso contrário, mesmo sudo) e baixe o componente exato:Certifique-se de que o módulo esteja carregado:Veja cada informação no arquivo e var / log / mensagem:

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