Compilando o kernel com configurações padrão


8

Premissas:

  • A plataforma:
    anisha@linux-dopx:~/> uname -a
    Linux linux-dopx 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64 x86_64 x86_64 GNU/Linux

  • O kernel baixado é o mais estável do kernel.org.

  • Deixamos que os padrões permaneçam (não faça alterações) nas opções de make menuconfig.
  • Basta digitar make, make install, grub-update, e reinicie.

Agora, seguindo essas premissas, ainda é necessário fazer alterações adicionais nos arquivos ou compilar alguns drivers extras para garantir uma reinicialização sem erros?

Se sim, então de que coisas essas mudanças dependem?

EDIT 1:

anisha@linux-dopx:/> sudo /sbin/lspci -n
00:00.0 0600: 8086:29c0 (rev 10)
00:02.0 0300: 8086:29c2 (rev 10)
00:1b.0 0403: 8086:27d8 (rev 01)
00:1c.0 0604: 8086:27d0 (rev 01)
00:1c.1 0604: 8086:27d2 (rev 01)
00:1d.0 0c03: 8086:27c8 (rev 01)
00:1d.1 0c03: 8086:27c9 (rev 01)
00:1d.2 0c03: 8086:27ca (rev 01)
00:1d.3 0c03: 8086:27cb (rev 01)
00:1d.7 0c03: 8086:27cc (rev 01)
00:1e.0 0604: 8086:244e (rev e1)
00:1f.0 0601: 8086:27b8 (rev 01)
00:1f.1 0101: 8086:27df (rev 01)
00:1f.2 0101: 8086:27c0 (rev 01)
00:1f.3 0c05: 8086:27da (rev 01)
01:00.0 0200: 10ec:8136 (rev 01)

Respostas:


7

Não é recomendado apenas um simples make menuconfig. A configuração necessária depende de três coisas:

 the hardware being used
 the features used by the OS/distribution
 the features by you (file-systems, raid, ..etc)

Portanto, a configuração "padrão" recomendada na minha opinião é:

cd your_kernel_src
cp /boot/your-distribution-config .config
make localmodconfig
make menuconfig

Veja também Configuração do Kernel para distribuições . O primeiro parágrafo:

A configuração de um kernel já foi um processo bastante simples, exigindo apenas o conhecimento de que hardware precisa ser suportado. Com o tempo, as coisas ficaram mais complexas em geral, mas as distribuições adicionaram seus próprios conjuntos de dependências aos recursos específicos do kernel - dependências que podem ser difíceis para os usuários comuns descobrirem. Isso levou Linus Torvalds a apresentar uma proposta de RFC para adicionar opções de configuração de kernel específicas da distribuição.


1
Para colocar isso de forma mais sucinta: Não há nenhuma configuração de kernel "padrão" ou "exatamente o que o Linus pretendia". Se você apenas baixar e compilar sem configurar nada, espera-se que você acabe com um kernel quebrado e / ou quase funcional.
bahamat 31/07/12

A configuração padrão é exatamente isso. Costumava ser o que Linus estava executando na época. Obtenha a configuração para sua distribuição e use-a como ponto de partida.
vonbrand

obrigado pela resposta, estou tentando seguir um livro writing linux driverscom o kernel 2.6. I My Fedora 24 config possui muitos valores inválidos para o kernel 2.6. Alguma sugestão sobre qual configuração usar para instalar o kernel 2.6?
Gideon

3

Hardware / distros reais provavelmente não funcionarão corretamente com defconfig

Conforme mencionado nesta resposta , qualquer coisa que não seja fornecida pelo fornecedor de distribuição ou hardware provavelmente falhará de maneiras sutis ou menos sutis, por exemplo:

  • talvez você não construa suporte de driver para algumas peças essenciais de hardware
  • os pacotes da distribuição podem depender de um recurso do kernel que você não construiu e falhou

Além disso, além de configurações específicas, é normal que os fornecedores apliquem grandes conjuntos de patches sobre o kernel da baunilha, até o Ubuntu faz isso por exemplo.

Para o Ubuntu / Debian em particular, descrevi como compilar o kernel suportado da fonte em: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Modificar essa base estável do kernel é a coisa mais segura que você pode fazer nesse caso.

QEMU trabalha com defconfig

Uma coisa que defconfigfaz muito bem, é inicializar no QEMU, testado no kernel v4.20, QEMU 2.12.

Aqui está um exemplo totalmente automatizado com o Buildroot .

Conforme observado nesse link, você precisa das seguintes opções para inicializar a partir do disco:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

embora eles não sejam necessários para o initrd.

Para compilação cruzada em um arco diferente, por exemplo, aarch64, você precisa:

make ARCH=arm64 defconfig

Mas, como explicado aqui , embora o arm64 seja inicializado no QEMU, ele gera um kernel super-inchado e você provavelmente desejará lançar algo mais mínimo, por exemplo, como descrito aqui .

O make defconfigque exatamente?

Podemos ver facilmente qual arquivo de configuração foi usado com uma compilação detalhada:

make V=1 defconfig

que gera na v4.19:

make -f ./scripts/Makefile.build obj=scripts/basic
rm -f .tmp_quiet_recordmcount
make -f ./scripts/Makefile.build obj=scripts/kconfig defconfig
scripts/kconfig/conf  --defconfig=arch/x86/configs/x86_64_defconfig Kconfig

a partir do qual concluímos que o arquivo usado deve ser arch / x86 / configs / x86_64_defconfig .

Consulte também: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helptambém mostra outros destinos relacionados ao padrão interessantes, como alldefconfige savedefconfigque podem ser úteis.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.