Estou procurando uma boa documentação de descrição geral descrevendo a pilha de daemons e serviços envolvidos em uma sessão moderna do Linux. Apesar de ter lido várias documentações sobre dbus
, e systemd
, ainda não entendi bem.
Em particular, estou procurando respostas para essas perguntas (não responda às perguntas, elas devem apenas esclarecer que tipo de documentação estou procurando):
Após o login, qual processo é a raiz da sessão do usuário?
Quais processos devem ser iniciados e por quê? Estou procurando uma resposta independente da área de trabalho, independentemente de o Gnome, KDE, FVWM ou um simples shell ser iniciado.
Qual o papel de todos esses daemons? Qual deles correria sozinho, que depende dos outros? Qual deve ser iniciado por quem, por que e por quanto tempo? E quem deve manter esse zoológico?
Estou perguntando, porque eu descobri que tenho um zoológico inteiro de daemons em execução logo após a inicialização: systemd-journald
, systemd-udevd
, dbus-daemon
,
systemd-logind
. Mas não o suficiente: além destes, Correr PDF-viewer ultra-leve zathura
ainda preenche minha sessão com dbus-launch
,
dbus-daemon
, at-spi2-registryd
, e at-spi-bus-launcher
, o último lançamento ainda outro dbus-daemon
. Nenhum deles já esteve lá antes, nenhum foi convidado, mas eles ficarão em casa, me dando uma sensação assustadora, até que eu saia. Tenho certeza de que estou perdendo alguma coisa aqui ...
Outro exemplo: após o login, tenho uma systemd
corrida com o UID dos meus usuários, mas não tenho ideia do que deve fazer (desde a versão 206, acho que não devo usá-la como gerenciador de sessões, certo?). Ele tem um processo filho (sd-pam)
, sobre o qual não consegui encontrar documentação.
O que eles fazem? Qual é a ideia por trás dessa configuração?
Para esclarecer minha perspectiva: “nos velhos tempos”, bastava saber que
login
lançaria meu shell de login ( bash
executando ~/.profile
) e, a partir desse ponto, eu poderia continuar construindo uma sessão, dependendo das circunstâncias, talvez iniciando screen
ou startx
.
fonte
Respostas:
Estou tão fascinado com a sua pergunta que a respondi no linuxintro . Aqui está a resposta personalizada para sua pergunta:
Quando um PC típico com Linux como Fedora, SUSE ou Ubuntu for inicializado, as etapas serão as seguintes:
O init executa, dependendo da sua distribuição, versão e configuração
O sentido de todos esses programas é iniciar serviços como
10) o processo de logon, tratado pelo systemd, aguardará o logon em um terminal virtual; normalmente é possível acessar um pressionando CTRL_ALT_F1
11) normalmente e por padrão, o processo init agora iniciará o gerenciador de exibição, por exemplo, kdm (gerenciador de exibição do KDE) ou xdm
12) o gerenciador de exibição iniciará o sistema gráfico. Praticamente não há sistema gráfico, exceto o Xorg (o hildon é para dispositivos embarcados).
13) o gerente de exibição aconselhará o servidor Xorg a exibir uma tela de login
Agora a inicialização está concluída e o computador aguarda o login do usuário.
14) no log do usuário, o gerenciador de exibição iniciará um ambiente de área de trabalho como o KDE, GNOME ou XFCE4. O processo raiz da sessão do KDE de um usuário será chamado startkde, o processo raiz do GNOME será chamado gnome-session, o processo raiz do XFCE4 será chamado xfce4-session
15) Normalmente, o KDE inicia todos os arquivos executáveis em ~ / .kde / Autostart e os arquivos .desktop em / etc / xdg / autostart (consulte agendando tarefas ).
16) Quando o usuário efetuar login graficamente e clicar em um ícone para abrir um console, normalmente o bash será executado. O Bash primeiro executará .bashrc e, em seguida,
17) Quando o usuário abre um shell de logon, isso significa que ele precisa fazer login via senha ou chave autorizada. Ele pode fazer isso no console CTRL_ALT_F1 ou ssh'ing em um computador, por exemplo, localhost. Em seguida, os scripts .sh de /etc/profile.d e .bashrc serão executados.
fonte
A resposta é 42. Thorsten Staerk já explicou o principal problema nos comentários.
Para ajudá-lo a ter uma visão geral, você precisa saber que os softwares Linux e Open Source são criados e mantidos por milhões de voluntários e empresas. Portanto, não é fácil acompanhar o crescimento.
Por outro lado, há muita documentação: as páginas de manual de cada software, uma boa explicação sobre o que é o D-Bus , as listas de discussão dos desenvolvedores, o Google e assim por diante. Portanto, reserve alguns anos e leia todos os documentos dos pacotes que lhe interessam. Se você precisar mais rapidamente, faça algumas boas perguntas no Unix e Linux .
Boa sorte.
fonte
Antes de fornecer minha versão da resposta, deixe-me começar com algumas definições
Linux == 'Um Kernel do Sistema Operacional "Sistema Linux ==" Algum tipo de sistema criado em torno do Kernel Linux "Sessão em um Sistema Linux ==" Algum conjunto de programas de usuário relacionados em execução em um sistema Linux "
Quanto mais você se afasta do kernel, menos provável é que dois "sistemas" tenham algo em comum. O que significa que não há realmente nenhuma definição sensata de uma "Sessão Linux Moderna"
Francamente, a expectativa de que exista algum tipo de documentação abrangente do sistema que ofereça todos os componentes é uma expectativa que não será atendida na maioria das partes do mundo de código aberto. Os desenvolvedores de código aberto estão escrevendo programas para resolver (ou resolver novamente!) Os problemas específicos com os quais se preocupam - para que eles apenas documentem essa parte - se isso! :-)
Você pode ter mais sorte com os manuais disponíveis nas distribuições comerciais de linux, porém, dada a natureza conservadora da maioria, você pode argumentar que os lançamentos não são "modernos"!
O conselho principal que eu daria é que os sistemas unix / linux de um senso muito geral são heiráquicos. Eu costumava dizer às pessoas que gostava de sistemas nix porque eu poderia começar com init e, a partir daí, entender tudo o que estava acontecendo em um sistema. Systemd e amigos mudaram um pouco isso, mas o princípio básico é o mesmo - comece de cima para baixo e trabalhe para baixo - os "programas que compõem uma sessão" geralmente são aqueles que começaram a partir do ponto em que você entra na herdeira. Portanto, se você usar o ssh, provavelmente obterá o shell padrão, pois é assim que o ssh funciona. Se você fizer login através de uma interface gráfica, obterá o que for iniciado pelo seu gerenciador de login, pois é assim que ele funciona.
Muitas estruturas de desktop tornam isso um pouco mais difícil, executando vários daemons de serviço no nível do usuário ou do sistema - e, às vezes, eles são iniciados sob demanda quando o primeiro programa que precisa deles - olha as opções de linha de comando do programas que você está executando, há opções bastante prováveis para interromper esse comportamento e executar o aplicativo no modo "vazio".
Infelizmente, isso significa que "ler a documentação de programas individuais" é a única maneira de entender tudo, e que não há um "conjunto mínimo de daemons" para uma sessão - é apenas o modo como uma determinada distribuição funciona para uma determinada método de login / acesso e isso é específico da distribuição, da área de trabalho e do método de login.
fonte