Compilar el kernel con configuraciones predeterminadas


8

Suposiciones

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

  • El kernel descargado es el último estable de kernel.org.

  • Dejamos que los valores predeterminados permanezcan (sin cambios) en las opciones de make menuconfig.
  • Simplemente escriba make, make install, grub-update, y reiniciar el sistema.

Ahora, siguiendo estos supuestos, ¿aún debemos realizar algunos cambios adicionales en los archivos o compilar algunos controladores adicionales para garantizar un reinicio sin errores?

En caso afirmativo, ¿de qué cosas dependen esos cambios?

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

Respuestas:


7

No se recomienda solo un desnudo make menuconfig. La configuración requerida depende de tres cosas:

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

Entonces, la configuración "predeterminada" recomendada en mi opinión es:

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

Vea también la configuración de Kernel para distribuciones . El primer párrafo:

La configuración de un núcleo fue una vez un proceso bastante sencillo, que solo requería el conocimiento de qué hardware necesita soporte. Con el tiempo, las cosas se han vuelto más complejas en general, pero las distribuciones han agregado sus propios conjuntos de dependencias en características específicas del núcleo, dependencias que pueden ser difíciles de resolver para los usuarios habituales. Eso llevó a Linus Torvalds a presentar una propuesta de RFC para agregar opciones de configuración de kernel específicas de distribución.


1
Para decirlo de manera más sucinta: no hay una configuración de kernel "predeterminada" o "justo lo que Linus" que funciona. Si solo descarga y compila sin configurar nada, se espera que termine con un kernel roto y / o apenas funcional.
bahamat

La configuración predeterminada es solo eso. Solía ​​ser lo que sea que Linus estaba ejecutando en ese momento. Obtenga la configuración para su distribución y úsela como punto de partida.
vonbrand

gracias por la respuesta, estoy tratando de seguir un libro writing linux driverscon el kernel 2.6. I My Fedora 24 config tiene muchos valores no válidos para el kernel 2.6. ¿Alguna sugerencia sobre qué configuración usar para instalar el kernel 2.6?
Gedeón

3

Es probable que las distribuciones / hardware reales no funcionen correctamente con defconfig

Como se mencionó en esta respuesta , cualquier cosa que no sea dada por el proveedor de distribución o hardware probablemente fallará de manera sutil o menos sutil, por ejemplo:

  • es posible que no cree compatibilidad con controladores para alguna pieza esencial de hardware
  • los paquetes de la distribución pueden depender de una característica del núcleo que no compiló y falló

Además, además de las configuraciones específicas, es normal que los proveedores apliquen grandes conjuntos de parches sobre el núcleo de vainilla, incluso Ubuntu lo hace, por ejemplo.

Para Ubuntu / Debian en particular, he descrito cómo compilar el núcleo compatible desde la fuente en: /ubuntu/281763/is-there-any-prebuilt-qemu-ubuntu-image32bit-online/1081171# 1081171 Modificar esa base de núcleo estable es lo más sensato que puede hacer en ese caso.

QEMU funciona con defconfig

defconfigSin embargo, una cosa que funciona bien es arrancar en QEMU, probado en el kernel v4.20, QEMU 2.12.

Aquí hay un ejemplo completamente automatizado con Buildroot .

Como se señaló en ese enlace, necesita las siguientes opciones para iniciar desde el disco:

CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_BLK=y

aunque no son necesarios para initrd.

Para la compilación cruzada a un arco diferente, por ejemplo, aarch64, necesita:

make ARCH=arm64 defconfig

Pero como se explica aquí , aunque arm64 arranca en QEMU, genera un núcleo super hinchado, y es probable que desee implementar algo más mínimo, por ejemplo, como se describe aquí .

¿Qué make defconfighace exactamente?

Podemos ver fácilmente qué archivo de configuración se utilizó con una compilación detallada:

make V=1 defconfig

que sale en 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

de donde concluimos que el archivo usado debe ser arch / x86 / configs / x86_64_defconfig .

Ver también: /programming/41885015/what-exactly-does-linux-kernels-make-defconfig-do

make helptambién muestra otros objetivos relacionados por defecto interesantes como alldefconfigy savedefconfigque pueden ser útiles.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.