En informática , klibc es un subconjunto minimalista de la biblioteca estándar de C desarrollada por H. Peter Anvin . Fue desarrollada principalmente para ser utilizada durante el proceso de inicio de Linux , y es parte del espacio de usuario temprano , es decir, componentes utilizados durante el inicio del núcleo, pero que no se ejecutan en modo núcleo . [2] Estos componentes no tienen acceso a la biblioteca estándar (generalmente glibc o musl ) utilizada por los programas normales del espacio de usuario .
El desarrollo de la biblioteca klibc fue parte del esfuerzo de 2002 para sacar parte del código de inicialización de Linux del núcleo. [3] [4] [5] Según su documentación, la biblioteca klibc está optimizada para ser correcta y de tamaño pequeño. [2] Debido a su diseño, klibc también es técnicamente adecuada para software integrado en general en una variedad de plataformas, y es utilizada incluso por programas con todas las funciones como MirBSD Korn Shell .
Durante el proceso de inicio de Linux, klibc se carga desde dentro de un sistema de archivos RAM temporal , initramfs . Se incorpora por defecto en los sistemas de archivos RAM iniciales que son creados por el mkinitramfs
script en Debian [6] y Ubuntu . Además, tiene un conjunto de pequeñas utilidades Unix que son útiles en el espacio de usuario inicial : cpio , dash , fstype, mkdir , mknod , mount, nfsmount, run-init, etc. todas usando la biblioteca klibc . [7] Una estrategia alternativa es incluir todo en un ejecutable, como BusyBox , que determina el subprograma solicitado a través de argumentos o enlaces duros o enlaces simbólicos .
klibc tiene licencia dual bajo una BSD de tres cláusulas [8] (anteriormente de cuatro cláusulas, rectificada mediante el Aviso de permiso histórico y exención de responsabilidad ), así como la GPLv2 ( solo GPLv2 , debido a restricciones del núcleo de Linux).
Esta licencia dual permite la compatibilidad tanto con software sin copyleft como con programas GPLv3 a través de la licencia BSD (que de otro modo no serían compatibles). (Sin embargo, si klibc incluye cualquier código de kernel GPLv2 como el de glibc, toda la aplicación vuelve a GPLv2.)