É possível instalar o kernel Linux sozinho?

39

Só estou curioso para saber se é possível instalar o kernel do Linux sozinho ou se você precisa usar um dos sabores. Se fosse possível, como você faria isso? Eu não preciso de um tutorial detalhado. Eu só quero saber como isso seria feito conceitualmente. Eu não sou bom com coisas de baixo nível, e quero saber como você obtém um SO no computador. Eu imagino que tenha algo a ver com o MBR.

Ah, e eu notei que muitas das respostas sugerem uma certa distribuição de um mínimo de Linux. Eu provavelmente deveria ter dito que não estou querendo instalar um Linux mínimo ou básico. Esta questão é puramente teórica. Ainda assim, eu realmente aprecio todas as respostas, e vou me referir a elas imediatamente, se eu quiser instalar um Linux verdadeiramente personalizado.

    
por cesar 21.07.2011 / 12:20

7 respostas

46

Você pode tecnicamente instalar apenas um gerenciador de inicialização e o kernel sozinho, mas assim que o kernel inicializar, ele irá reclamar sobre não ser capaz de iniciar o "init", então ele ficará lá e você não poderá fazer nada com isso.

BTW, faz parte do bootloader que está no MBR. O kernel fica em algum lugar na área regular de um disco. O bootloader é configurado para saber onde está, então ele pode carregar o kernel e executá-lo.

    
por 21.07.2011 / 13:41
17

Eu não acho que você entenda exatamente o que você está perguntando, mas você pode querer dar uma olhada no Linux From Scratch projeto.

    
por 21.07.2011 / 12:28
10

Se você está perguntando se você pode simplesmente instalar ou atualizar um kernel "sobre" um sistema existente sem instalar um monte de outros programas?

O kernel do Linux é um arquivo binário geralmente chamado de vmlinuz-x.x.x-x-name no diretório boot (que normalmente é uma pequena partição separada no início do disco rígido) onde os x's são um número de versão. "name" é apenas um nome escolhido para o kernel que pode ser configurado 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 boottime por um gerenciador de inicialização, normalmente GRUB , que é invocado pelo código de inicialização no MBR, que é invocado pela ROM do BIOS. Uma vez carregado, não é "aberto" ou protegido especialmente. Então você pode substituir esse arquivo por outro kernel funcional. Mas, GRUB tem um recurso interessante que permite selecionar vários kernels para inicializar. Portanto, é muito inteligente adicionar seu kernel adicional a essa lista, mas manter o kernel de trabalho original conhecido apenas no caso de as coisas darem errado.

Quase todas as distribuições que acredito 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 um "initrd" (disco de RAM inicial) ou "initramfs" serve. GRUB carregará o kernel em um local na memória, e o initrd em um local diferente, e irá para o kernel informando onde o initrd está, iniciando o Linux.

Os drivers também podem ser "incorporados" ao kernel e, portanto, são carregados e disponibilizados automaticamente quando o carregador de inicialização carrega a imagem vmlinuz . Kernels que são feitos para trabalhar em diversos sistemas (como os da maioria das distribuições) geralmente minimizam o que é embutido no kernel, porque o hardware disponível será escaneado mais tarde no processo de boot 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.

Então, se você baixar um kernel mais recente do kernel.org e compilá-lo para criar uma nova imagem binária do kernel, você precisa fazer ou atualizar um initrd com drivers que funcionam com esse kernel. O antigo initrd não funciona porque os drivers têm que combinar com a versão do kernel que está rodando.

O arquivo initrd é denominado initrd.img-x.x.x.x-name similarmente ao kernel, e pode ser substituído após a inicialização, assim como o kernel, e a prática recomendada indicaria que você não excluiria um initrd de trabalho conhecido até saber que pode inicializar em seu novo kernel + initrd com sucesso.

Espero que forneça algum contexto.

Se você estiver procurando por uma instalação Linux "barebones" que tenha pouco ou nenhum programa adicional instalado, minha opção favorita sempre foi instalar a imagem Debian netinst . Praticamente você tem apenas as ferramentas mais básicas necessárias para executar um console de texto de linha de comando e nano como editor de texto.

    
por 21.07.2011 / 18:10
3

Gostaria de secundar Sugestão do Shadur você deve sujar as mãos do jeito do Linux From Scratch.
Além disso, algo semelhante, tente Pocket Linux .

The Pocket Linux Guide demonstrates how to build a small console-based GNU/Linux system using only source code and a couple of diskettes. It is intended for Linux users who would like to gain a deeper understanding about how their system works beneath the shroud of distribution specific features and tools.

    
por 21.07.2011 / 15:03
3

É possível instalar um kernel Linux sem as ferramentas usuais de espaço do usuário. Isso é comumente 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 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 quaisquer processos órfãos) - a menos que o O kernel foi modificado (em vez de simplesmente customizado) para não exigir isso.

Certamente não é necessário ter um shell disponível para ter um dispositivo baseado em Linux, embora possa tornar o desenvolvimento muito mais fácil!

    
por 05.05.2015 / 17:25
3

Raiz executável único

O sistema mínimo absoluto executa um único programa /init , como expliquei em Single Application Linux | Superusuário

MinimalLinuxLive

link

Para um sistema interativo mais interessante, este é um script pequeno (principalmente educacional) que:

  • baixa a fonte do kernel e do busybox
  • compila-os
  • gera um ISO inicializável de 8Mb com eles

O ISO deixa você em um shell mínimo com o busybox.

Com o QEMU, você pode inicializar facilmente no sistema.

Eu o modifiquei para permitir a sua execução a partir do diretório de origem do kernel: link

Uso:

git clone https://github.com/ivandavidov/minimal
cd minimal/src
./build_minimal_linux_live.sh
# Wait.
# Install QEMU.
# minimal_linux_live.iso was generated
./qemu64.sh

e você será deixado dentro de uma janela do QEMU com seu novo sistema mínimo. Impressionante.

Como é pequeno, essa é uma boa opção para ler a fonte e entender o que está acontecendo.

Testado no Ubuntu 16.04.

Buildroot

link

Grande conjunto de scripts Makefile que gerencia:

  • Toolchain de compilação cruzada do GCC
  • compilação do kernel
  • compilação de carregador de inicialização
  • geração de rootfs
  • tem toneladas de receitas de download / construção de pacotes na árvore de fontes, incluindo coisas complexas como o GTK. Existe um sistema de dependências.

Exemplo mínimo:

git clone git://git.buildroot.net/buildroot
cd buildroot
git checkout 2016.05
make qemu_x86_defconfig
# Can't use -jN, use 'BR2_JLEVEL=2' instead.
BR2_JLEVEL=2 make
# Wait.
# cat board/qemu/x86_64/readme.txt
qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append root=/dev/vda -net nic,model=virtio -net user
# You are now in a shell with BusyBox utilities.

Até tem receitas para construir o X11 do zero: Como instalar o X11 no meu próprio sistema Linux Buildroot?

Material profissional.

Alpine Linux

link

Distribuição incorporada com um gerenciador de pacotes que oferece binários pré-compilados de um site.

Veja também

por 05.05.2015 / 16:03
2

Muitas distros fornecem instalações "básicas". Isso é o que você quer. Veja o ubuntu-minimal, o debian net-install, o archlinux (o padrão é apenas o core).

As outras respostas são úteis se você quiser aprender, mas pode não ser o caso = p

    
por 21.07.2011 / 15:47