Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > pt.comp.so.linux > #2853

Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico?

From Patricia Ferreira <pferreira@example.com>
Newsgroups pt.comp.so.linux
Subject Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico?
Date 2020-07-03 17:04 -0300
Organization Aioe.org NNTP Server
Message-ID <86imf41i2a.fsf@example.com> (permalink)
References (5 earlier) <rdm5gg$1gvt$1@gioia.aioe.org> <rdmliq$jss$1@gioia.aioe.org> <rdmmtc$1673$1@gioia.aioe.org> <861rltarga.fsf@example.com> <rdng47$15p5$1@gioia.aioe.org>

Show all headers | View raw


Ninguém <usenet@rasparta.org> writes:

> On 03/07/20 10:16, Patricia Ferreira wrote:
>> Senhor, desculpe-me a ousadia de lhe dizer que parece a mim que você não
>> compreende exatamente o que faz o systemd-nspawn.  É uma ousadia
>> tremenda porque eu mesma nunca o executei.:-)
>
> Não faz mal nenhum. Eu nunca comi jaca, mas, se me oferecer, sei como comer.

LOL!  Bem colocado.

>> Não há como iniciar dois kernels num mesmo sistema UNIX, então não há
>> que se falar em ``falta[r] um kernel''.  O que o systemd-nspawn pode
>> fazer é rodar um processo com PID 1 dentro de um novo namespace.
>
> Sim é isso.
> Quando eu disse que não era "arrancável" queria dizer que não dá para
> inciar o sistema no "bare metal" por falta do kernel e, eventualmente,
> do bootloader (penso que o pessoal entendeu).

Agora entendo.

> É "arrancável" com o systemd-nspawn que não é um "arranque"
> verdadeiro, é apenas a inicialização dos serviços do sistema num
> ambiente próprio (a partir do tal pid 1).

Isso é um arranque verdadeiro. :-) O que o init faz é essencialmente
executar outros programas.  Não existe nada de especial no init, exceto
ser o único a possuir o PID 1 --- dentro de seu namespace.  (Essa
qualificação final relativa a namespaces hoje se faz necessária devido à
introdução de namespaces relativos à árvore de processos.)

>> Talvez fosse interessante você compreender exatamente o que é um
>> namespace.  Qual é a resposta para a pergunta --- o que é um namespace?
>
> Queres elaborar? Podes partir do princípio que entendo o namespace
> como a "árvore" do DNS, por exemplo, mas, de facto, nunca precisei de
> verbalizar o que entendo pelo conceito.

Bom exemplo.  DNS é por si só um namespace.  Um namespace, como o nome
sugere, é um conjunto de nomes relativos a objetos, sendo que esses
nomes identificam os objetos a que eles se referem.

(*) O sistema de arquivos implementa um namespace

Um sistema de arquivos, por exemplo, implementa um namespace.  O poema
de Camões, armazenado no sistema de arquivos, é identificado pelo nome

  /poemas/cam.txt

O nome 

  /poemas

identifica a diretoria ``poemas'', que se localiza na diretoria raiz do
sistema de arquivos.  

Quando você pede ao kernel pra aplicar um chroot a um determinado
processo P numa determinada diretoria como

  /jaula

o kernel faz com que P passe a enxergar a diretoria raiz / como sendo a
diretoria /jaula.  Isso efetivamente impede P de acessar qualquer
elemento do sistema de arquivos que esteja fora de /jaula.  Por exemplo,
P não consegue acessar /etc/passwd porque, para P, o arquivo /etc/passwd
é na verdade /jaula/etc/passwd, uma vez que ``/'' é na verdade
``/jaula''.

(*) Uma árvore de processos UNIX implementa um namespace

Note que ``processo'' é distinto de ``programa''.  Um programa é uma
sequência de instruções de máquina.  Um processo é uma instância desse
programa em memória.  Um processo possui um PID.  Um programa não.

Cada processo tem um PID.  Logo, cada PID identifica um processo.  Um
sistema sempre UNIX usa um processo de PID 1.  Só um processo pode ter o
PID 1.  Se por ventura você desejar rodar dois processos com PID 1, você
vai precisar de dois namespaces para processos.

No kernel Linux, só existe uma forma de criar processos: pedindo ao
sistema para duplicar o processo em execução, o que é feito pela chamada
do sistema de nome clone().  Ao invocar clone(), você tem a chance de
pedir por várias coisas.  Por exemplo, você pode pedir por

  CLONE_NEWPID

e então um novo ``PID namespace'' é criado para o novo processo que
clone produz.  (Se você não pede por CLONE_NEWPID, então o novo processo
criado vive no mesmo PID namespace que seu processo pai --- o processo
que invocou clone().)

Similar ao pedido CLONE_NEWPID, existe o pedido 

  CLONE_NEWNET,

o que lhe concede um novo namespace relativo à rede.  (Você poderia por
exemplo construir uma tabela de roteamento diferente da usada em seu
namespace original de rede.  Cabe notar que uma placa de rede, por
exemplo, só pode pertencer a um namespace de cada vez.  Se você quer
testar um programa de rede numa configuração de rede diferente da sua
atual, você precisaria, por exemplo, de uma interface de rede virtual.)

Similar a esses, existe o pedido 

  CLONE_NEWNS,

que lhe dá um novo namespace para o sistema de arquivos, o que te
permite por exemplo usar o nome /etc/passwd como o nome de um arquivo
completamente diferente do seu original.  

As vantagens de CLONE_NEWNS você já conhece bem.  Você anda interessado
em CLONE_NEWPID e CLONE_NEWNET.  A forma usuário-final típica de usar
esses recursos é pilotando um software como Docker ou concorrentes.
Tecnicamente, você pode escrever seu próprios programas e obter o mesmo
efeito ``si hablas un poco del lenguaje C, el lenguaje UNIX''.

Back to pt.comp.so.linux | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-01 21:40 +0100
  Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-01 22:33 +0100
    Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-02 09:33 +0100
      Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-02 08:38 -0300
  Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-01 22:54 -0300
    Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-02 10:04 +0100
      Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-02 08:59 -0300
        Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-02 14:43 +0100
          Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-03 03:34 +0100
            Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-03 08:09 +0100
              Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-03 08:31 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-03 06:16 -0300
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-03 15:42 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-03 17:04 -0300
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-04 05:29 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-04 09:02 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-04 19:12 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-04 08:58 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-04 10:40 -0300
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-03 15:53 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-03 19:39 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? João Jerónimo <jj.mailspam@yahoo.com> - 2020-07-15 10:19 +0100
              Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-03 19:37 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-04 09:40 +0100
                Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-04 19:25 +0100
              Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Paulo da Silva <p_d_a_s_i_l_v_a_ns@nonetnoaddress.pt> - 2020-07-05 08:08 +0100
            Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Patricia Ferreira <pferreira@example.com> - 2020-07-03 05:56 -0300
  Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? João Jerónimo <jj.mailspam@yahoo.com> - 2020-07-13 12:16 +0100
    Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? Ninguém <usenet@rasparta.org> - 2020-07-15 10:31 +0100
      Re: Como criar um sistema mínimo para systemd-nspawn com modo gráfico? João Jerónimo <jj.mailspam@yahoo.com> - 2020-07-17 12:01 +0100

csiph-web