Un núcleo estable de 3 * ordinario es de aproximadamente 70 mb ahora. Pero hay pequeñas distribuciones de Linux de 30-10 mb con software y otras cosas que se ejecutan de fábrica.
¿Cómo puede ser tan pequeño el kernel de Linux en estas distribuciones? ¿Puede eliminar solo los módulos y controladores innecesarios reducir drásticamente el tamaño? ¿Qué más se hace para reducir el tamaño del núcleo?
Respuestas:
Si. Si los elimina (compila / crea módulos solo lo que necesita), comprima el núcleo (optimice para el tamaño) ... dará como resultado un núcleo tan pequeño. Puede hacer incluso más pequeños, para el sistema de destino. Como si conociera mi PC, sé mis cosas. Así que solo compilaré lo que necesito. Al igual que mis propios controladores SATA, controlador para USB, etc. Nada más. Sin cámara web, sin discos IDE antiguos, nada.
Además: los más grandes que encuentra son el núcleo ENTERO (que nunca necesita usar). Incluso los de escritorio contienen (la mayoría de las veces, como módulos) MUCHAS cosas innecesarias. Pero los novatos esperan que todo tipo de hardware que conecten simplemente funcione.
(Tenga en cuenta que los módulos no se cargarán hasta que sean necesarios. Hay 3 estados:
[ ]
- No se compilará, no formará parte de su núcleo.[M]
- Se compilará como un módulo.(Puede modificarlo) , o su sistema lo cargará automáticamente cuando sea necesario.
Depende del sistema, del país de usuario)
[X]
. Se compilará en el núcleo Y estará presente, siempre.Distros con kernel pequeño:
fuente
Las primeras distribuciones de Linux, como Tom's Root-Boot , MuLinux , Diet-router , (ahora desaparecido) LOAF y muchas otras que ahora partieron, todas instalaron un sistema Linux en funcionamiento en uno o dos disquetes de 1,44 MB.
El kernel de Linux ha crecido, pero no olvide que es modular, los módulos del kernel se cargan según sea necesario. Por lo tanto, todavía es posible producir una distribución de Linux con una huella muy pequeña.
Ver: Guía de ajuste del tamaño del núcleo - eLinux.org
Si lees Linux_tiny.pdf , verás esto
fuente
La configuración predeterminada del kernel está configurada para admitir la mayor cantidad de hardware posible. Un kernel no despojado con configuración predeterminada resultó en un tamaño de 1897996 kB (incluyendo kernel + módulos). Al eliminar muchos controladores y opciones innecesarios (¿por qué necesitaría un módulo HP si poseo una computadora portátil Clevo?), Resultó en un tamaño de 892892 kB, que es una reducción de tamaño del 53% en comparación con el núcleo de stock.
Al instalar los módulos del núcleo, agregue la
INSTALL_MOD_STRIP=1
opción. Esto eliminará todos los símbolos de depuración y reducirá el tamaño en un 92% para mí (de 892892 kB a 69356 kB). Tenga en cuenta que esto solo afectará a los módulos que se instalarán y no al núcleo (vmlinuz) en sí:De Documentation / kbuild / kbuild.txt :
fuente
La mayoría de las principales distribuciones configuran sus núcleos con el máximo soporte de hardware para que funcione de inmediato con la mayoría de las computadoras y cualquier cosa que conecte más adelante. También usan un sistema initrd que no es necesario en la mayoría de los casos. También hay opciones en la configuración del núcleo que hacen que el proceso de compilación se optimice para el tamaño, y también se puede seleccionar un método de compresión mejor (aunque más lento). Por último, si está mirando el tamaño del código fuente del núcleo, tenga en cuenta que también incluye soporte para varias arquitecturas más allá de x86 / amd64, protocolos de red, sistemas de archivos y otras características que probablemente nunca usará y que pueden estar deshabilitado
fuente
Es bastante simple, un sistema mínimo solo necesita bootloader + kernel aunque es casi inútil. La mayoría de los comandos que se usan todos los días son binarios opcionales para el sistema, como sh, ls, etc. Si está interesado en componentes internos, Linux From Scratch! Es un buen punto de partida.
fuente