Leitor pergunta: Inicialização do Mac OS X - cadê os arquivos do init?

O Mac OS X, embora seja um UNIX, adota um sistema de configuração da inicialização bem diferente dos modelos clássicos BSD e SysV.

O leitor Tiago encaminhou a seguinte dúvida:

Augusto, você usa muito o terminal para fazer certas coisas. Você já conseguiu achar quais são os arquivos que definem o que é "levantado" no boot e qual arquivo contém as configurações de rede? Tentei usar a mesma fórmula do linux (/etc) mas não tive sucesso!! :(

A dúvida é comum, e eu também passei por ela na primeira vez que precisei fazer algo fora do padrão - no meu caso, fazer o sshd passar a operar em uma porta diferente da que ele usa por default, que é a 22.

Versões antigas do Mac OS X usavam o init padrão BSD (com o qual usuários do Slackware são bem familiarizados também), conduzido por scripts como o /etc/rc.boot.

Mas isso mudou, e as versões atuais do sistema usam o launchd como sucessor do initd (e do crond, atd, inetd e mais).

O launchd também é open source (licença Apache), mas seu modelo de configuração é radicalmente diferente dos inits do BSD e do SysV (o mais comum hoje em distribuições de Linux): a configuração do launchd, assim como a de vários outros subsistemas do Mac OS X, é feita via property lists (arquivos com a extensão plist).

Não é nada parecido com a definição na forma de scripts shell e seus arquivos de parâmetros comuns no Linux, mas a sintaxe também não é muito complicada, embora exija alguma adaptação de quem já domina o modelo tradicional e migra para o launchd.

No diretório /System/Library/LaunchDaemons você encontra as plists de vários dos serviços TCP comuns. São arquivos-texto, dê uma olhada em algum deles (como o ssh.plist) e você terá uma ideia melhor de como funciona.

Vale mencionar que o launchd é um modelo que busca a consistência - para fazer o servidor SSH passar a "ouvir" outra porta, por exemplo, o correto é mencionar no ssh.plist o nome do serviço correspondente à porta desejada (que consta no /etc/services), e não simplesmente informar o número da porta (veja um exemplo).

Mas o launchd faz bem mais do que substituir o init. Veja neste artigo do macgeekery como usá-lo para definir ações que reagem a alterações em um arquivo ou diretório, por exemplo.

Para saber mais, use man launchd e man launchctl

Comentar

Comentários arquivados

Artigos recentes: