A criação de Module.symvers tem várias etapas. Essas etapas usam MODVERDIR (geralmente .tmp_versions no diretório de compilação) que contém .mod files,
Depois que os módulos são compilados e os arquivos .o correspondentes são gerados, a origem é enviada pelo pré-processador C com -D__GENKSYMS__ e a saída resultante é canalizada para scripts/genksyms . genksyms implementa seu próprio analisador de código (relativamente simples) para gerar assinaturas de símbolos e seus CRCs correspondentes. Foram as limitações deste analisador que impediram que genksyms analisasse corretamente a fonte ao usar o gcc 6.3 no kernel 3.4. (Eu resolvi meu problema retrocedendo o kernel 4.12 genksyms ). genksyms produzirá um arquivo .mod.c para cada módulo que contenha todos os CRCs de símbolo. Isso é então compilado para produzir .mod.o arquivos.
A etapa final envolve a análise de todos os arquivos *.mod em MODVERDIR , examinando-os para todos os arquivos .ko que compõem os módulos e passando a lista correspondente de .mod.o arquivos, juntamente com vmlinux para %código%. scripts/modpost analisa os arquivos de objeto e gera scripts/modposts .