Compilare il kernel con le configurazioni predefinite


8

ipotesi:

  • La piattaforma:
    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

  • Il kernel scaricato è l'ultimo stabile da kernel.org.

  • Lasciamo che le impostazioni predefinite rimangano (non apportiamo modifiche) nelle opzioni di make menuconfig.
  • Basta digitare make, make install, grub-update, e riavviare.

Ora, seguendo questi presupposti, siamo ancora tenuti ad apportare alcune modifiche aggiuntive ai file o compilare alcuni driver extra per garantire un riavvio senza errori?

In caso affermativo, da cosa dipendono questi cambiamenti?

MODIFICA 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)

Risposte:


7

Non è raccomandato solo un nudo make menuconfig. La configurazione richiesta dipende da tre cose:

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

Quindi la configurazione "predefinita" consigliata a mio avviso è:

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

Vedi anche Configurazione del kernel per le distribuzioni . Il primo paragrafo:

La configurazione di un kernel una volta era un processo abbastanza semplice, che richiedeva solo la conoscenza di quale hardware avesse bisogno di essere supportato. Con il passare del tempo, le cose sono diventate più complesse in generale, ma le distribuzioni hanno aggiunto i propri insiemi di dipendenze su funzionalità specifiche del kernel, dipendenze che possono essere difficili da capire per gli utenti normali. Ciò ha portato Linus Torvalds a presentare una proposta RFC per aggiungere opzioni di configurazione del kernel specifiche per la distribuzione.


1
Per dirla in modo più succinto: non esiste alcun "default" funzionante o "proprio quello che Linus intendeva" config del kernel. Se scarichi e compili semplicemente senza configurare nulla, ci si aspetta che tu finisca con un kernel rotto e / o appena funzionante.
Bahamat,

La configurazione predefinita è proprio questa. Era quello che Linus stava correndo in quel momento. Ottieni la configurazione per la tua distribuzione e usala come punto di partenza.
vonbrand,

grazie per la risposta, sto cercando di seguire un libro writing linux driverscon il kernel 2.6. I La mia configurazione di Fedora 24 ha molti valori non validi per il kernel 2.6. Qualche suggerimento su quale configurazione usare per installare il kernel 2.6?
Gideon,

3

L'hardware / le distribuzioni reali probabilmente non funzioneranno correttamente con defconfig

Come indicato in questa risposta , tutto ciò che non viene fornito dal distributore o dal fornitore dell'hardware molto probabilmente fallirà in modo sottile o meno sottile, ad esempio:

  • potresti non creare supporto driver per alcuni componenti hardware essenziali
  • i pacchetti della distribuzione potrebbero fare affidamento su una funzionalità del kernel che non è stata creata e fallita

Inoltre, oltre a configurazioni specifiche, è normale che i fornitori applichino patchs di grandi dimensioni in cima al kernel vanilla, anche Ubuntu lo fa ad esempio.

Per Ubuntu / Debian in particolare, ho descritto come compilare il kernel supportato dal sorgente all'indirizzo: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Modificare quella base kernel stabile è la cosa più sana che puoi fare in quel caso.

QEMU funziona con defconfig

Una cosa che defconfigfunziona bene, però, è l'avvio su QEMU, testato sul kernel v4.20, QEMU 2.12.

Ecco un esempio completamente automatizzato con Buildroot .

Come indicato su quel link, sono necessarie le seguenti opzioni per l'avvio dal disco:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

sebbene non siano necessari per initrd.

Per la compilazione incrociata su un arco diverso, ad esempio aarch64, è necessario:

make ARCH=arm64 defconfig

Ma come spiegato qui , sebbene arm64 si avvii su QEMU, genera un kernel super gonfio e probabilmente vorrai implementare qualcosa di più minimale, ad esempio come descritto qui .

Che cosa make defconfigfa esattamente?

Possiamo facilmente vedere quale file di configurazione è stato usato con una build dettagliata:

make V=1 defconfig

che esce su 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

da cui concludiamo che il file utilizzato deve essere arch / x86 / configs / x86_64_defconfig .

Vedi anche: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helpmostra anche altri target correlati predefiniti interessanti come alldefconfige savedefconfigche possono essere utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.