Se vocês ainda não repararam, os sistemas operacionais iniciam seu carregamento sempre pelo núcleo de sistema, ou kernel, o qual, por sua vez, cuida da tarefa de inicializar e administrar os dispositivos que serão montados e em que ordem.
Para isso ele utiliza módulos (para sistemas operacionais baseados em UNIX -
Linux, BSDs, MINIX, etc.) ou drivers (para Windows e DOS) a fim de que seja possível qualquer diálogo que o sistema operacional precise ter com o hardware instalado no computador do usuário, ao mesmo tempo informando pela tela do monitor todos os passos do processo.
É justamente nesse momento que entram os scripts de inicialização, arquivos-texto contendo código executável e que reúnem a "receita de bolo" para que o sistema operacional prepare toda a interface de usuário desde o momento em que o mesmo pressiona o botão liga/desliga (POWER) do gabinete, fora o software da BIOS e o gerenciador de inicialização (LILO, GRUB, syslinux, yaboot - comum em PowerPCs etc).
No mesmo processo, os daemons (processos de sistema) também são inicializados, logo após os dispositivos de hardware e o carregamento dos módulos necessários.
Assim, entram em cena dois sistemas de inicialização muito comuns em distribuições de Linux:
BSD-like e
System V, os quais serão abordados a seguir em maiores detalhes.
Histórico: BSD
O sistema BSD-like veio juntamente com o antigo BSD 4.x, que, por sua vez, deu origem aos sistemas operacionais modernos FreeBSD, OpenBSD, NetBSD e seus descendentes. Tal sistema de inicialização se caracteriza por apresentar sempre um arquivo central de configuração chamado rc.conf (/etc/rc.conf), o qual permite configurar facilmente todos os parâmetros importantes de sistema tais como os processos que se iniciam com o sistema, os módulos a serem carregados, inicialização das interfaces de rede, fuso horário, mapa de teclado, idioma, entre outros.
Além disso, faz-se presente um diretório chamado rc.d (/etc/rc.d/), que agrupa todos os daemons. Os runlevels (níveis de execução) e o firewall (se presente) são representados apenas como scripts e se localizam diretamente em /etc, o diretório dos arquivos de configuração.
Note que os arquivos anteriormente citados, sem exceção, sempre começam por "rc.". Alguns exemplos de distribuições Linux que utilizam esse método são o CRUX, o Archlinux (derivado diretamente deste último, mas uma distro independente) e o Gentoo.
Histórico: System V
Já o System V (leia-se: "System Cinco"), que remonta desde o surgimento de um sistema operacional Unix-like de mesmo nome, emprega basicamente o conceito de runlevels. Um diretório chamado init.d (/etc/init.d) concentra os daemons, da mesma forma que o diretório rc.d do método BSD-like, porém, a diferença é que cada um dos runlevels tem o seu próprio diretório, ou seja, são agrupamentos de scripts que ditam as regras sobre o que será realizado por nível de execução, ao contrário do projeto de scripts simples do outro sistema.
Com certeza, a grande maioria das distros Linux implementa esse método. São elas: Debian, Red Hat, Slackware e todos os seus derivados, além de uma distribuição americana chamada Lunar Linux.
Exceção: GoboLinux
Ah, ainda existe um terceiro sistema de inicialização, que foi criado pela equipe do
GoboLinux: é o BootScripts, que,
segundo o site oficial do projeto, é o mais simples que existe, pois baseia-se apenas em duas partes: Init (inicializa um componente) e Done (conclui, na mesma hora, aquele componente já inicializado).
Comparações: pontos comuns e diferenças
Assim, posso dizer que ambos os sistemas de inicialização (BSD-like e System V) cumprem muito bem o seu papel, pois permitem que o Linux dos usuários que de fato o utilizam possa ser carregado, mas eu digo que, do meu ponto de vista, o método BSD-like é o meu preferido, pois, devido a sua simplicidade estrutural, torna-se muito mais fácil mantê-los, especialmente quando se for criar uma distro Linux nova.
Contudo, o System V, mesmo que seja mais complexo por conta dos muitos diretórios que possui, é o que se mostra mais flexível, pois permite maior diversidade de scripts por runlevel, só que uma alteração frequentemente exige esforço adicional bem maior.
Referências
MUHAMMAD, Hisham; DETSCH, André.
The Unix tree rethought: an introduction to Gobolinux. O artigo que apresentou o Gobolinux ao mundo.