Compilando o Kernel otimizado para o seu processador no Ubuntu!

Iniciado por galactus, 22 de Abril de 2011, 09:49

tópico anterior - próximo tópico

xluisfernando

Galactus

Depois que copiei a configuração do kernel em uso para o arquivo de configuração da compilação, resolvi testar o menuconfig. Então, percebi que na opção de ?, que disponibiliza informações mais detalhadas sobre a opção selecionada, no canto inferior da tela aparece uma porcentagem.

Percebi isso quando estava na opção da família do processador.

Antes de chamar o menuconfig eu já havia feito as modificações dos arquivos Makefile e o que me chamou a atenção foi o fato de que o processador que estava previamente selecionado pelo menuconfig era o pentium-pro, com 100% na descrição detalhada. Então, desci para a últimas linhas e vi que existe a opção intel atom, que seria o meu caso, mas na sua descrição detalhada aparece com 99%.

Então, fiquei curioso. Como importei as configurações de um kernel genérico, imaginei que a opção selecionada previamente seria i386.

Será que nos arquivos makefile eu acabei editando algo que não devia, ou os kerneis genéricos mais recentes são padronizados com a instrução para pentium-pro? Pergunto isso porque na primeira vez que chamei o menuconfig eu vi que o terminal mostrou que estva lendo os arquivos makefile...

Essa porcentagem que aparece é a compatibilidade genérica com qualquer tipo de hardware?

Samsung Ativ Book i3 - Ubuntu 20.04LTS

advogama

Bom dia amigos eu uso o Ubuntu há 05 anos e até o momento nunca havia
tido a vontade de recompilar o kernel, mas eu venho notando que nos
últimos tempos o ubuntu tem ficado mais lento, e guardadas as devidas proporções
em termos de hardware, parece que o sistema hoje é mais lento que há alguns
anos atrás.

Eu gostaria de aprender a compilar e não sinto necessidade de um kernel
que fosse a última versão. Usaria o próprio kernel atual do Ubuntu, mas
otimizado para minha máquina. Claro que já estou usando o google e as dicas
do forum, mas me sentiria mais seguro se vcs, mais experientes no assunto
me fornecessem ou indicassem os passos básicos. Meu pc é um Intel core 2 duo
E8400, 4gb de ram (ddr3) video onboard da intel (4500) e um hd de 500.

Mais, o que vcs acham deste tuto: http://linuxtweaking.blogspot.com/2011/04/how-to-recompile-your-ubuntu-1104.html

Abraço a todos e obrigado.
Prepare-se para o Vista. Aprenda Linux.


Metalbobolic

/usr/src/linux-2.6.xx/arch/x86/boot/Makefile       - linha 63

/usr/src/linux-2.6.xx/arch/x86/Kconfig.cpu        - linha 300

Esses dois arquivos não tem nem march, mtune, nem mcpu..

ou estou enganado...?

Mandrak73

#138
Metalbobolic

O /usr/src/linux-2.6.xx/arch/x86/boot/Makefile   tem só um march la pra linha 63.
Já o /usr/src/linux-2.6.xx/arch/x86/Kconfig.cpu não tem nada..

Metalbobolic

Citação de: Mandrak73 online 24 de Setembro de 2011, 19:33
Metalbobolic

O /usr/src/linux-2.6.xx/arch/x86/boot/Makefile   tem só um march la pra linha 63.
Já o /usr/src/linux-2.6.xx/arch/x86/Kconfig.cpu não tem nada..


obrigado pela resposta..

Agora..como altero as links 7 e 9 do makefile_32.cpu!!?

grato..

xluisfernando

#140
Galactus

No momento de compilar apareceu um erro:
Citarroot@xluisfernando-laptop:~# cd /usr/src/linux
root@xluisfernando-laptop:/usr/src/linux# make-kpkg clean
unlink debian/control
unlink debian/commit-templates/sauce-patch
unlink debian/commit-templates/missing-modules
unlink debian/commit-templates/upstream-patch
unlink debian/commit-templates/bumpabi
unlink debian/commit-templates/external-driver
unlink debian/commit-templates/newrelease
unlink debian/commit-templates/config-updates
rmdir commit-templates
unlink debian/changelog
unlink debian/docs/README.inclusion-list
rmdir docs
unlink debian/rules.d/2-binary-arch.mk
unlink debian/rules.d/1-maintainer.mk
unlink debian/rules.d/4-checks.mk
unlink debian/rules.d/0-common-vars.mk
unlink debian/rules.d/3-binary-indep.mk
unlink debian/rules.d/5-udebs.mk
rmdir rules.d
unlink debian/tests/check-aliases
unlink debian/tests/README
rmdir tests
unlink debian/source/format
rmdir source
unlink debian/control-scripts/postinst
unlink debian/control-scripts/headers-postinst
unlink debian/control-scripts/postrm
unlink debian/control-scripts/prerm
unlink debian/control-scripts/preinst
rmdir control-scripts
unlink debian/rules
unlink debian/tools/turbostat
unlink debian/tools/x86_energy_perf_policy
unlink debian/tools/perf
rmdir tools
unlink debian/scripts/module-check
unlink debian/scripts/abi-check
unlink debian/scripts/module-inclusion
unlink debian/scripts/sub-flavour
unlink debian/scripts/control-create
unlink debian/scripts/link-headers
unlink debian/scripts/config-check
unlink debian/scripts/misc/git-ubuntu-log
unlink debian/scripts/misc/splitconfig.pl
unlink debian/scripts/misc/retag
unlink debian/scripts/misc/getabis
unlink debian/scripts/misc/insert-changes.pl
unlink debian/scripts/misc/insert-ubuntu-changes
unlink debian/scripts/misc/kernelconfig
rmdir misc
rmdir scripts
unlink debian/debian.env
unlink debian/control.stub
unlink debian/compat
unlink debian/copyright
rmdir debian
exec make kpkg_version=12.032 -f /usr/share/kernel-package/ruleset/minimal.mk clean
====== making target minimal_clean [new prereqs: ]======
This is kernel package version 12.032.
test ! -f .config || cp -pf .config config.precious
test ! -e stamp-building || rm -f stamp-building
test ! -f Makefile || \
           make    ARCH=i386 distclean
make[1]: Entrando no diretório `/usr/src/linux-source-3.0.0'
 CLEAN   scripts/basic
 CLEAN   scripts/kconfig
 CLEAN   include/config include/generated
 CLEAN   .config .config.old
make[1]: Saindo do diretório `/usr/src/linux-source-3.0.0'
test ! -f config.precious || mv -f config.precious .config
rm -f modules/modversions.h modules/ksyms.ver scripts/cramfs/cramfsck scripts/cramfs/mkcramfs  
root@xluisfernando-laptop:/usr/src/linux# CONCURRENCY_LEVEL=2 make-kpkg --initrd --revision=x86 kernel_image kernel_source kernel_headers modules_image
exec make kpkg_version=12.032 -f /usr/share/kernel-package/ruleset/minimal.mk debian DEBIAN_REVISION=x86  INITRD=YES
====== making target debian/stamp/conf/minimal_debian [new prereqs: ]======
This is kernel package version 12.032.
test -d debian             || mkdir debian
test ! -e stamp-building || rm -f stamp-building
install -p -m 755 /usr/share/kernel-package/rules debian/rules
for file in ChangeLog  Control  Control.bin86 config templates.in rules; do                                      \
           cp -f  /usr/share/kernel-package/$file ./debian/;                               \
       done
for dir  in Config docs examples ruleset scripts pkg po;  do                                      \
         cp -af /usr/share/kernel-package/$dir  ./debian/;                                 \
       done
