
Trabalho na Nimbix e tenho acesso a alguns sistemas multicore bastante poderosos, pretendo fazer um serviço de compilação de kernel.
Os sistemas podem ter até 128 núcleos e no meu teste inicial com 32 núcleos, consigo compilar muito rápido - esses são os horários para make -j32
o Linux 4.8.12:
real 2m16.366s
user 29m18.732s
sys 2m28.616s
No meu laptop Dell Precision 6500, ele ainda não havia sido compilado após cerca de 25 minutos.
Meu primeiro teste é tentar construir um kernel para meu próprio sistema (Arch Linux).
Eu /lib/modules
copiei o bzImage do diretório do sistema remoto para o meu sistema.
Agora, quando tento fazer, mkinitcpio
recebo o erro:
==> ERROR: '/lib/modules/4.8.14-2-ck-nehalem' is not a valid kernel module directory
(Peguei o arquivo .config do kernel base em /proc/config.gz - tenho aquela versão do kernel ck-nehalem)
Como faço para que isso funcione? Qual é a maneira geral de transferir módulos de outro sistema para aquele onde a imagem initramfs é construída? O initramfs também pode ser construído remotamente?
Em uma ligeira tangente, esse serviço de compilação de kernel seria útil para desenvolvedores e criadores de kernel? O custo de usar o cluster de computação é de cerca de 3$ por hora, então uma única compilação acaba custando quase nada.
Responder1
Portanto, estou respondendo minha própria pergunta caso seja útil para outra pessoa.
Definitivamente, você pode construir um initramfs remotamente, desde que execute
make modules_install
no sistema remoto - no entanto, nunca consegui fazer com que a imagem contivesse os módulos necessários - especialmente o material do md raido. , não consegui criar um initramfs que inicializasse meu sistema. Mas acho que isso pode ser feito se você mencionar explicitamente todos os módulos em mkinitcpio.conf
Alguns módulos como o nvidia também exigem que o dkms seja executado para construir os módulos necessários.
Se você copiar os módulos em /lib/modules/ para o seu sistema local, você terá que refazer os links build
e source
apontar para um diretório que contém a fonte do kernel Linux - os links feitos no lado remoto serão inválidos.
Responder2
Em relação aos módulos md raid ausentes no initramfs - também há uma maneira de abrir um arquivo initramfs e adicionar os módulos necessários e, em seguida, recriar um novo initramfs baseado no original, mas desta vez incluindo os módulos que você adicionou. Já fiz isso várias vezes no Fedora, e acredito que isso também pode ser feito no Arch linux. Alternativamente, talvez isso possa ser feito configurando o arquivo mkinitcpio.conf ou por um parâmetro para mkinitcpio.
Rami Rosen
Responder3
Você deve compilar o kernel localmente e construir o kernel compilado como pacote .deb/.rpm e instalar no remoto. Da mesma forma que você instalou o kernel binário dos repositórios.