Como fazer uma distribuição Linux (parte 1)

Esse artigo é uma adaptação da documentação Komain, que visa apresentar ao leitor os passos necessários para construir uma distribuição Linux a partir dos códigos fontes disponíveis na rede. Esse será um artigo longo, já que meu livro tem 73 páginas e denso, pois muitos conceitos apresentados aqui são extremamente avançados para iniciantes.

[ Hits: 141.923 ]

Por: Fernando Henrique em 24/01/2005


Requisitos mínimos



Você vai precisar de um computador com um sistema Linux qualquer, qualquer distro atual serve, e nele você vai precisar de um compilador GCC, make, glibc-devel, binutils etc. Você vai precisar de 2.5GB de espaço em disco, bastante memória RAM e processador rápido também ajuda.

Preparando o sistema


Crie um diretório chamado "ROOT_KMI", nele vamos armazenar nosso monstrinho, exemplo:

# mkdir ROOT_KMI

No meu sistema, o "ROOT_KMI" está hospedado na partição /source, vamos simplificar isso definindo uma variável de ambiente chamada "ROOT_KMI" que vai conter o caminho completo do "/" da nossa distro, exemplo:

# export ROOT_KMI=/source/ROOT_KMI

Assim usaremos a variável $ROOT_KMI sempre que quisermos nos referir ao "/" da distro.

Você pode criar uma partição dedicada para a distro usando o fdisk, formatando com o mkfs.ext2, depois basta montar a partição em $ROOT_KMI.

Vamos precisar também um diretório temporário onde vão "morar" todos os programas temporários que vamos precisar gerar e que não vão fazer parte da distro final:

# mkdir $ROOT_KMI/temp

E vamos criar outro para hospedar os códigos fonte:

# mkdir $ROOT_KMI/fontes

Seres humanos tem o péssimo hábito de errar, então para evitar acidentes, recomendo que seja criado um usuário ordinário para que as compilações e instalações não interfiram na sua distro principal:

# useradd -s /bin/bash -m -k /dev/null komain

Assim será criado um usuário chamado "komain", os parâmetros usados significam:
  • -s : o tipo de shell, no caso o /bin/bash
  • -m : cria um home para o usuário komain, /home/komain
  • -k : /dev/null" evita que os arquivos do /etc/skel sejam copiados para a nova conta.

Se você não definir uma senha para o usuário komain, você não poderá logar, certo? Errado! Dá pra acessar o usuário sem senha, mas defina uma assim mesmo:

# passwd komain

Agora conceda ao usuário komain acesso total ao $ROOT_KMI/temp e $ROOT_KMI/fontes:

# chown komain $ROOT_KMI/temp $ROOT_KMI/fontes

Vamos definir um ambiente mais amigável para nosso usuário ordinário? Claro que vamos, digite isso aqui:

# cat > ~/.bash_profile << "EOF"
exec env -i HOME=$HOME TERM=$TERM PS1='[\u->\h] \W $ ' /bin/bash
EOF


Quando você se loga em um console, um shell do tipo login lê as variáveis do seu sistema no /etc/profile, no comando "exec env -i" dizemos ao shell ignorar TODAS as variáveis que não sejam $HOME, $TERM e $PS1.

Novas instâncias shell que não sejam do tipo login (acessadas por "su - komain", ou direto no console) não lêem o /etc/profile ou o /.bash_profile, mas apenas o /.bashrc. Para evitar problemas com variáveis, crie agora:

# cat > ~/.bashrc << "EOF"
set +h
umask 022
ROOT_KMI=/source/ROOT_KMI
LC_ALL=POSIX
PATH=/temp/bin:/bin:/usr/bin
export ROOT_KMI LC_ALL PATH
EOF


Onde o "set +h" desliga a função hash do bash, o bash armazena na memória o caminho completo dos executáveis ao invés de procurar pelo pelo executável a cada requisição. Devido a natureza do nosso trabalho, vamos usar sempre as ferramentas novas que vamos construir, tornando o processo de compilação mais dinâmico.

"umask 022", garante que os novos arquivos criados tenham sempre as permissões corretas, só o dono escreve mas todo o resto lê e executa.

"ROOT_KMI=/source/ROOT_KMI", caminho para o root da distro.

