Quais são os componentes mínimos para um sistema operacional Linux ser funcional e que eu posso usar como base para expandir e melhorar conforme aprendo o Linux e minha compreensão e necessidades aumentam?
Se você quer aprender Linux como conhecer o código-fonte, pode tentar Linux do zero
Se você está procurando aprender, o Gentoo é uma boa opção - a instalação mínima do Gentoo é um shell raiz e um gerenciador de pacotes, e você constrói o resto do seu sistema a partir daí. O Gentoo também fica muito próximo do upstream em pacotes, então você não terá muitos problemas se quiser baixar e construir alguns pacotes você mesmo (e de fato, você pode adicioná-los ao arquivo /etc/portage/package.provided depois de instalados e usá-los como dependências!)
Se você está procurando pelo menor sistema Linux possível, construa seu próprio kernel, removendo todos os drivers e recursos que você não planeja usar, e adicione um initramfs contendo uma construção minimizada de Busybox de forma semelhante. O resultado é um sistema Linux totalmente inicializável em um único executável (para o qual você pode apontar seu carregador de inicialização) e que pode acomodar menos de 10 MB sem nem mesmo tentar.
Rootfs executável único
O sistema mínimo absoluto executa um único /init
programa conforme expliquei em Single Application Linux | Super User
Minimal Linux Live
https://github.com/ivandavidov/minimal
Para um sistema interativo mais interessante, este é um pequeno script (principalmente educacional) que:
O ISO então deixa você em um Shell mínimo com busybox.
Com o QEMU, você pode inicializar facilmente no sistema.
Eu o modifiquei para permitir sua execução a partir do diretório de origem do kernel: https://github.com/cirosantilli/runlinux
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ê ficará dentro de uma janela QEMU com seu novo sistema mínimo. Impressionante.
Por ser pequeno, é uma boa opção para ler a fonte e entender o que está acontecendo.
Testado no Ubuntu 16.04.
Buildroot
Grande conjunto de scripts Makefile que gerenciam:
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.
Ele ainda tem receitas para construir o X11 do zero: Como instalar o X11 em meu próprio sistema Linux Buildroot?
Material testado em batalha profissional usado por algumas grandes empresas.
Alpine Linux
https://github.com/gliderlabs/docker-Alpine
Distribuição embutida com um gerenciador de pacotes que oferece binários pré-compilados de um site.
Consulte também
O Archlinux usa um base grupo de arquivos para uma instalação mínima.
Junto com um grupo base-devel , se for fazer algum desenvolvimento de sistema.
Se você realmente deseja apenas o mínimo do que é um sistema Linux, pode tentar distribuições para sistemas embarcados, como roteadores. Eles normalmente carregam apenas o mínimo absoluto de software e a falta comum de uma interface gráfica do usuário força você a se familiarizar com a linha de comando. Uma desvantagem é que muitas vezes esses sistemas quebram as convenções das distribuições regulares do Linux, por ex. eles instalam software em locais incomuns ou usam sistemas init simplificados.
Se quiser tentar, você pode tentar, por exemplo, openwrt em uma máquina virtual .
Como é que ninguém mencionou tomsrtbt ? (Linux em um único disquete de 1,44 ")
Você pode tentar o Linux do Slackware. A instalação baseada em menu permitirá que você instale um sistema mínimo. Você pode facilmente deixar de fora as páginas de manual, X11, Tcl, Emacs e isso é apenas a partir da instalação de nível superior. Você pode mergulhar na instalação e instalar apenas um mínimo de pacotes.
Depois disso, recompilaria o kernel especificamente para a máquina em que você instalou.
O Slackware ainda é padronizado para o gerenciador de inicialização Lilo, então você acaba sabendo um pouco mais do que gostaria sobre os setores de inicialização, que partição é marcada como inicializável, o que seu initrd contém, etc etc, do que para distros inicializadas pelo Grub.
Para mim, Damn Small Linux tem o nome de "a menor distro Linux possível"! No entanto, ouvi dizer que está meio descontinuado. Você também pode ver uma lista de distribuições semelhantes (chamadas "Mini Linux") nesta página wiki .
Se o espaço não for o seu objetivo, eu sugiro Gentoo ou Arch Linux , ambos instalam um sistema básico. Você escolhe o que usar e instala os pacotes conforme suas necessidades aumentam.
O que você precisa fazer é baixar o kernel mais recente de kernel.org, faça um make menuconfig
e apenas olhar as opções, e usar isso como um ponto de partida para pesquisa e investigação. Você aprenderá muito.
Você pode olhar em Puppy Linux . Pode não ser o menor, mas tem a reputação de ser pequeno.
No entanto, distrtos Linux que são feitos para serem pequenos geralmente tendem a permanecer pequenos. Para aprender linux, eu teria um debian ao vivo em algum lugar. .Eu obteria os fontes do kernel debian, fontes do bash e fontes do grub compilando e instalando. Em seguida, faça compilação cruzada e instale um editor, apt e gcc. Em seguida, gere uma lista de pacotes do debian live. Instale a fonte para cada pacote, compile e instale. Em seguida, adicione X e depois o Wm de sua escolha, então você terá a base para o que deseja fazer.
PS: apt-get source fornece a você o código-fonte de um pacote debian.