Quando existe problema com módulos no 
LTSP 4.2, temos a opção de adicionar novos módulos, para isso, faça o 
download do kernel em 
www.kernel.org. A versão que utilizei no momento foi a 2.6.25 
(
linux-2.6.25.tar.bz2). Um detalhe que nas 
versões 2.6.26 já não encontrei a opção do NFS file system support, requisito para funcionamento do LTSP.
Após o download, salve o kernel em /usr/src, descompacte e desempacote o kernel e crie um link simbólico chamado "linux".
# tar -jxvf   linux-2.6.25.tar.bz2
# ln -s linux-2.6.25 linux
# cd linux
Neste ponto temos o código fonte do kernel, vamos alterar alguma opções de identificação do mesmo editando o arquivo 
Makefile, alterando as opções como segue abaixo:
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 25
EXTRAVERSION = -ltsp-1
NAME = LTSP kernel
Explicando:
-  EXTRAVERSION é quem irá adicionar/identificar o nosso kernel dentro do tftpboot (Ex.: 2.6.25-ltsp-1).
-  Em NAME podemos usar o que for necessário, ele não é exibido explicitamente para nós.
Agora vem os passos mais importantes para adicionar os novos módulos à nossa árvore do kernel. De posse do código fonte do novo módulo, ou seja, os arquivos .c e .h, vamos copiá-los para o local adequado referente ao módulo. 
Salve o 
ltsp_kernel_kit
no local de sua preferência e rode o script build_initramfs, ele irá construir o initramfs para nós e já deixá-lo disponível em "/tftpboot/lts" (/tftpboot/lts/2.6.25-ltsp-1). 
Lembrando que esse procedimento foi usado para módulos para placas de rede, não sei até o momento se funciona para outros 
hardwares, pois ainda não precisei.
Nesse exemplo vamos adicionar o módulo 
r8168, que serve para placas:
-  RTL8111B
-  RTL8168B
-  RTL8111
-  RTL8168
-  RTL8111C
-  RTL8111CP
-  RTL8111D(L)
-  RTL8168C
-  RTL8111DP
-  RTL8111E
-  RTL8168E
-  RTL8111F  
Esse módulo pode ser encontrado em:
Com o código fonte do módulo em mãos, descompacte-o dentro de /usr/src/linux-2.6.25/drivers/net, será criado um diretório 
chamado r8168-8.024.00, renomei-o para  r8168, entre dentro do diretório.
# cd r8168
Só iremos precisar dos arquivos que estão dentro de src, com exceção do Makefile_linux24x, então podemos removê-lo.
Já o Makefile, precisamos alterá-lo, edite-o, ou crie um novo com seguinte conteúdo.
obj-$(CONFIG_R8168) += r8168.o
r8168-objs :=  r8168_n.o r8168_asf.o rtl_eeprom.o rtltool.o
Note que o arquivo Makefile é o responsável por  construir os objetos .o do nosso módulo no momento em que usarmos o 
comando make && make install_module mais adiante.
Após editado, vamos editar outro arquivo Makefile, só que desta vez o que está localizado em /usr/src/linux-2.6.25/drivers/net, 
nele vamos adicionar a seguinte linha:
obj-$(CONFIG_R8168) += r8168/
Esta linha indica ao comando make, que deve adicionar na compilação os arquivos localizados em /usr/src/linux-
2.6.25/drivers/net/r8168, referente ao nosso módulo.
Agora precisamos editar outro arquivo localizado também em /usr/src/linux-2.6.25/drivers/net chamado kconfig, este é 
responsável por exibir a opção na janela do make menuconfig, sem ele, não será adicionado o módulo na compilação, pois ele 
quem gera o arquivo .config usado pelo comando make, para saber quais opções serão usadas no novo kernel.
Vamos adicionar antes do final do arquivo, antes do fechamento do bloco (endif # NETDEVICES), o conteúdo:
config R8168
tristate "Driver r8168 PCIe"
---help---
  r8168 is the 
Linux device driver released for RealTek RTL8168B/8111B, 
  RTL8168C/8111C, RTL8168CP/8111CP, RTL8168D/8111D, and RTL8168DP/8111DP, and
  RTL8168E/8111E Gigabit Ethernet controllers with PCI-Express interface.
  Criado por Tomassoni
Detalhe, note sempre que estamos nos referenciando ao mesmo módulo, com as mesmas informações (config R8168), que faz 
referência às configurações feitas nos arquivos anteriores CONFIG_R8168.
Pronto, módulo adicionado, vamos configurar o novo kernel, para isso entre no diretório /usr/src/linux e execute o comando:
# make menuconfig
Não entrarei em detalhes para cada opção, por já existir muitas explicações na internet, vou apenas apontar o que deve ser feito.
Na janela de menu, selecione:
General Setup:
   [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support	
      Processor type and features:
         Processor family (386)
Caso utilize máquinas virtuais como cliente ltsp, desmarque a opção:
     High Memory Support
E habilite a opção:
     PAE ([*]PAE (Physical Address Extension Support) 
   Device Drivers
      <M> Parallel port support
      <M> PC-style hardware
      <M> Multi-IO cards (parallel and serial)
      [*] Block devices
      <*> RAM block device support
Selecione como módulo todas as placas 10,100,1000 e 10000 Mbit. Note que módulo que adicionamos vai estar no final da lista 
dos drivers (veja Figura 1).
   [*] Network device support
   Input device support
   [*] Provide legacy /dev/psaux 
   File systems
      <*> Ext3 journalling file system support
      <*> Reiserfs support
      <*> Kernel automounter version 4 support (also supports v3)
Neste ponto é onde falhou os kernels a partir da versão 2.6.25, ou seja, da 2.6.26 em diante, pois não existe a opção NFS file 
system support.  
   [*] Network File Systems
      <*> NFS file system support
      <*> NFS server support
 
Figura 1. Novo módulo adicionado.
Selecionado as opções, saia do menuconfig pelo exit, salve saia. E execute o comando:
# make && make install_modules
Os símbolos && dizem que o comando a direita (make install_modules) só deve ser executado se o comando  da esquerda 
(make) for executado com sucesso, se o módulo tiver qualquer tipo de erro no seu código fonte (.c e .h), o comando make que 
faz a compilação irá falhar. 
Note que não instalamos o módulos, pois quem irá usá-lo é o script de construção do initramfs, do ltsp_kernel_kit (explicação 
mais adiante).
Se tudo ocorrer bem será exibida no shell algo semelhante a figura 2:

Figura 2. Módulos compilados com sucesso.
Para verificar se realmente tudo ocorreu bem e os módulos foram construídos, verifique no diretório /lib/modules/2.6.25-ltsp-
1/kernel/drivers/net (lembrando que uso Red Hat el5, pode ser que na sua distro esteja em local diferente) se o módulo se 
encontra (/r8168/r8168.ko). 
Pronto, agora vamos gerar o novo initramfs, irei disponibilizar o 
ltsp_kernel_kit, ele quem constrói a estrutura 
localizada em /tftpboot/lts.
Toda vez que o script  build_initramfs for executado, ele irá confirmar a localização da estrutura de diretórios do LTSP com a 
finalidade de mover os arquivos e diretórios para o local correto.
Salve o  ltsp_kernel_kit no local de sua preferência e rode o script 
build_initramfs, ele irá construir o initramfs para 
nós e já deixá-lo disponível em /tftpboot/lts (/tftpboot/lts/2.6.25-ltsp-1).
Se tudo ocorreu bem será exibido algo parecido com a figura 3.
 
Figura 3. Processo finalizado com sucesso.
Neste ponto temos então os novos módulos no kernel para os LTSP.
Nenhum comentário foi encontrado.