Diferenças entre edições de "Compilação do Kernel"

Fonte: TecPorto
Saltar para a navegação Saltar para a pesquisa
Linha 1: Linha 1:
= Genérico / Vanilla =
 
 
== Fazer o download do kernel e do BusyBox ==
 
[http://www.kernel.org Kernel Vanilla]
 
 
[http://www.busybox.net BusyBox]
 
 
== Instalação de pacotes adicionais ==
 
*build-essential
 
*libncurses-dev
 
*bison
 
*flex
 
*libelf-dev
 
 
== Pré-configuração ==
 
*Criação de um directório de trabalho
 
 
<syntaxhighlight lang="bash">
 
  mkdir MyDistro
 
</syntaxhighlight>
 
 
*Mover os downloads efectuados para o directório anteriormente criado
 
 
<syntaxhighlight lang="bash">
 
  mv Transferências/linux-4.17.12.tar.xz MyDistro/
 
  mv Transferências/busybox-1.29.2.tar.bz2 MyDistro/
 
  cd MyDistro
 
</syntaxhighlight>
 
 
*Descompactar os downloads
 
 
<syntaxhighlight lang="bash">
 
  tar -jxf busybox-1.29.2.tar.bz2
 
  tar -Jxf linux-4.17.12.tar.xz
 
</syntaxhighlight>
 
 
 
== Compilação do Kernel ==
 
== Compilação do Kernel ==
 
*Entrar no directório descompactado do Kernel
 
*Entrar no directório descompactado do Kernel
Linha 89: Linha 53:
  
 
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.
 
Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.
 
== Compilação do BusyBox ==
 
 
Entrar no directório BusyBox previamente descompactado
 
 
*Entrar no menu de configuração do BusyBox
 
 
<syntaxhighlight lang="bash">
 
make menuconfig
 
</syntaxhighlight>
 
 
 
Importante: Adicionar no menu Settings -> Build Options -> Build static binary (no shared libs)
 
 
*Compilar o BusyBox
 
 
<syntaxhighlight lang="bash">
 
make
 
</syntaxhighlight>
 
 
ou
 
 
<syntaxhighlight lang="bash">
 
make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui)
 
</syntaxhighlight>
 
 
ou
 
 
<syntaxhighlight lang="bash">
 
time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)
 
</syntaxhighlight>
 
 
* Verificar o tamanho do novo BusyBox
 
 
<syntaxhighlight lang="bash">
 
ls -l
 
</syntaxhighlight>
 
 
Verificar o tamanho do ficheiro busybox.
 
 
== Preparação da máquina de teste ==
 
O teste do novo kernel pode ser feita na máquina local. Contudo, neste tutorial foi utilizada uma máquina virtual, com 10GB de disco e duas partições, e uma distribuição linux instalada.
 
 
*8GB para o sistema base
 
*2GB para /MyDistro em jfs (ou o sistema de ficheiros que desejar)
 
 
Após a instalação da máquina é necessário executar os comandos de update e upgrade:
 
 
<syntaxhighlight lang="bash">
 
sudo apt update
 
sudo apt upgrade
 
</syntaxhighlight>
 
 
 
Antes de passar os ficheiros, deverá verificar se a partição onde vão ficar os novos ficheiros do kernel está montada.
 
 
<syntaxhighlight lang="bash">
 
mount | grep "MyDistro"
 
</syntaxhighlight>
 
 
Deverá, de seguida, passar os ficheiros do kernel, o bzImage, e o do Busybox, busybox, para a partição /MyDistro da máquina virtual.
 
Umas das formas utilizadas para passar os ficheiros foi via ssh. E necessário instalar o pacote ssh na máquina virtual (sudo apt install ssh) e na máquina real, basta aceder a uma pasta e ligar a um servidor remoto (sftp://<ip_máquina_virtual>/<pasta>).
 
 
=== Criação da estrutura de directórios e arquivos===
 
Dentro da partição do MyDistro e em root:
 
*Modificar dono e grupo dos arquivos anteriormente copiados
 
 
<syntaxhighlight lang="bash">
 
chown root:root busybox bzImage
 
</syntaxhighlight>
 
 
*Criação dos directórios
 
 
<syntaxhighlight lang="bash">
 
mkdir sbin bin dev
 
</syntaxhighlight>
 
 
*Criação de links simbólicos
 
 
<syntaxhighlight lang="bash">
 
ln -s busybox init
 
ln -s /busybox sbin/init
 
</syntaxhighlight>
 
 
*Criação dos arquivos que representam os dispositivos
 
 
<syntaxhighlight lang="bash">
 
mknod -m 600 console c 5 1
 
mknod -m 666 null c 1 3
 
mknod -m 620 tty1 c 4 1
 
mknod -m 620 tty2 c 4 2
 
mknod -m 660 sda b 8 0
 
mknod -m 660 sda1 b 8 1
 
mknod -m 660 sda2 b 8 2
 
</syntaxhighlight>
 
 
*Criação dos arquivos que representam as consolas
 
 
<syntaxhighlight lang="bash">
 
cd bin
 
  ln -s ../busybox sh
 
  ln -s ../busybox bash
 
</syntaxhighlight>
 
 
*Verificar se o BusyBox está OK
 
 
<syntaxhighlight lang="bash">
 
chroot /MyDistro /busybox
 
</syntaxhighlight>
 
 
=== Modificação do Grub ===
 
Entrar no ficheiro default do grub nano /etc/grub.d/40_custom e colocar no final do ficheiro:
 
 
<syntaxhighlight lang="bash">
 
menuentry "MyDistro" {
 
    set root='hd0,msdos2'
 
    search --set=root --hint-bios=hd0,msdos2
 
    linux /bzImage root=/dev/sda2
 
}
 
</syntaxhighlight>
 
 
 
No final, gravar o ficheiro e executar o comando:
 
 
<syntaxhighlight lang="bash">
 
update-grub
 
</syntaxhighlight>
 
 
 
Reiniciar e testar!
 
  
 
= Gentoo =
 
= Gentoo =

Revisão das 16h34min de 7 de agosto de 2018

Compilação do Kernel

  • Entrar no directório descompactado do Kernel
 cd MyDistro/linux-4.17.12


  • Limpar a pasta do código fonte de todas as configurações e objectos já construídos.
 make mrproper


Nota: Este comando ao ser executado depois de se fazer alguma modificação no kernel, vai apagar tudo o que foi modificado, voltando a colocar o estado inicial.

  • Entrar no menu de configuração do Kernel.
 make menuconfig


Nota: Neste passo, cada um deve retirar o que achar desnecessário para o kernel que está a construir, ou adicionar. No final, será criado um ficheiro .config com todas as modificações.

  • Compilar o novo Kernel.
 make

ou

 make -j4 (em que o 4 corresponde ao número de núcleos que o processador possui)

ou

 time make -j4 (onde o time vai permitir contabilizar o tempo que demora a executar o comando)
  • Verificar tamanho do novo Kernel
 ls -l arch/x86/boot


Verificar o tamanho do ficheiro bzImage.

Nota: O Kernel original, depois de compilado, tinha +/- 8,4MB. Em algumas experiências, foi possível reduzir o tamanho do Kernel para +/- 5,7MB.

Gentoo

Ubuntu

CentOS