Compilação de Kernel baseado na versão 2.6 para o LTSP 4.2

Com a compilação de um kernel mais moderno, problemas de reconhecimento de placas de rede e hardware em geral serão resolvidos, aumentando o tempo de vida de alguns sistemas que ainda não puderam ser totalmente migrados para o LTSP 5.

[ Hits: 48.631 ]

Por: Edilson Osorio Junior em 20/05/2008


Problemas encontrados



I. Kernel panic - not syncing: VFS: Unable do mount root fs on unknown-block(1,0)

No filesystem could mount root, tryed: reiserfs ext3 cramfs vfat romfs iso9660
Kernel panic - not syncing: VFS: Unable do mount root fs on unknown-block(1,0)

Provavelmente o initramfs está completamente vazio, sem uma estrutura de diretórios mínima para funcionar. A chance maior é que não exista uma pasta initramfs no mesmo diretório do build_initramfs do LBE. O mesmo até avisa que não existe a pasta, mas continua seu trabalho mesmo assim, gerando o arquivo que posteriormente vai dar nessa mensagem de erro.

II. Kernel panic - not syncing: No init found. Try passing init= option to kernel.

Failed do execute /init
Kernel panic - not syncing: No init found. Try passing init= option to kernel.

Neste ponto, significa que a estrutura do initramfs está de acordo, mas o sistema não conseguiu executar o /init porque provavemente não foi encontrado uma forma de executá-lo. Você pode abrir o seu initramfs.gz que está dentro de /tftpboot/lts/<kernel> e verificar se o busybox está corretamente instalado dentro dele.

Para abrir o initramfs:

# cp initramfs.gz initramfs.tmp.gz
# gunzip initramfs.tmp.gz
# mkdir tmp
# cd tmp
# cpio -id < ../initramfs.tmp
# cd bin
# ls


Se não houverem arquivos nessa pasta, provavelmente o busybox não está instalado nessa estrutura. Instale o busybox ou utilize a estrutura de um kernel 2.6 como descrito anteriormente.

A estrutura básica, porém vazia (sem busybox), pode ser criada à partir da execução do script install.sh dentro de /lbe/initramfs-src/initramfs_tree/initramfs_tree.

III. Kernel panic - not syncing: Attempted do kill init!

Running /linuxrc
Mounting /proc

ERROR! Could not automatically detect the network card.
PCI cards should be detected automatically...

Kernel panic - not syncing: Attempted do kill init!

Este erro diz que não foi possível encontrar a sua placa de rede. É simples de se revolver.

A explicação é que até esse momento quem tinha o IP da máquina era o PXE da própria BIOS. Daqui em diante, o Sistema Operacional vai fazer uma nova consulta no DHCP utilizando os próprios drivers do kernel.

Acontece que mesmo compilando alguns drivers diretamente no kernel, o sistema não reconhece automaticamente algumas placas (principalmente as baseadas no chipset Realtek 8169, muito comuns hoje em dia). Então, é interessante ter o driver r8169 compilado como módulo e subindo manualmente para a sua máquina.

Para que isto ocorra, basta que avisemos ao PXE para subir este módulo para esta placa de rede durante o boot.

Primeiramente anote o MAC desta placa de rede. Suponhamos que ele seja 00:1f:d0:f2:fa:06.

# cd /tftpboot/lts/<kernel>/pxelinux.cfg
# cp default 01-00-1f-d0-f2-fa-06
# vim 01-00-1f-d0-f2-fa-06


Adicione NIC=r8169 (ou o driver que achar melhor) à linha do append. Os drivers de placas de rede disponíveis no seu kernel (desde que compilados como módulos) podem ser encontrados em /lib/modules/<versão do kernel>/drivers/net.

# append rw root=/dev/ram0 initrd=initramfs.gz NIC=r8169

IV. sh: line 1: /etc/rc.early_sysinit: No such file or directory

SwitchRoot v.0.1 - Copyright © 2005 Linux Based Systems Design
Freeing ram used by initramfs
sh: line 1: /etc/rc.early_sysinit: No such file or directory

Este talvez tenha sido o erro mais difícil de resolver. Os kernels do LSTP versão 2.4 utilizavam no seu initrd o programa pivot_root. Seu papel básico é passar da estrutura do ramdisk para a estrutura do LTSP em si. Depois que o LTSP adotou os kernels 2.6, ele passou a utilizar o programa switchroot, que está dentro da estrutura do initramfs, na pasta sbin.

# cd <caminho_do_build_initramfs_do_LBE>/initramfs/sbin
# strings switchroot


Podemos ver que é ele quem chama o arquivo rc.early_sysinit, inexistente nas estruturas do LTSP 4.2 e LTSP 5 do Ubuntu.

Depois de muito tempo pude encontrar o conteúdo desse arquivo, dentro do site do próprio LTSP. O problema é que nesse documento, ele faz referência ao arquivo rc.earlysysinit, ao invés de rc.early_sysinit. Isso dificulta muito encontrar o arquivo.

Seu conteúdo original pode ser encontrado na página:
É necessário criar ou atualizar os arquivos rc.early_sysinit e rc.sysinit em /<caminho_do_ltsp>/i386/etc. Esses arquivos podem ser encontrados no Anexo I.

V. Unrecognized option: vttty1

Fatal server error:
Unrecognized option: vttty1

Esse erro ocorre no carregamento do X, que não consegue identificar o display onde ele deve ser carregado. Existem duas formas de resolver: forçando o parâmetro vt em 1 e display em :0.0 ou fazendo uma alteração na variável TTY dentro do startx.

# cd /<diretório do ltsp>/i386/etc/screen.d
# vim startx


Alterar a variável:

# TTY=`/usr/bin/basename \`/usr/bin/tty\``

para:

# TTY=`/usr/bin/basename \`/usr/bin/tty\` | sed s/tty//`

O sed retira esse "tty" a mais, fazendo com o parâmetro vt carregue adequadamente a variável do display.

#    /usr/X11R6/bin/${XBINARY} ${ACC_CTRL} \
#      ${XF_ARGS} \
#      -xf86config ${XFCFG} \
#      vt${TTY} ${DISP} >/dev/null 2>&1

Pode-se, alternativamente, substituir vt${TTY} ${DISP} por vt1 :0.0, forçando o parâmetro.

Página anterior     Próxima página

Páginas do artigo
   1. Resumo / Abstract
   2. Introdução
   3. Configurando o kernel e gerando os módulos
   4. Baixando um kernel atualizado para o LTSP 4.2 para construção do initramfs
   5. Problemas encontrados
   6. Conclusão
   7. Anexo I - rc.early_sysinit
   8. Anexo II - rc.sysinit
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Layer7 e compilação do kernel mole-mole com Conectiva 10

Kernel Hacking (RootKits)

Instalação e configuração do Squid com TProxy no Debian

Recompilando kernel 2.6 no Debian Lenny

O Kernel Linux

  
Comentários
[1] Comentário enviado por rafasmart em 30/05/2008 - 14:06h

na linha:
# ln -s linux-2.6.25.tar.bz2 linux
quiseste criar link pro source né? então não seria para o diretório em vez do arquivo comprimido?

[2] Comentário enviado por osoriojr em 02/06/2008 - 14:21h

ERRATA:

em Introdução -> Pré-requisitos:
onde se lê: # ln -s linux-2.6.25.tar.bz2 linux
leia-se: # ln -s linux-2.6.25 linux

Obrigado pelo comentário amigo, culpa da mania de tab enquanto escreve :)
Edilson

[3] Comentário enviado por fredyc em 20/06/2008 - 20:41h

Eu estou com um pequeno problema e nao acho nenhum artigo ou tutorial recente falando sobre instalar o LTSP 4.2 no (k)Ubuntu 7.04, 7.10 ou 8.04 pq da algum pau q eu nao sei resolver exemplo:
No ltspadmin ele instala tudo mas da essa mensagem aqui:

egrep: /etc/inittab: No such file or directory
Argument "(value of initdefault in /etc/inittab)" isn't numeric in printf at /usr/sbin/ltspcfg line 164, <STDIN> line 2.
Use of uninitialized value in printf at /usr/sbin/ltspcfg line 164, <STDIN> line 2

tb nao da pra mudar o runlevel........pois quando tento mudar ele sai do ltspadmin!

fora q tb o dhcpd nao sobe!
/etc/init.d/dhcp3-server restart
e ele sempre da mensagem de q falou!
Nao gostaria de migrar para o LTSP 5 pois quanto instalei ele ja vindo dos (K,E,X)Ubuntu eles se motraram muito lento! da impreçao do Kernel nao ser otimizado pra essa aplicaçao como e no 4.2
Obrigado
Fredy

[4] Comentário enviado por osoriojr em 23/06/2008 - 10:29h

Então... uma das coisa que eu percebi que mudou no Ubuntu é que ele usa ldm ao invés de gdm. Como eu não instalei do zero, mas sim copiando a pasta inteira do ltsp do meu backup para lá, não passei por esses erros.
Simplesmente eu não consegui conectar no X do servidor pelo fato dele ter o ldm rodando. Para não perder tempo eu voltei pro Fedora e terminei minha atualização nele mesmo.
Assim que tiver um tempo eu instalo novamente o Ubuntu 8.04 e testo.

[5] Comentário enviado por fabiano_stocco em 14/07/2008 - 16:36h

Edilson

Muito obrigado por compartilhar esse passo a passo, nos ajudou muito aqui na empresa. A tempos vinha atrás de como compilar kernel para LTSP.

Muito obrigado mesmo.

[6] Comentário enviado por lucianeconte em 02/12/2009 - 16:13h

Olá, tudo bem?

Ao executar a linha:

cvs -d \
:pserver:anonymous@cvs.ltsp.org:/usr/local/cvsroot \
checkout lbe


retorna o seguinte erro:

cvs checkout: CVSROOT password specification is only valid for
cvs checkout: pserver connection method.
cvs [checkout aborted]: Bad CVSROOT: ` :pserver:anonymous@cvs.ltsp.org:/usr/local/cvsroot'.

Por favor, se puder ajudar, agredeço muito.

Obrigado

[7] Comentário enviado por tspocom em 13/02/2010 - 08:32h

Bom, eu estou com a mesma duvida.
No meu caso foi um pouco diferente, na hora de instalar o LBE com a linha

# cvs -d :pserver:anonymous@cvs.ltsp.org:/usr/local/cvsroot \checkout lbe

aparece a seguinte mensagem

# Unknown host cvs.ltsp.org.


creio que o host cvs.ltsp.org não esteja mais no ar.

[8] Comentário enviado por tspocom em 13/02/2010 - 08:32h

Bom, eu estou com a mesma duvida.
No meu caso foi um pouco diferente, na hora de instalar o LBE com a linha

# cvs -d :pserver:anonymous@cvs.ltsp.org:/usr/local/cvsroot \checkout lbe

aparece a seguinte mensagem

# Unknown host cvs.ltsp.org.


creio que o host cvs.ltsp.org não esteja mais no ar.

como devo proceder agora???


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts