Obtenha e compile o kernel da linha principal, git method:
veja também: link Eu faço as coisas um pouco diferentes (o que mais é novo?).
Pré-requisitos (Must):
A etapa 1 é apt-get update
e apt-get dist-upgrade
(ou seja, verifique se tudo está atualizado)
Etapa 2
sudo apt-get install fakeroot build-essential crash kexec-tools makedumpfile kernel-wedge
Etapa 3
sudo apt-get build-dep linux
Etapa 4
sudo apt-get install git-core libncurses5 libncurses5-dev libelf-dev asciidoc binutils-dev
Pré-requisitos do kernel 4.3:
sudo apt-get install libssl-dev
Pré-requisitos (Opcional):
sudo apt-get install git-email git-doc
A parte do git:
mkdir temp-k-git
cd temp-k-git
git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
Nunca faça coisas no ramo principal padrão. Sempre faça alguma área de trabalho.
git checkout -b k44rc8_stock v4.4-rc8
Roube o arquivo de configuração do kernel do Ubuntu (já instalado):
ls -l /boot
cp /boot/config-4.4.0-040400rc8-generic .config
O arquivo de configuração do Ubuntu tem depuração completa. Faz um kernel enorme e leva o dobro do tempo para compilar
scripts/config --disable DEBUG_INFO
Nota especial a partir do Kernel 4.4 e se estiver compilando usando o Ubuntu 14.04 (não sei sobre 15.10), com uma versão mais antiga do compilador c: ele não pode compilar com CONFIG_CC_STACKPROTECTOR_STRONG.
scripts/config --disable CC_STACKPROTECTOR_STRONG
Compile o kernel:
time make -j9 bindeb-pkg <<< Suggest use number of CPUs + 1. Use less for some responsiveness to be left for other uses
<<< I always time the kernel build.
ou
time make -j9 bindeb-pkg LOCALVERSION=-stock <<< For a localized verion name append
ou
time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-stock <<< To automatically use defaults for any new config stuff (particuarly useful when bisecting the kernel).
Quando a construção estiver concluída, instale-a:
sudo dpkg -i ../linux-headers-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
sudo dpkg -i ../linux-image-4.4.0-rc8-stock_4.4.0-rc8-stock-144_amd64.deb
Então, neste ponto, sabemos que o kernel mainline compila O.K., então vá para o kernel customizado. Crie um novo ramo, aplique os patches e compile:
$ git checkout -b k44rc8_custom v4.4-rc8
Switched to a new branch 'k44rc8_custom'
$ git am plv6_1_3.patch
Applying: cpufreq: intel_pstate: configurable algorithm to get target pstate
$ git am plv6_2_3.patch
Applying: cpufreq: intel_pstate: account for non C0 time
$ git am plv6_3_3.patch
Applying: cpufreq: intel_pstate: Account for IO wait time
$ time make -j9 olddefconfig bindeb-pkg LOCALVERSION=-custom
Note que é intencional que eu não faça um make clean
, pois é desejável economizar muito tempo fazendo uma compilação incremental. A primeira compilação levou 21 minutos e 26 segundos, mas a próxima compilação personalizada levou apenas 4 minutos e 43 segundos.