Só estou curioso para saber se é possível instalar o kernel Linux sozinho ou se você precisa usar um dos sabores. Se fosse possível, como você faria isso? Não preciso de um tutorial detalhado. Eu só quero saber como isso seria feito conceitualmente. Não sou bom com coisas de baixo nível e quero saber como você instala um sistema operacional no computador. Eu imagino que tenha algo a ver com o MBR.
Ah, e notei que muitas das respostas sugerem uma certa distribuição de um mínimo de Linux. Eu provavelmente deveria ter afirmado que não pretendo instalar um Linux mínimo ou básico. Esta questão é puramente teórica. Ainda assim, eu realmente aprecio todas as respostas e as consultarei imediatamente, se eu quiser instalar um Linux verdadeiramente personalizado.
fonte
kernel
também não tinhabash
recursos básicos . A interface do usuário padrão foi fornecida pelo programa shellCOMMAND.COM
. O mais próximo que você pode chegar de um kernel simples de fazer qualquer coisa útil seria inicializar usando o parâmetro kernelinit=/bin/bash
(assumindo que um Linux mínimo esteja em disco). Como respondido, se você tiver apenas o gerenciador de inicialização e o kernel, ele irá parar muito rapidamente quando não for encontradoinit
.Respostas:
Tecnicamente, você pode instalar apenas um gerenciador de inicialização e o kernel sozinho, mas assim que o kernel inicializar, ele irá reclamar por não conseguir iniciar o "init", então ele ficará parado e você não poderá fazer nada com ele.
BTW, é uma parte do gerenciador de inicialização que está no MBR. O kernel fica em algum lugar na área regular de um disco. O gerenciador de inicialização está configurado para saber onde está, para que possa carregar o kernel e executá-lo.
fonte
Acho que você não entende exatamente o que está perguntando, mas pode dar uma olhada no projeto Linux From Scratch .
fonte
aptitude search '?essential'
) no Debian ou Ubuntu e entenda o que cada um faz (há um pouco mais do que o mínimo).Se você está perguntando se pode simplesmente instalar ou atualizar um kernel "sobre" um sistema existente sem instalar vários outros programas?
O kernel do Linux é um arquivo binário geralmente nomeado
vmlinuz-x.x.x-x-name
noboot
diretório (que geralmente é uma pequena partição separada no início do disco rígido) em que x é um número de versão. "name" é apenas um nome escolhido para o kernel que pode ser definido em tempo de compilação; você pode usá-lo para identificar que tipo de máquina ou arquitetura o kernel é ou por qualquer outro motivo.Ele é carregado no tempo de inicialização por um gerenciador de inicialização, normalmente
GRUB
chamado pelo código de inicialização no MBR, chamado pela ROM do BIOS. Uma vez carregado, ele não é "mantido aberto" ou protegido especialmente. Então você pode substituir esse arquivo por outro kernel em funcionamento. Mas,GRUB
possui um recurso interessante que permite selecionar vários kernels para inicializar. Portanto, é bastante inteligente adicionar seu kernel adicional a essa lista, mas mantenha o kernel original conhecido em funcionamento, caso as coisas dêem errado.Acredito que quase todas as distribuições fazem um kernel "modular" onde os drivers de dispositivo estão em arquivos separados. Portanto, a maioria dos kernels precisa de um sistema de arquivos contendo drivers disponíveis no momento da inicialização e é para isso que serve um "initrd" (disco RAM inicial) ou "initramfs".
GRUB
carregará o kernel em um local na memória e o initrd em um local diferente, e saltará para o kernel informando onde está o initrd, iniciando o Linux.Os drivers também podem ser "incorporados" ao kernel e, portanto, são automaticamente carregados e disponibilizados quando o carregador de inicialização carrega a
vmlinuz
imagem. Os kernels destinados a trabalhar em diversos sistemas (como os da maioria das distribuições) geralmente minimizam o que é incorporado ao kernel porque o hardware disponível será verificado mais tarde no processo de inicialização e apenas os módulos que representam o hardware atual serão carregados.Existem ferramentas para modificar e criar initrds. O Debian tem boas ferramentas e imagino que outras distribuições também.
Portanto, se você baixar um kernel mais recente do kernel.org e compilá-lo para criar uma nova imagem binária do kernel, é necessário criar ou atualizar um initrd com drivers que funcionem com esse kernel. O antigo initrd não funcionará porque os drivers precisam corresponder à versão do kernel em execução.
O arquivo initrd é nomeado de
initrd.img-x.x.x.x-name
maneira semelhante ao kernel e pode ser substituído após a inicialização, assim como o kernel, e as práticas recomendadas indicam que você não exclui um initrd em funcionamento conhecido até saber que pode inicializar com êxito no seu novo kernel + initrd.Espero que isso proporcione algum contexto.
Se você está procurando por uma instalação "barebones" do Linux que tenha pouco ou nenhum programa adicional instalado, minha opção favorita sempre foi instalar a
netinst
imagem Debian . Praticamente você tem apenas as ferramentas mais básicas necessárias para executar um console de texto da linha de comando enano
como um editor de texto.fonte
Rootfs executáveis únicos
O sistema mínimo absoluto executa um único
/init
programa, como expliquei no Single Application Linux | SuperusuárioMínimo Linux Live
https://github.com/ivandavidov/minimal
Para um sistema interativo mais interessante, este é um pequeno script (principalmente educacional) que:
O ISO deixa você em um shell mínimo com o busybox.
Com o QEMU, você pode facilmente inicializar no sistema.
Eu o modifiquei para permitir a execução no diretório de origem do kernel: https://github.com/cirosantilli/runlinux
Uso:
e você será deixado dentro de uma janela QEMU com seu novo sistema mínimo. Impressionante.
Por ser pequena, é uma boa opção para ler a fonte e entender o que está acontecendo.
Testado no Ubuntu 16.04.
Buildroot
https://buildroot.org/
Grande conjunto de scripts Makefile que gerenciam:
Exemplo mínimo:
Ele ainda tem receitas para construir o X11 do zero: Como instalar o X11 no meu próprio sistema Linux Buildroot?
Coisas profissionais.
Alpine Linux
https://github.com/gliderlabs/docker-alpine
Distribuição incorporada com um gerenciador de pacotes que oferece binários pré-compilados em um site.
Veja também
fonte
Gostaria de sugerir a sugestão de Shadur de que você deve sujar as mãos da maneira do Linux desde o zero.
Além disso, algo semelhante, tente o Pocket Linux .
fonte
É possível instalar um kernel Linux sem as ferramentas usuais de espaço do usuário. Isso geralmente é feito em sistemas embarcados, como roteadores. Normalmente, o kernel é carregado a partir da memória ROM ou Flash e foi personalizado para o dispositivo em questão (geralmente com os drivers necessários compilados no kernel em vez de serem carregados como módulos).
Pelo menos um programa de espaço do usuário precisa existir, para se tornar o processo 'init' (não necessariamente chamado
init
, mas iniciado pelo kernel como processo 1 e o pai automático de qualquer processo órfão) - a menos que o kernel tenha sido modificado (em vez do que simplesmente personalizado) para não exigir isso.Certamente não é necessário ter um shell disponível para ter um dispositivo baseado em Linux, embora isso possa facilitar o desenvolvimento!
fonte
Muitas distribuições fornecem instalações "principais". Isso é o que você quer. Veja ubuntu-minimal, debian net-install, archlinux (o padrão é apenas o núcleo).
As outras respostas são úteis se você quiser aprender, mas esse pode não ser o caso = p
fonte