Tengo curiosidad por saber si es posible instalar el kernel de Linux solo, o si necesita usar uno de los sabores. Si fuera posible, ¿cómo lo harías? No necesito un tutorial detallado. Solo quiero saber cómo se haría conceptualmente. No soy bueno con cosas de bajo nivel, y quiero saber cómo se consigue un sistema operativo en la computadora. Me imagino que tiene algo que ver con el MBR.
Ah, y me di cuenta de que muchas de las respuestas sugieren una cierta distribución de algunos Linux mínimos. Probablemente debería haber declarado que no estoy buscando instalar un Linux mínimo o básico. Esta pregunta es puramente teórica. Aún así, realmente aprecio todas las respuestas, y las consultaré de inmediato, si alguna vez quisiera instalar un Linux verdaderamente personalizado.
fuente
kernel
tampoco teníabash
capacidades básicas . La interfaz de usuario estándar fue proporcionada por el programa shellCOMMAND.COM
. Lo más cerca que podría estar de un núcleo desnudo haciendo algo útil sería arrancar usando el parámetro del núcleoinit=/bin/bash
(suponiendo que haya un mínimo de Linux en el disco). Como se respondió, si solo tiene el gestor de arranque y el núcleo, se detendrá muy rápidamente cuando no lo encuentreinit
.Respuestas:
Técnicamente, puede instalar solo un gestor de arranque y el kernel solo, pero tan pronto como se inicie el kernel, se quejará de no poder iniciar "init", entonces simplemente se quedará allí y no podrá hacer nada con él.
Por cierto, es una parte del gestor de arranque que está en el MBR. El núcleo se encuentra en algún lugar del área normal de un disco. El gestor de arranque está configurado para saber dónde está, para que pueda cargar el núcleo y ejecutarlo.
fuente
No creo que entiendas exactamente lo que estás preguntando, pero es posible que desees echar un vistazo al proyecto Linux From Scratch .
fuente
aptitude search '?essential'
) en Debian o Ubuntu y entienda lo que cada uno hace (hay un poco más que el mínimo).Si está preguntando si puede instalar o actualizar un kernel "sobre" un sistema existente sin instalar un montón de otros programas?
El kernel de Linux es un archivo binario que generalmente se nombra
vmlinuz-x.x.x-x-name
en elboot
directorio (que generalmente es una pequeña partición separada al comienzo del disco duro) donde las x son un número de versión. "nombre" es solo un nombre elegido para el núcleo que se puede configurar en tiempo de compilación, puede usarlo para identificar qué tipo de máquina o arquitectura es el núcleo o por cualquier otro motivo.Se carga en el momento de arranque mediante un gestor de arranque,
GRUB
que normalmente se invoca mediante el código de arranque en el MBR que se invoca mediante la ROM del BIOS. Una vez que se carga, no se "mantiene abierto" ni se protege especialmente. Entonces puede reemplazar ese archivo con otro núcleo en funcionamiento. PeroGRUB
tiene una característica genial que le permite seleccionar múltiples núcleos desde los que arrancar. Por lo tanto, es bastante inteligente agregar su kernel adicional a esa lista, pero mantenga el kernel de trabajo original conocido en caso de que las cosas salgan mal.Creo que casi todas las distribuciones forman un núcleo "modular" donde los controladores de dispositivos están en archivos separados. Por lo tanto, la mayoría de los núcleos necesitan un sistema de archivos que contenga los controladores disponibles en el momento del arranque y para eso sirve un "initrd" (disco RAM inicial) o "initramfs".
GRUB
cargará el kernel en una ubicación en la memoria y el initrd en una ubicación diferente, y saltará al kernel diciéndole dónde está el initrd, iniciando Linux.Los controladores también pueden "integrarse" en el núcleo y, por lo tanto, se cargan automáticamente y están disponibles cuando el gestor de arranque carga la
vmlinuz
imagen. Los núcleos que están destinados a funcionar en diversos sistemas (como los de la mayoría de las distribuciones) generalmente minimizan lo que está integrado en el núcleo porque el hardware disponible se escaneará más adelante en el proceso de arranque y solo se cargarán los módulos que representan el hardware actual.Hay herramientas para modificar y crear initrds. Debian tiene buenas herramientas e imagino que otras distribuciones también.
Por lo tanto, si descarga un núcleo más reciente de kernel.org y lo compila para crear una nueva imagen binaria del núcleo, debe crear o actualizar un initrd con controladores que funcionen con ese núcleo. El viejo initrd no funcionará porque los controladores tienen que coincidir con la versión del núcleo que se está ejecutando.
El archivo initrd se llama de
initrd.img-x.x.x.x-name
manera similar al kernel, y se puede reemplazar después del arranque al igual que el kernel, y la mejor práctica indicaría que no elimina un initrd que funciona conocido hasta que sepa que puede iniciar su nuevo kernel + initrd con éxito.Espero que proporcione algo de contexto.
Si está buscando una instalación Linux "básica" que tenga poco o ningún programa adicional instalado, mi opción favorita siempre ha sido instalar la
netinst
imagen de Debian . Prácticamente solo tiene las herramientas más básicas necesarias para ejecutar una consola de texto de línea de comandos ynano
como editor de texto.fuente
Rootfs ejecutables individuales
El sistema mínimo absoluto ejecuta un solo
/init
programa como lo he explicado en Single Application Linux | Super usuarioMinimal Linux Live
https://github.com/ivandavidov/minimal
Para un sistema interactivo más interesante, este es un pequeño script (principalmente educativo) que:
El ISO te deja en un shell mínimo con busybox.
Con QEMU puede iniciar fácilmente en el sistema.
Lo he modificado para permitir que se ejecute desde el directorio de origen del kernel: https://github.com/cirosantilli/runlinux
Uso:
y quedará dentro de una ventana QEMU con su nuevo sistema mínimo. Increíble.
Como es pequeño, esta es una buena opción para leer la fuente y comprender lo que está sucediendo.
Probado en Ubuntu 16.04.
Buildroot
https://buildroot.org/
Gran conjunto de scripts de Makefile que gestionan:
Ejemplo mínimo:
Incluso tiene recetas para construir X11 desde cero: ¿Cómo instalar X11 en mi propio sistema Linux Buildroot?
Material profesional.
Alpine Linux
https://github.com/gliderlabs/docker-alpine
Distribución integrada con un administrador de paquetes que ofrece binarios precompilados de un sitio web.
Ver también
fuente
Me gustaría respaldar la sugerencia de Shadur de que debes ensuciarte las manos al estilo Linux From Scratch.
Además, algo similar, prueba Pocket Linux .
fuente
Es posible instalar un kernel de Linux sin las herramientas habituales de espacio de usuario. Esto se hace comúnmente en sistemas integrados como enrutadores. Por lo general, el núcleo se carga desde la memoria ROM o Flash, y se ha personalizado para el dispositivo en cuestión (generalmente con los controladores necesarios compilados en el núcleo en lugar de cargarse como módulos).
Debe existir al menos un programa de espacio de usuario para convertirse en el proceso 'init' (no necesariamente llamado
init
, pero iniciado por el kernel como proceso 1, y el padre automático de cualquier proceso huérfano), a menos que el kernel haya sido modificado (más bien que simplemente personalizado) para no requerir esto.¡Ciertamente no es necesario tener un shell disponible para tener un dispositivo basado en Linux que funcione, aunque puede hacer que el desarrollo sea mucho más fácil!
fuente
Muchas distribuciones proporcionan instalaciones "centrales". Esto es lo que quieres. Vea ubuntu-minimal, debian net-install, archlinux (el valor predeterminado es solo core).
Las otras respuestas son útiles si quieres aprender, pero ese podría no ser el caso = p
fuente