"LC_ALL=POSIX" define as variáveis de localização, língua, moeda, fuso horário... isso pode nos causar problemas nesse momento, deixemos no padrão.

"PATH=/temp/bin:/bin:/usr/bin", define o caminho dos diretórios onde o bash deve procurar por binários.

Página anterior     Próxima página

Páginas do artigo
   1. Sobre o Komain
   2. Requisitos mínimos
   3. Softwares que devem ser baixados
   4. Binutils
   5. GCC
   6. Linux Header
   7. Glibc
   8. Por hoje é só
Outros artigos deste autor

Guia do Desktop Redondo - Fedora 7

Como fazer uma distribuição Linux (parte 2)

Leitura recomendada

Dando uma "enfeitada" no Ubuntu com o gDesklets

Analogia: X-Window como um sistema operacional

ASTNAGIOS 2.0 + FAN - Solução completa para monitoramento

O que é GNU Social? Porquê usar?

Personalizando um live CD e bootando-o diretamente do Grub

  
Comentários
[1] Comentário enviado por Barney em 30/01/2005 - 16:57h

Cara excelente iniciativa!!

Estou esperando já as outras partes do tutorial, pois acho muito interessante conhecer como nasce um distro.

Além de que está muito bem explicado.
Aguardo a continuação.
Valeu.

[2] Comentário enviado por tiagomadeira em 19/03/2005 - 11:05h

Muito bom o artigo!

[3] Comentário enviado por diegospeed em 04/12/2005 - 03:50h

Ótimo artigo........

Vou estudar bastante quem sabe não faço a minha?

Apesar de eu jah estar em 70% de um remaster que estou fazendo a partir do Knoppix...

Abraçoooooo

[4] Comentário enviado por Deoclecio Neto em 10/06/2006 - 00:31h

eu não entendi muito bem, mas gostei da ideia.

[5] Comentário enviado por dan_niel_am em 04/11/2006 - 15:13h

Muito bom, vem bem explicado só os links que não estão funcionando para baixar esses pacotes

[6] Comentário enviado por Rafael-rs em 28/01/2007 - 17:52h

e qual sera o nome da criatura? heheh ... muito bom,to esperando o resto

[7] Comentário enviado por Everson Pires em 09/11/2007 - 09:28h

Fantastico.

Isso ta me custando algumas noites sem dormir, mais no futuro vai me render a minha distro perfeita.

Cara a segunda parte, quando você envia?

valew!

[8] Comentário enviado por xsl4v3 em 09/11/2007 - 15:11h

Puxa vida, é legal saber que ainda têm interesse nesse artigo... Na real desisti de manter esse projeto por falta de tempo, problemas com servidores, uma tentativa fracassada de usar uclibc de base, outra de usar kernel freebsd, e claro a boa oferta de distribuições legais disponíveis.

O E-Book que deu origem a esse artigo pode ser encontrado em :

http://sourceforge.net/project/showfiles.php?group_id=134279&package_id=147857

Eu recomendo também o LFS , Gentoo e GoboLinux :)

Eu realmente penso em retomar, mas não faço mais promessas :)

[9] Comentário enviado por fjbvn em 12/12/2007 - 10:20h

Pena amigo,

Bom artigo, baixei o e-book, vou dar uma lida...

Mais de qualquer forma, parabens pela iniciativa!

[10] Comentário enviado por filipelinux em 13/12/2007 - 18:43h

?comentario=

Quanto aos links estou seguindo o manual, porém o Código Livre não está com os devidos pacotes e o Linorg no momento fora do ar.

[11] Comentário enviado por acollucci em 03/04/2008 - 10:28h

opa, muito bom o artigo!! Gostaria de ver uma continuação!!!

[12] Comentário enviado por w4r110ck em 06/07/2010 - 07:20h

muito bom, vou acompanhar o artigo.... abs

[13] Comentário enviado por removido em 06/01/2012 - 15:06h

Excelente jeito de se fazer uma distro, mas eu acessei o SUSE Studio e fiz um baseado em KDE 4, mas no site, o linux que a pessoa cria, segue o padrão do SuSe, mesmo assim quero ver como saiu meu KLinuz 1!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts