Compilando o Kernel Linux sem o Git! - Tópico em desenvolvimento

Iniciado por galactus, 05 de Setembro de 2011, 01:01

tópico anterior - próximo tópico

xluisfernando

ADepois de ler e estudar razoavelmente (acho que ainda é pouco...) comecei a compilação.
Com objetivo de aprendizado estou fazendo com o pacote linux-source-3.0.0 da mesma versão do kernel genérico e do headers que uso. Estou fazendo pelo processo tradicional (make -j4...).

Segui o tutorial do menuconfig http://kernel-seeds.org/settings-01.html , mas, tem muita coisa que tem que ser na base da intuição... O que fiz foi usar o lsmod e procurar um a um na busca do xconfig e analisar.

No meu caso, por exemplo, tenho um módulo eeepc_laptop carregado, mas esse módulo não aparece como opção de ativação (aparece em cinza claro, com descrição, mas sem opção de marcação. Além disso, comparando com o hardwre que tenho, desmarquei suportes a itens de hardware que eu tinha certeza que não tinha no netbook, como pcmcia, nvidia, nforce, ati, cyrrus logic...

Como essa é a minha primeira experiência, gostaria de saber como eu poderia refazer o processo depois de concluída a compilação. Preciso apagar alguma coisa?

Samsung Ativ Book i3 - Ubuntu 20.04LTS

xluisfernando

#46
Acabei de concluir o processo de compilação, pelo método tradicional e pelo linux-source. No boot apareceu uma mensagem de erro e depois de um tempo o sistema subiu. Até pensei que tivesse falhado e carregado o kernel genérico, mas ao conferir no monitor do sistema percebi que não.

Com o kernel compilado, seguindo as instruções do tutorial do galactus, com edição do arquivos de configuração do kernel (march=native e mtune=generic) e com mudança da latência para 1000 e do processador para atom, não percebi diferença no desempenho.

Logicamente, acredito que a questão esteja relacionada à configuração no xconfig (menuconfig) e aos patches. No caso, como primeira experiência, queria observar o que mudaria apenas com as configurações, já que compilei a mesma versão do kernel que uso.
Eu esperava mais.

Edit: Pelo procedimento tradicional, com make, make modules, cp arch/i386/bzImage /boot/vmlinuz-x.xx.xx e make modules_install, o kernel é colocado direto para o carregamento no diretório boot. No entanto, esse kernel não aparece como instalado no sistema.

Se eu quiser tentar novamente, como faço para removê-lo?
Não sei se realizar o mesmo procedimento usando o make-kpkg traria alguma diferença, mas pelo menos já posso contar para os meus netos e bisnetos que compilei com sucesso o kernel linux para ubuntu. (Na desciclopédia esse procedimento é citado como épico...) Brincadeiras à parte, não percebi um resultado que valesse o esforço, com a mera otimização do kernel ubuntu.

Vamos ver o que consigo com o kernel vanilla...
Samsung Ativ Book i3 - Ubuntu 20.04LTS

xluisfernando

Citação de: Metalbobolic online 23 de Outubro de 2011, 12:03
Citação de: xluisfernando online 23 de Outubro de 2011, 11:23
Estudando o procedimento para compilação de kernel no ubuntu e no debian, acredito que estou começando a entender a diferença. No ubuntu, todos os tutoriais que encontrei até agora seguem um procedimento de compilação a partir do kernel vanilla, com e sem a aplicação dos patches. Já no debian, além desse procedimento, existe a opção de se compilar a partir do pacote linux-source da mesma versão do kernel instalado.

Procuro entender bem a teoria do que estou fazendo antes de colocá-la em prática.

Tentei o procedimento linux-source no ubuntu 10.04LTS e não deu certo. Nos textos que encontrei sobre compilação por linux-source, para debian, existe a necessidade de se instalar o pacote linux-kbuild da mesma versão. Porém, consultando o synaptic, esse pacote não aparece para o ubuntu 10.04LTS. O que aparece é chamado kbuild (não sei se seria a mesma coisa).

Outra diferença que percebi é que no procedimento linux-source o comando para compilação não possui o complemento do kpkg e os módulos são instalados depois.

Então:

1) Alguém aqui no fórum já compilou o kernel a partir do pacote linux-source no ubuntu?