test -f debian/control || sed         -e 's/=V/3.0.3/g'  \
               -e 's/=D/x86/g'         -e 's/=A/i386/g'  \
      -e 's/=SA//g'  \
      -e 's/=I//g'                \
      -e 's/=CV/3.0/g'             \
      -e 's/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g'             \
      -e 's/=ST/linux/g'      -e 's/=B/i386/g'    \
                 /usr/share/kernel-package/Control > debian/control
test -f debian/changelog ||  sed -e 's/=V/3.0.3/g'       \
           -e 's/=D/x86/g'        -e 's/=A/i386/g'       \
           -e 's/=ST/linux/g'     -e 's/=B/i386/g'         \
           -e 's/=M/Unknown Kernel Package Maintainer <unknown@unconfigured.in.etc.kernel-pkg.conf>/g'                            \
            /usr/share/kernel-package/changelog > debian/changelog
chmod 0644 debian/control debian/changelog
test -d ./debian/stamp || mkdir debian/stamp
make -f debian/rules debian/stamp/conf/kernel-conf
make[1]: Entrando no diretório `/usr/src/linux-source-3.0.0'
====== making target debian/stamp/conf/kernel-conf [new prereqs: ]======
make    ARCH=i386 \
                   oldconfig;                                      
make[2]: Entrando no diretório `/usr/src/linux-source-3.0.0'
scripts/kconfig/conf --oldconfig Kconfig
warning: (GFS2_FS) selects DLM which has unmet direct dependencies (EXPERIMENTAL && INET && SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n))
warning: (SCHED_AUTOGROUP) selects CGROUP_SCHED which has unmet direct dependencies (CGROUPS && EXPERIMENTAL)
warning: (IWM && WIMAX_IWMC3200_SDIO) selects IWMC3200TOP which has unmet direct dependencies (MISC_DEVICES && MMC && EXPERIMENTAL)
warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL)
warning: (ACPI_HOTPLUG_CPU) selects ACPI_CONTAINER which has unmet direct dependencies (ACPI && EXPERIMENTAL)
warning: (SCHED_AUTOGROUP) selects CGROUP_SCHED which has unmet direct dependencies (CGROUPS && EXPERIMENTAL)
warning: (GFS2_FS) selects DLM which has unmet direct dependencies (EXPERIMENTAL && INET && SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n))
warning: (ACPI_HOTPLUG_CPU) selects ACPI_CONTAINER which has unmet direct dependencies (ACPI && EXPERIMENTAL)
warning: (IWM && WIMAX_IWMC3200_SDIO) selects IWMC3200TOP which has unmet direct dependencies (MISC_DEVICES && MMC && EXPERIMENTAL)
warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL)
#
# configuration written to .config
#
make[2]: Saindo do diretório `/usr/src/linux-source-3.0.0'
make    ARCH=i386 prepare
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
make[2]: Entrando no diretório `/usr/src/linux-source-3.0.0'
scripts/kconfig/conf --silentoldconfig Kconfig
warning: (GFS2_FS) selects DLM which has unmet direct dependencies (EXPERIMENTAL && INET && SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n))
warning: (SCHED_AUTOGROUP) selects CGROUP_SCHED which has unmet direct dependencies (CGROUPS && EXPERIMENTAL)
warning: (IWM && WIMAX_IWMC3200_SDIO) selects IWMC3200TOP which has unmet direct dependencies (MISC_DEVICES && MMC && EXPERIMENTAL)
warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL)
warning: (ACPI_HOTPLUG_CPU) selects ACPI_CONTAINER which has unmet direct dependencies (ACPI && EXPERIMENTAL)
warning: (GFS2_FS) selects DLM which has unmet direct dependencies (EXPERIMENTAL && INET && SYSFS && CONFIGFS_FS && (IPV6 || IPV6=n))
warning: (SCHED_AUTOGROUP) selects CGROUP_SCHED which has unmet direct dependencies (CGROUPS && EXPERIMENTAL)
warning: (IWM && WIMAX_IWMC3200_SDIO) selects IWMC3200TOP which has unmet direct dependencies (MISC_DEVICES && MMC && EXPERIMENTAL)
warning: (SCSI_SRP) selects SCSI_TGT which has unmet direct dependencies (SCSI && EXPERIMENTAL)
warning: (ACPI_HOTPLUG_CPU) selects ACPI_CONTAINER which has unmet direct dependencies (ACPI && EXPERIMENTAL)
make[2]: Saindo do diretório `/usr/src/linux-source-3.0.0'
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
/bin/sh: Syntax error: word unexpected (expecting "then")
make[2]: Entrando no diretório `/usr/src/linux-source-3.0.0'
 CHK     include/linux/version.h
 UPD     include/linux/version.h
 CHK     include/generated/utsrelease.h
 UPD     include/generated/utsrelease.h
