Executando verificação de segurança...
25

Pitch: estou criando uma distro linux minimalista

Boa noite.

Venho aqui lhes apresentar o lin0 (linux zero, ou Lino), uma distro Linux extremamente minimalista, pensada para quem quer um sistema minimo, para poder construir o restante do zero.

O lin0 entrega para voce:

  • musl libc
  • tiny C compiler
  • mksh
  • toybox
  • script shell para o init

A partir disso voce deve ser capaz de compilar e instalar o que precisar.

Confira as instrucoes de instalacao no site do projeto:

homepage

Toda a infraestrutura eh um exercicio de minimalismo, se quiserem saber mais me perguntem, pretendo fazer um post com os detalhes no futuro.

TODOs:

Estou criando uma mailing list para receber contribuicoes, pretendo terminar essa semana.
Tambem pretendo desenvolver um gerenciador de pacotes em shell script.

Entao convido os interessados a testarem, qualquer bug ou sugestao pode ser comentado por aqui. Obrigado!


UPDATE 2024-09-22:

  • Imagem docker criada para arm64 -> docker pull bleemayer/lin0, para amd64 essa semana termino.
  • Mailing list pronta (talvez tenha bugs ainda)
Carregando publicação patrocinada...
4

Projeto maneiríssimo, parabéns! Sugestões:

Se possível, hospedar uma imagem no docker hub ajuda a experimentar o projeto rapidamente.

Acredito que publicar no github atrai mais o pessoal.

2

Obrigado pelas sugestoes!

Vou providenciar a imagem docker, parece bem util mesmo.

Sobre o github tenho duvidas, eu curto hospedar as coisas eu mesmo. Talvez eu crie um mirror repo la, so pra dar mais visibilidade mesmo.

1
1
2

E ai!

Acho que os estudos podem ser divididos em 4:

  • toolchain
  • processo de carregamento linux
  • outras distros
  • unix

Agora em mais detalhes: toolchain é o conjunto de bibliotecas e compiladores necessarios para compilar o restante do sistema, eu tinha usado LFS um tempo atras, ja li inteiro inumeras vezes; tambem estudei os projetos buildroot, busybox, toybox para ter uma ideia de como se constroi uma toolchain. Recomendo comecar pelo LFS, ele ensina muito bem.

O processo de carregamento linux eu estudei para algumas arquiteturas, amd64 e arm64, o segundo é mais chatinho pois nao tem um padrao, ai estudei com o hardware que eu tenho em casa. Ai precisa estudar as etapas de carregamento, device trees e o init.

Outras distros eu li codigo fonte delas, o build e algumas imagens.

Unix precisa estudar alguns padroes e as ferramentas mais usadas. Tambem é legal saber como funciona o filesystem padrao, tipo os pontos /sys, /proc etc.

O LFS fala um pouco sobre isso, mas o bom mesmo é ler livros de OS dev, por exemplo o livro do minix, do Tanembaum, o livro de C do K&R tambem fala bastante sobre sistemas. E por ai vai.

Espero que tenha ajudado.

Abracos

2

Nossa, muito obrigado!

Rapaz, gosto muito desse universo, vou dar um jeitinho e separar no mínimo um dia na semana para começar a pesquisar as suas recomendações e fazer um conograma de estudos.

Você tem algum canal no youtube, algum lugar onde posso lhe acompanhar mais de perto?

Um abraço!

1

Fico feliz em ajudar.

Nao tenho youtube, a unica maneira que estou divulgando eh pelo meu blog, aqui e um pouco no meu github, porem estou evitando plataformas comerciais. No meu blog eu publico algumas coisas sobre o desenvolvimento, vou tentar fazer isso com maior frequencia e detalhes.

Fique a vontade para me mandar emails, abrir issues no github, ou perguntar aqui e no meu blog.


Referencias

  1. meu blog
  2. github
  3. email
1

Tem uma distro linux que me deixou bastante impactado ao usar, algo que impressiona quem está acostumado com as distros linux mais populares, mesmo que Debian, que parece ser a mais leve, ou talvez sejamelhor, menos pesada.
Esta distro que falo é a alpinelinux, a mais leve que já experimentei.

1

Ja usei o Alpine Linux e gostei muito tambem, hoje uso Arch pois tem absolutamente tudo que preciso de forma facil, mas o alpine ainda me chama a atencao de vez em quando.

O lin0 eh ainda menor que o alpine: no site diz que uma instalacao tipica tem 130Mb, ja o lin0 tem 22Mb sem o kernel, provavelmente vai chegar aos 40Mb, e ainda quero diminuir.

Porem as duas distros sao bem diferentes em funcionalidade, publico alvo e tecnologias utilizadas.

1

Projeto top, parabéns! Essa distro é baseada em qual?

Já auvi falar do gentoo, que tem esse propósito de você construir sua distro totalmente personalizada, compilando tudo.

2

Muito obrigado!

Eu me baseei na LFS (Linux From Scratch), que eh basicamente uma distro generica, tudo compilado. Mas simplifiquei muitas coisas, meio que indo pra mesma direcao da Alpine Linux, outra distro que adoro. Provavelmente fiz alguns erros que vou descobrir mais pra frente.

Algumas diferencas das demais distros, alem das indicadas acima:

  • Nao usa initrd
  • a pasta root fica em /home/root, como os demais usuarios
  • nao uso a pasta /usr, tudo eh direto na /
  • usa o /etc/passwd ao inves de /etc/shadow
  • nao necessita de bootloaders nos sistemas com EFI

A ideia eh utilizar melhor as ferramentas ja existentes nos sistemas para torna-lo melhor, por ex. uma das coisas que quero fazer eh utilizar o /etc/issue e o /etc/login.defs para uma melhor experiencia de login. E por ai vai.

Vou mante-los informados.

1

massa de mais, também estou fazendo a minha baseado no Archlinux, mais focado para empresa, uma tentativa de ser um windows sabe, com uma versão endpoint e outra pra server, e realizar um sistema para autenticação e políticas centralizada(um AD em outras palavras), comecei agora então tem MUIIIITOOOO pra trabalhar, mas vou acompanhar o seu pra ter algumas ideias 😅