2) Por que devemos criar o link simbólico linux para o diretório em que a fonte do kernel foi desempacotada?

Lendo sobre compilação...também..vejo que basicamente existem duas formas:

A forma tradicional, ou seja, make | make modules | make modules_install e criar initramfs e update grub e em alguns casos copiar o arquivo vmlinuz para a pasta boot já compilei assim no ubuntu e foi tranquilo

E tem a forma Debian, ou seja, make-kpkg onde tudo é automatizado e final você tem o arquivo .deb

E a criação do link simbolico parece que é algo "arcaico" totalmente desnessário hoje, servia somente para kernel 2.4 para baixo..pois todas minhas compilações não faço mais o link simbolico.

A compilação do kernel é complexa...se você for pesquisar..a cada minuto encontra formas diferentes ditas como a mais correta..já encontrei na net uma que diz que antes do make-kpkg deve-se fazer o comando make localmodconfig, tentei fazendo isso e deu erros na hora da compilação.

Muitos tutos dizem que é obrigatório o uso do make-clean e/ou make-kpkg clean, porém, pesquisanndo mais..é algo opcional usando somente em casos de compilações mal sucedidas..

Então man..quanto mais voce pesquisar..mais terá dúvidas...hoje minha compilação que faço e a seguinte:

não crio link simbolico e uso o Debian Way: make-kpkg --initrd --append-to-version kernel_image kernel_headers

Sobre a questão do link simbólico, achei uma referência num tutorial para debian http://www.forum-invaders.com.br/vb/showthread.php/28067-Kernel-Compila%C3%A7%C3%A3o-Empacotamento! Segundo o autor, o motivo é que "muitas coisas que vc precisa compilar, os programas buscarão os "headers" do kernel, apontando para este diretório, como por exemplo, o Script de instalação do módulo proprietário da Nvidia"

Eu fiz minha primeira compilação sem o link simbólico e percebi que no carregamento apareceu um erro de carregamento de módulo. Talvez, o referido módulo não tenha sido compilado corretamente por causa disso.
Samsung Ativ Book i3 - Ubuntu 20.04LTS

Metalbobolic

Eu também achei essa resposta sobre link simbolico...

Porém, o kernel evolui e consigo, a forma de compilação, que por exemplo, apartir do 2.6, deixou de ser necessário usar o comando make install e creio que linkar para o diretorio linux, também..pois..antes de ontem, compilei o kernel 3.1-rc4, com os patches para o kernel 3.1 final do ubuntu 11.10, da maneira tradicional e sem linkar para o diretorio linux e foi sem nenhum erro, somente avisos..

Outra coisa que notei..que a maneira tradicional é mais lenta, do que a debian way.....

Detalhe..eu compilo o kernel quase todos os dias..pois, vou tirando e acrescendo funções e/ou buult in aos poucos..assim sem onde errei, caso o kernel não compile....


xluisfernando

No meu caso, com processador atom, demorou bem mais que uma hora. Aparentemente, simplesmente compilar o kernel do ubuntu para otimização do hardware não resulta em um desempenho que justifique o trabalho. Mesmo usando as dicas de configuração dos Makefiles, do march=native, o resultado ficou abaixo do que eu esperava.

Talvez, escolhendo os patches certos e compilando o kernel vanilla, o resultado seja diferente.
Samsung Ativ Book i3 - Ubuntu 20.04LTS

Metalbobolic

Citação de: xluisfernando online 28 de Outubro de 2011, 23:57
No meu caso, com processador atom, demorou bem mais que uma hora. Aparentemente, simplesmente compilar o kernel do ubuntu para otimização do hardware não resulta em um desempenho que justifique o trabalho. Mesmo usando as dicas de configuração dos Makefiles, do march=native, o resultado ficou abaixo do que eu esperava.

Talvez, escolhendo os patches certos e compilando o kernel vanilla, o resultado seja diferente.

Mais recompilar o kernel, a principio, é boa pratica, não para aumento de desempenho, mias principalmente para adequa-lo ao seu hardware..

Metalbobolic