Executando um script na inicialização antes do X iniciar no Ubuntu 9.10

2

Eu tenho um script que eu quero executar na inicialização para alternar X-configs dependendo da localização, mas não consigo descobrir onde colocá-lo, a fim de executá-lo antes do X ser iniciado. Isso resulta em eu ter que reiniciar o X para que ele execute a configuração correta.

Atualmente, meu script está localizado em /etc/init.d/whereami , com links simbólicos em /etc/rc[2-5].d/S25whereami . Eu estava tentando descobrir quando o X é iniciado, caso o problema seja simplesmente o 25 , mas não consigo encontrar a resposta ...

Qualquer ajuda é apreciada.

    
por Epcylon 21.04.2010 / 21:58

2 respostas

6

O Ubuntu inicia o X-windows a partir do GDM (para sistemas que usam o padrão ubuntu-desktop ) ou do KDM (para sistemas que usam kubuntu-desktop ).

Para executar um script antes da inicialização do GDM / KDM, você poderia

  1. Escreva seu próprio script Upstart para ser executado antes do GDM; ou
  2. Modifique seu script GDM do sistema para executar um script externo personalizado (por exemplo, seu script /etc/init.d/whereami ) como uma de suas tarefas iniciais.

O Ubuntu utiliza runlevels no estilo Debian: runlevel 1 é de usuário único, modo de recuperação; runlevels 2-5 são todos iguais (GUI multi-user); e, por padrão, o sistema é inicializado no nível de execução 2 .

O Ubuntu 9.10 usa o Upstart, que fornece scripts de inicialização de serviços em / etc / init . Os scripts init mais tradicionais em /etc/init.d e /etc/rc.d ainda estão disponíveis para serviços que não foram portados para scripts init estilo Upstart. , mas o GDM tem um. (Nota O Ubuntu 9.10 fornece /etc/init.d/gdm , mas não cria nenhum /etc/rcX.d links simbólicos para ele.)

A inicialização do GDM é controlada por / etc / init / gdm . Essas linhas na parte superior do script especificam quando iniciar e parar o GDM. Observe que não há especificação runlevel para iniciar serviços somente do GDM que devem ser iniciados primeiro.

start on (filesystem
          and started hal
          and tty-device-added KERNEL=tty7
          and (graphics-device-added or stopped udevtrigger))
stop on runlevel [0156]

emits starting-dm

Veja man 5 init para documentação sobre os scripts do Upstart, e examine o seu arquivos / etc / init / *. conf do sistema para alguns exemplos. Veja também o início evento manpage:

Example
A service that wishes to be running whenever another service would be running, started before and stopped after it, might use:

start on starting apache
stop on stopped apache

A task that must be run before another task or service is started might use:

start on starting postgresql

Observe também que os scripts Upstart do GDM / KDM emitem um sinal iniciando-dm , que também pode ser útil.

Portanto, um script Upstart projetado para ser executado antes do GDM deve usar uma destas cláusulas início :

# run only when starting GDM
start on starting gdm

# run when starting GDM or KDM
start on (starting gdm 
          or starting kdm)

# run when starting any DM
# starting-dm is a custom event emitted by the GDM/KDM/etc scripts
start on starting-dm
    
por 22.04.2010 / 11:23
0

Normalmente, o X é iniciado no nível de execução 5 e, como você deseja que seu script inicie antes de X (na forma de xdm / kdm / gdm), você precisará que ele tenha um número menor que a entrada Sxxxdm. Então, no meu sistema aqui, o xdm é iniciado com S111xdm, então você precisaria de um link simbólico /etc/rc5.d/S10whereami .

    
por 21.04.2010 / 22:24