Handbook:MIPS/Blocks/Kernel/pt-br
Preparando a configuração
Nas máquinas Origin 200/2000, Indigo2 Impact (R10000), Octane/Octane2 e O2, é necessário um kernel 64 bits para dar boot. Para essas máquinas, faça emerge sys-devel/kgcc64 para criar compilador cruzado ("cross-compiler") para a compilação de kernels 64 bits.
Muitos dos sistemas suportados tem arquivo .configs de exemplo no fonte do kernel. Nem todos os sistemas tem arquivo de configuração distribuído dessa forma. Aqueles que tem podem ser configurados usando os comandos descritos na tabela abaixo.
Sistema | Comando de configuração |
---|---|
Servidores Cobalt | make cobalt_defconfig |
Indy, Indigo2 (R4k), Challenge S | make ip22_defconfig |
Origin 200/2000 | make ip27_defconfig |
Indigo2 Impact (R10k) | make ip28_defconfig |
O2 | make ip32_defconfig |
Todas as imagens de instalação do Gentoo provêm o arquivo de opções de configuração do kernel como parte da imagem em si, acessível como /proc/config.gz. Ele pode ser usado em muitos casos. É melhor, entretanto, que os fontes do kernel correspondam os mais próximo possível do kernel em execução. Para extraí-lo, simplesmente use o zcat como mostrado abaixo.
root #
zcat /proc/config.gz > .config
Essa configuração do kernel é feita para uma imagem de boot de rede. Isto é, ela espera encontrar uma imagem de sistema de arquivo root por perto, seja como um diretório para initramfs ou um dispositivo de loopback para initrd. Ao executar o make menuconfig, não se esqueça de ir em General Setup e desabilitar as opções para initramfs.
Customizando a configuração
Uma vez encontrado o arquivo de configuração, copie-o para o diretório dos fontes do kernel e renomeie-o para .config. A partir daí, rode make oldconfig para que tudo seja atualizado conforme as instruções acima, e customize a configuração antes de compilar.
root #
cd /usr/src/linux
root #
cp /path/to/example-config .config
root #
make oldconfig
Por enquanto apenas tecle ENTER (ou Return) em cada prompt para aceitar os defaults...
root #
make menuconfig
Na seção Hackeando o Kernel há uma opção chamada "Você Está Usando um Compilador Cruzado?". Ela instrui aos arquivos Makefile do kernel para acrescentar "mips-linux-" (ou mipsel-linux ... etc) ao gcc como comandos ao compilar o kernel. Isso deve ser desligado, mesmo em compilação cruzada. Em vez disso, se for necessário o uso de um compilador cruzado, especifique o prefixo usando a variável CROSS_COMPILE como mostrado na próxima seção.
Existe um problema conhecido com o JFS e o ALSA em sistemas Octane no qual o ALSA não funciona. Dada a natureza experimental do JFS no MIPS, recomenda-se evitar o uso do JFS por enquanto.
Compilando e instalando
Agora que o kernel está configurado, é hora de compilá-lo e instalá-lo. Saia da configuração e inicie o processo de compilação:
Em máquinas de 64 bits, especifique CROSS_COMPILE=mips64-unknown-linux-gnu- (ou mips64el-... se for um sistema little endian) para usar o compilador de 64 bits.
Para compilar nativamente:
root #
make vmlinux modules modules_install
Para compilação cruzada na máquina-alvo, ajuste mips64-unknown-linux-gnu- de acordo:
root #
make vmlinux modules modules_install CROSS_COMPILE=mips64-unknown-linux-gnu-
Quando compilando em outra máquina, tal como uma x86, use os seguintes comandos para compilar o kernel e instalar os módulos em um diretório específico para ser transferido para a máquina-alvo:
root #
make vmlinux modules CROSS_COMPILE=mips64-unknown-linux-gnu-
root #
make modules_install INSTALL_MOD_PATH=/somewhere
Quando compilar um kernel de 64 bits para a Indy, Indigo2 (R4000), Challenge S ou O2, use o alvo vmlinuz.32 em vez de vmlinux, ou a máquina não serã capaz de dar boot. Isso é para contornar o fato da PROM não entender o formato ELF64.
root #
make vmlinux.32
É possível habilitar a compilação paralela usando
make -jX
com X sendo o número de tarefas em paralelo que o processo de compilação é permitido disparar. Isso é similar às instruções sobre o /etc/portage/make.conf vistas anteriormente, com a variável MAKEOPTS.O comando acima irá criar o vmlinux.32, que é o kernel final.
Quando o kernel terminar de ser compilado, copie sua imagem para o /boot/.
Em servidores Cobalt, o gerenciador de boot esperará encontrar uma imagem de kernel compactada. Lembre-se de compactar o arquivo com gzip -9 após colocá-lo em /boot/.
root #
cp vmlinux /boot/kernel-6.6.21-gentoo
Em servidores Cobalt, compacte a imagem do kernel:
root #
gzip -9v /boot/kernel-6.6.21-gentoo