Estou interessado em compilar um novo kernel no Ubuntu 12.04 x86 64 bits.
Eu encontrei esta página wiki, que é basicamente um espelho para este blog e existem muitas etapas ( git , etc.) que parecem inúteis para mim.
Com lançamentos / distribuições anteriores, eu costumava criar um .config
arquivo e modificar um Makefile
se necessário, apenas execute make
e pronto.
Existe uma maneira simples de fazer isso no Ubuntu?
Respostas:
1. Use
apt-get source
para baixar a versão Ubuntu do kernelfornece uma pasta que contém, por exemplo:
O diff em negrito inclui todas as personalizações do Ubuntu / Debian.
2. Para construir um kernel padrão com o seu
.config
, use omake-kpkg
método Debian "antiquado"Esta é a maneira antiquada alternativa descrita no wiki:
Se você estiver compilando um kernel pela primeira vez:
Depois,
cd
no diretório de origem (aquilinux-3.2.0
), e executemake oldconfig
para criar um.config
arquivo com a configuração do kernel em execução ou copie uma terceira parte.config
para esse diretório.Dependendo se você deseja uma configuração gráfica ou de texto, instale:
(Texto)
(Gráfico)
E então execute:
(Texto)
(Gráfico)
Quando terminar, basta executar:
onde
N
é quantas tarefas executar em paralelo (geralmente o número de CPUs que você possui) emy-very-own-kernel
é uma sequência personalizada para identificar essa compilação.Quando terminar, a imagem do kernel e os arquivos de cabeçalho estarão prontos como debs no diretório pai; você pode instalá-los com
sudo dpkg -i
, que também cuidará de adicionar entradas GRUB, etc.fonte
linux-3.2.0
diretório e executarpatch -p1 <../patch.diff
?apt-get source ...
já fez isso por você!fakeroot debian/rules editconfigs
,fakeroot debian/rules clean
,fakeroot debian/rules binary
É a maneira correta, livre de problemas.Aqui estão os passos. Este procedimento é baseado em Como: Compilar o kernel 2.6 do nixCraft - mas modernizado consideravelmente.
Faça o download e extraia o código fonte do kernel que você deseja construir.
Você pode obter o código-fonte upstream do kernel em kernel.org . A versão 3.16.1 (o último kernel estável até o momento da redação deste documento) será usada aqui. Portanto, pode ser necessário modificar esses comandos se você estiver usando uma versão diferente.
O código fonte do kernel é atualmente fornecido em. alcatrão . arquivos xz , clique no link "tar.xz" da versão que desejar:
Após
cd
acessar o diretório em que você baixou o arquivo, é possível extraí-lo comtar
:Instale as ferramentas de construção necessárias e execute a configuração do kernel.
Para obter o conjunto de ferramentas do Ubuntu (
gcc
,make
e assim por diante), instale o metapacote essencial da compilação :Duas maneiras razoavelmente fáceis de usar para configurar o que entra no seu kernel são fornecidas pelos
make
destinosxconfig
emenuconfig
.xconfig
executa um utilitário de configuração gráfica, enquantomenuconfig
é baseado em texto (ou seja, sua interface aparece totalmente dentro do seu terminal). Cada um requer algum software adicional não fornecido pelo essencial da compilação .Para configurar graficamente , instale libqt4-dev e pkg-config e execute
make xconfig
:Para configurar no terminal , instale
libncurses5-dev
(obrigado a Hannu por esta informação) e executemake menuconfig
:Crie o kernel configurado.
Primeiro, execute isso para compilar o kernel e criar
vmlinuz
:vmlinuz
é "o kernel". Especificamente, é a imagem do kernel que será descompactada e carregada na memória pelo GRUB ou qualquer outro carregador de inicialização que você usar.Em seguida, construa os módulos carregáveis do kernel :
Instale seu kernel recém-construído.
Supondo que esses
make
comandos foram concluídos com sucesso, é hora de instalar o novo kernel. Primeiro instale os módulos:Em seguida, instale o próprio kernel :
Isso coloca
vmlinuz-3.16.1
(uma cópia devmlinuz
),config-3.16.1
(um arquivo de texto que armazena os parâmetros de configuração do kernel) eSystem.map-3.16.1
(a tabela de pesquisa de símbolos do kernel )/boot
. Para mais detalhes, consulte esta publicação comp.os.linux.misc de Hadron eman installkernel
.Configuração final, para que o kernel possa ser iniciado e inicialize o sistema:
Esta seção é parcialmente baseada nas informações do Kernel / Compile .
Com o kernel agora onde precisa estar, ele precisa:
uma entrada na configuração do carregador de inicialização , para que você possa selecionar e inicializar a partir dele.
um sistema de arquivos RAM inicial , o ambiente no qual o kernel carrega drivers e monta o
/
sistema de arquivos .(Se você está instalando um kernel antigo ou o configurou para usar o devfs em vez do udev mais novo , pode ser necessário ou desejável configurar um ramdisk inicial . Se você precisar, consulte
man initrd
.)Gere seus initramfs com
mkinitramfs
:Quando você atualiza a configuração do carregador de inicialização GRUB2 - que é o padrão no Ubuntu desde 9.10 - deve detectar automaticamente o novo kernel e adicionar uma opção para inicializá-lo.
Experimente o seu kernel.
Agora você pode reiniciar para testar seu novo kernel. Pode ser necessário manter pressionado Shiftou pressionar Escdurante a inicialização para ver o menu de inicialização do GRUB, onde você pode selecionar entre os diferentes kernels instalados.
Para tornar seu kernel (ou outro) o padrão, consulte Como altero a ordem de inicialização do GRUB?
fonte
make menuconfig
requer #apt get install libncurses5-dev
As instruções rápidas para a construção de um kernel do Ubuntu (em oposição ao vanilla) podem ser encontradas aqui: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel .
Não copiarei o wiki inteiro, mas listarei as etapas mínimas para compilar a versão do kernel do Ubuntu que você instalou atualmente. (Para obter a versão mais recente, clone o repositório kernel git da próxima versão do Ubuntu.) Testado no Ubuntu 16.04.
fonte