/bin/sh: Syntax error: ")" unexpected
make[3]: ** [kernel/bounds.s] Erro 2
make[2]: ** [prepare0] Erro 2
make[2]: Saindo do diretório `/usr/src/linux-source-3.0.0'
make[1]: ** [debian/stamp/conf/kernel-conf] Erro 2
make[1]: Saindo do diretório `/usr/src/linux-source-3.0.0'
make: ** [debian/stamp/conf/minimal_debian] Erro 2
Failed to create a ./debian directory: Arquivo ou diretório não encontrado at /usr/bin/make-kpkg line 971.
root@xluisfernando-laptop:/usr/src/linux#

O que pode ser?

Edit: Acho que isso se deve a um conflito pela versão. Comecei a mexer no synaptic e reparei que a versão de vários pacotes de desenvolvimento da minha instalação eram do 2.6.32. Então, tentei atualizar manualmente, instalando por dpkg o headers, image, linux-libc-dev, linux-toos e linux-toos-common, da mesma versão e do mesmo repositório que baixei o linux-source.

Depois de reiniciar, com o kernel 3.0.0-9-14 do natty, o sistema pediu para atualizar a versão. Ignorei e tentei executar o make xconfig, depois de ter copiado a configuração do kernel em uso. Mas, apresentou erro e não funcionou.

Então, resolvi recomeçar do zero. Removi tudo o que tinha haver com a versão 3.0.0-9-14, inclusive o kernel-source, removi o link simbólico e a pasta do kernel-source.

Não deve ser por acaso que o linux-source-3.0 disponível para ppa do 10.04 foi removido do repositório... Talvez o conjunto da versão não suporte source, toos e toos-common mais atuais.
Samsung Ativ Book i3 - Ubuntu 20.04LTS

Metalbobolic

Aqui ta dando erro na hora de compilar!!

Instalei o gcc-4.6.1 ..e estou compilando nesse momento..vamos ver no que dar!!


xluisfernando

Pesquisando encontrei um aplicativo .deb que sistematiza o processo de escolha, aplicação de patch e compilação de kernel para o Ubuntu.

KernelCheck Lumen
http://www.youtube.com/watch?v=QE-t5GWadds

Pelo que entendi esse aplicativo é limitado à versão 2.6.xx
Samsung Ativ Book i3 - Ubuntu 20.04LTS

RonaldoRG

Eu acabo de compilar um kernel com ajuda desse site http://www.hardware.com.br/dicas/recompilando-kernel-1.html

E deu tudo certo, estou usando ele neste momento, e fiquei muito contente, porque foi mais um passo na minha aprendizagem sobre o mundo linux. Eu achava que era mais complicado mas foi muito tranquilo, até porque não fiz modificação nenhuma.

Agora o próximo passo vai ser experimentar algumas modificações propostas neste tópico.

Desejo boa sorte a todos.

T+.
Ubuntu 12.04

xluisfernando

Citação de: RonaldoRG online 27 de Setembro de 2011, 22:25
Eu acabo de compilar um kernel com ajuda desse site http://www.hardware.com.br/dicas/recompilando-kernel-1.html

E deu tudo certo, estou usando ele neste momento, e fiquei muito contente, porque foi mais um passo na minha aprendizagem sobre o mundo linux. Eu achava que era mais complicado mas foi muito tranquilo, até porque não fiz modificação nenhuma.

Agora o próximo passo vai ser experimentar algumas modificações propostas neste tópico.

Desejo boa sorte a todos.

T+.

Ronaldo

Qual versão do kernel você compilou? Fez isso no Debian ou no Ubuntu?

Aqui, estou tendo problemas na compilação do kernel 3.0, pelo linux-source-3.0.0-9-14~natty... Pelo que entendi, as ferramentas de compilação e provavelmente o headers que tenho instalado não suportam o 3.0 e quando instalo esses pacotes manualmente, não consigo nem passa do make xconfig
Samsung Ativ Book i3 - Ubuntu 20.04LTS

RonaldoRG

Olá xluisfernando.

Eu compilei a versão do kernel 2.6.32. To usando o Ubuntu 10.04 pra compilar.

Eu segui o passo a passo daquele link do meu post anterior.

T+.
Ubuntu 12.04

xluisfernando

Aparentemente, com o Ubuntu 10.04, é complicado compilar a versão 3.0 do kernel
Samsung Ativ Book i3 - Ubuntu 20.04LTS

galactus

xluisfernando, o erro que aparece na sua compilação geralmente é causado por você estar compilando na pasta errada ou não colocou os links simbólicos para a pasta /usr/src/linux corretamente. 

Você está usando a maneira antiga de compilar o kernel para compilar o kernel 3.0, certo?

Já tentou usar o tuto do HQxRiven?
BigLinux no Notebook  / Várias Distros Virtualizadas no PC.

xluisfernando

Galactus

Eu estava seguindo o tutorial do Hqxriven (http://ubuntuforum-br.org/index.php/topic,29799.msg375471.html#msg375471) adaptando orientações para utilização do pacote linux-source, em vez do kernel baixado diretamente do kernel.org. Essas adaptações eu fiz seguindo algumas orientações dos tutoriais do guiadohardware.net (http://www.hardware.com.br/dicas/recompilando-kernel-1.html e http://www.hardware.com.br/dicas/recompilando-kernel-debian.html)

Da vez que tentei e apareceu o erro que publiquei, seguindo a risca, eu não tinha feito atentado para o chmod -R a-s /usr/src/linux-2.6.34 (criei o link simbólico diretamente) e não tinha instalado os pacotes linux-headers-2.6.xx e linux-kbuild-2.6.xx, porque eu estava usando o linux-source-3.0.0 da versão 11.04 e baixei ele diretamente, sem ser por apt (não consegui adicioná-lo ao repositório). Depois segui a sua dica de alterar os arquivos do kernel (march=native).

Na segunda vez que tentei, resolvi baixar e instalar, por dpkg a imagem, headers, tools, tools-common da mesma versão linux-source (natty), mas nessa situação, depois de reiniciar apareceu a mensagem de erro no repositório e o sistema pediu para atualizar parcialmente a versão. Não atualizei e quando tentei o make xconfig já apareceu uma mensagem de erro.

Então, removi tudo o que tinha referente à versão 3.0.0-9-14 do natty e passei a estudar o problema. Achava que na primeira tentativa o problema tinha sido a falta do cabeçalho correto para a versão (o padrão do meu 10.04 é 2.6.32-37). Mas, ao colocar os pacotes do 3.0.0-9-14 e instalar o kernel genérico do natty na mesma versão, não funcionou.

Pesquisando, encontrei um tutorial para compilar kernel 3.0 no debian 6.0 http://yuribraz.com.br/2011/08/25/kernel-3-0-no-debian-squeeze/ , mas esse também depende do kernel.org, que está em manutenção. O interessante desse é que os comandos usados são diferentes.
Samsung Ativ Book i3 - Ubuntu 20.04LTS

Wagnesio

É porque esse último, ao contrário do tuto do HQx, não gera um pacote .deb
Ubuntu 12.10
Atom N270 1.6GHz - 1 GB RAM - 120 GB HD