diff options
author | Paulo Henrique de Lima Santana (phls) <phls@debian.org> | 2020-09-27 13:58:30 -0300 |
---|---|---|
committer | Paulo Henrique de Lima Santana (phls) <phls@debian.org> | 2020-09-27 13:58:30 -0300 |
commit | b4629f021f03f6a77b3b03621cf777d7c07c010b (patch) | |
tree | 804636d326e217166472335530a4eec097a70b94 /portuguese/ports | |
parent | 8d7b8b173b56550c18d454b8b8ac604db64f529a (diff) |
Create new portuguese translation (thanks to Thiago Pezzo and Paulo Santana)
Diffstat (limited to 'portuguese/ports')
-rw-r--r-- | portuguese/ports/hurd/hurd-doc-translator.wml | 256 |
1 files changed, 256 insertions, 0 deletions
diff --git a/portuguese/ports/hurd/hurd-doc-translator.wml b/portuguese/ports/hurd/hurd-doc-translator.wml new file mode 100644 index 00000000000..03f74ef8bdb --- /dev/null +++ b/portuguese/ports/hurd/hurd-doc-translator.wml @@ -0,0 +1,256 @@ +#use wml::debian::template title="Debian GNU/Hurd --- Documentação" NOHEADER="yes" +#include "$(ENGLISHDIR)/ports/hurd/menu.inc" +#use wml::debian::translation-check translation="55a70d0c0f3df8d4df237334ac6de72daaa99f73" + +<h1>Debian GNU/Hurd</h1> +<h2>Tradutores</h2> +<ul> +<li><a href="#concept" name="TOC_concept">Conceito</a></li> +<li><a href="#examples" name="TOC_examples">Exemplos</a></li> +<li><a href="#actpas" name="TOC_actpas">Tradutores passivos, tradutores ativos</a></li> +<li><a href="#manage" name="TOC_manage">Gerenciando tradutores</a></li> +</ul> + +<h3><a href="#TOC_concept" name="concept">Conceito</a></h3> +<p> +Antes de examinarmos os tradutores, consideremos os sistemas de arquivos +regulares. Um sistema de arquivo é um armazenamento para uma árvore +hierárquica de diretórios e arquivos. Você acessa os diretórios e os arquivos +através de uma string de caracteres especial, o caminho (path, em inglês). +Além disso, existem links simbólicos para referenciar um arquivo em +diversos lugares na árvore, existem hard links para dar diversos nomes +a um mesmo e único arquivo. Existem também arquivos de dispositivo especiais +para comunicação com os drivers de dispositivos de hardware do kernel, e +existem pontos de montagem para incluir outros armazenamentos na árvore +de diretórios. E existem objetos obscuros como os FIFOs.</p> +<p> +Embora esses objetos sejam muito diferentes, eles compartilham de algumas +propriedades comuns, por exemplo, todos eles têm um(a) proprietário(a) e um +grupo associados, como também direitos de acesso (permissões). Esta informação +fica escrita em inodes. Isto é, na verdade, uma convergência adicional: todo +objeto tem exatamente um inode associado a ele (hard links são algo de +especial já que eles compartilham um mesmo e único inode). Às vezes, o inode +tem informações adicionais armazenadas nele. Por exemplo, o inode pode conter +o alvo de um link simbólico.</p> +<p> +Contudo, esses aspectos comuns geralmente não são aproveitados nas +implementações, apesar da interface comum de programação entre eles. Todos os +inodes podem ser acessados através de chamadas POSIX padrões, por exemplo, +<code>read()</code> e <code>write()</code>. Ou para adicionar um +novo tipo de objeto (por exemplo, um novo tipo de link) para um kernel unix +comum e monolítico, você precisaria modificar o código para cada sistema +de arquivos separadamente.</p> +<p> +No Hurd, as coisas funcionam diferentemente. Embora no Hurd um servidor +especial de sistema de arquivos possa explorar propriedades especiais de +tipos de objeto padrões, como os links (no sistema de arquivo ext2 com links +rápidos, por exemplo), ele tem uma interface genérica para adicionar tais +funcionalidades sem modificar o código existente.</p> +<p> +O truque está em permitir a um programa que se insira entre o atual conteúdo +de um arquivo e o(a) usuário(a) que está acessando este arquivo. Tal programa +é chamado de tradutor, porque ele é capaz de processar requisições de entrada +por muitas e diferentes maneiras. Em outras palavras, um tradutor é um +servidor Hurd que fornece uma interface básica de sistema de arquivos.</p> +<p> +Os tradutores têm propriedades muito interessantes. Do ponto de vista do +kernel, eles são apenas outro processo de usuário(a). Isto é, os tradutores +podem ser executados por quaisquer usuários(as). Você não precisa de +privilégios de root para instalar ou para modificar um tradutor, você somente +precisa dos direitos de acesso para o inode subjacente ao tradutor ao qual +está anexado. Muitos tradutores não requerem um arquivo real para operar, +eles podem fornecer informações por seus próprios meios. Este é o motivo +da informação sobre tradutores ficar armazenada no inode.</p> +<p> +Os tradutores são responsáveis por servir todas as operações de sistema +de arquivo que envolvem o inode no qual estão anexados. Porque não estão +restritos aos usuais conjuntos de objetos (arquivo de dispositivo, link, etc.), +eles estão livres para retornar qualquer coisa que faça sentido ao(à) +programador(a). Pode-se imaginar um tradutor que se comporta como um +diretório quando acessado por <code>cd</code> ou <code>ls</code> e, ao +mesmo tempo, se comporta como um arquivo quando acessado por +<code>cat</code>.</p> + +<h3><a href="#TOC_examples" name="examples">Exemplos</a></h3> +<h4>Pontos de montagem</h4> +<p> +Um ponto de montagem pode ser visto como um inode que tem um tradutor +especial anexado a ele. Seu propósito seria traduzir as operações do +sistema de arquivos no ponto de montagem em operações de sistema de arquivos +em outro armazenamento, por exemplo, em uma outra partição.</p> +<p> +De fato, é assim que os sistemas de arquivos são implementados sob o Hurd. +Um sistema de arquivos é um tradutor. Este tradutor pega um armazenamento +como seu argumento e é capaz de servir todas as operações de sistema de +arquivos transparentemente.</p> + +<h4>Arquivos de dispositivo</h4> +<p> +Existem muitos e diferentes arquivos de dispositivos, e em sistemas de +kernel monolítico, eles são todos fornecidos pelo kernel mesmo. No Hurd, +todos os arquivos de dispositivo são fornecidos por tradutores. Um +tradutor pode fornecer suporte para vários arquivos de dispositivo similares, +por exemplo, todas as partições do disco rígido. Deste modo, o número de +tradutores realmente existentes é muito pequeno. Contudo, note que +para cada arquivo de dispositivo acessado, uma tarefa de tradutor separada +é iniciada. Porque o Hurd é profundamente multithread, isso sai muito +barato.</p> +<p> +Quando hardware é envolvido, um tradutor geralmente começa a se comunicar com +o kernel para obter os dados do hardware. Entretanto, se não é preciso acesso +ao hardware, o kernel não precisa estar envolvido. Por exemplo, +<code>/dev/zero</code> não requer acesso ao hardware e, portanto, pode ser +implementado completamente no espaço de usuário(a).</p> + +<h4>Links simbólicos</h4> +<p> +Um link simbólico pode ser visto como um tradutor. Ao acessar o link +simbólico, um tradutor seria iniciado, o qual encaminharia a requisição +para o sistema de arquivos que contenha o arquivo para o qual o link +aponta.</p> +<p> +Contudo, para uma melhor performance, os sistemas de arquivos que possuem +suporte nativo aos links simbólicos podem tirar vantagem desta funcionalidade +e implementar links simbólicos de maneira diferente. Internamente, o acesso +a um link simbólico não iniciaria um novo processo de tradutor. Porém, para +o(a) usuário(a), ainda pareceria como se o tradutor passivo estivesse +envolvido (veja abaixo uma explicação sobre o que é um tradutor passivo).</p> +<p> +Devido ao Hurd vir com um tradutor de symlink, qualquer servidor de sistema +de arquivos que fornece suporte para tradutores automaticamente tem suporte +para symlinks (e firmlinks, e arquivos de dispositivos, etc.)! Ou seja, +você pode conseguir um sistema de arquivos funcionando bem rápido e adicionar +suporte nativo aos symlinks e a outras funcionalidades mais tarde.</p> + +<h3><a href="#TOC_actpas" name="actpas">Tradutores passivos, tradutores ativos</a></h3> +<p> +Existem dois tipos de tradutores, passivos e ativos. Eles realmente são +coisas completamente diferentes, então não confunda; mas eles mantêm uma +relação próxima.</p> + +<h4>Tradutores ativos</h4> +<p> +Um tradutor ativo é um processo de tradutor em execução, como visto acima. +Você pode definir e remover tradutores ativos usando o comando +<code>settrans -a</code>. +A opção <code>-a</code> é necessária para dizer ao +<code>settrans</code> que você quer modificar o tradutor ativo.</p> +<p> +O comando <code>settrans</code> recebe três tipos de argumentos. Primeiro, você +pode definir opções para o comando <code>settrans</code> mesmo, como +<code>-a</code> para modificar o tradutor ativo. A seguir você define o inode +que quer modificar. Lembre-se que um tradutor está sempre associado com um +inode na hierarquia de diretórios. Você somente pode modificar um inode +por vez. Se você não especificar mais nenhum argumento, <code>settrans</code> +tentará remover um tradutor existente. O quanto ele vai tentar depende das +opções de imposição que você especificar (se o tradutor está em uso por +qualquer processo, você obterá uma mensagem de erro "device or resource busy" +- dispositivo ou recurso ocupado - a menos que você force a remoção).</p> +<p> +Mas se você especificar argumentos adicionais, eles serão interpretados como +uma linha de comando para executar o tradutor. Isto é, o próximo argumento +é o nome de arquivo do executável do tradutor. Argumentos adicionais são +opções para o tradutor, e não para o comando <code>settrans</code>.</p> +<p> +Por exemplo, para montar uma partição ext2fs, você pode executar +<code>settrans -a -c /mnt /hurd/ext2fs /dev/hd2s5</code>. A opção +<code>-c</code> criará um ponto de montagem se ele ainda não +existir. Aliás, não precisa ser um diretório. Para desmontar, você tentaria +<code>settrans -a /mnt</code>.</p> + +<h4>Tradutores passivos</h4> +<p> +Um tradutor passivo é definido e modificado pela mesma sintaxe dos tradutores +ativos (somente ignore a opção <code>-a</code>), então tudo o que foi dito +acima também é verdade para os tradutores passivos. Contudo, existe uma +diferença: tradutores passivos ainda não foram iniciados.</p> +<p> +Isto faz sentido porque isto é o que você geralmente quer. Você não quer a +partição montada a menos que você realmente acesse os arquivos nesta partição. +Você não quer ligar a rede a menos que exista algum tráfego, e assim por +diante.</p> +<p> +Ao contrário, a primeira vez que um tradutor passivo é acessado, ele é +automaticamente lido do inode e um tradutor ativo é iniciado a partir +dele usando a linha de comando que foi armazenada no inode. Isto é +similar à funcionalidade de montagem automática do Linux. Contudo, ele não +vem como um bônus que você tem que configurar manualmente, mas como uma +parte integral do sistema. Assim, definir tradutores passivos posterga o +início da tarefa de tradutor até que você realmente precise dela. A propósito, +se o tradutor ativo morre por alguma razão, a próxima vez em que o inode +for acessado, o tradutor é reiniciado.</p> +<p> +Existe uma outra diferença: tradutores ativos podem morrer ou se perder. +Logo após o término do processo do tradutor ativo (por exemplo, porque você +reiniciou a máquina), ele estará perdido para sempre. Tradutores passivos não +são transientes e ficam no inode durante a reinicialização até que você +modifique-os com o programa <code>settrans</code> ou apague os inodes aos +quais estão anexados. Isto significa que você não precisa manter um +arquivo de configuração com seus pontos de montagem.</p> +<p> +Um último ponto: mesmo se você definiu um tradutor passivo, você ainda pode +definir um tradutor ativo diferente. Somente se o tradutor é automaticamente +iniciado porque não existia tradutor ativo quando o inode foi acessado, assim +o tradutor passivo é considerado.</p> + +<h3><a href="#TOC_manage" name="manage">Gerenciando tradutores</a></h3> +<p> +Como mencionado acima, você pode usar +<code>settrans</code> +para definir e alterar tradutores passivos e ativos. Existem muitas opções +para alterar o comportamento do <code>settrans</code> no caso de algo dar +errado e para condicionar suas ações. Aqui estão alguns usos comuns:</p> +<ul><li><code>settrans -c /mnt /hurd/ext2fs /dev/hd2s5</code> monta uma +partição, o tradutor permanece após a reinicialização.</li> +<li><code>settrans -a /mnt /hurd/ext2fs ~/dummy.fs</code> monta um +sistema de arquivos dentro de um arquivo de dados, o tradutor some se ele +morrer.</li> +<li><code>settrans -fg /nfs-data</code> força um tradutor a sumir.</li> +</ul> +<p> +Você pode usar o comando +<a href="hurd-doc-utils#showtrans"><code>showtrans</code></a> +para ver se um tradutor está anexado a um inode. Porém, isso só vai mostrar +o tradutor passivo.</p> +<p> +Você pode alterar as opções de um tradutor ativo (de sistema de arquivos) com +<code>fsysopts</code> sem realmente reiniciá-lo. Isto é muito +conveniente. Por exemplo, você pode fazer o chamado "remontando uma +partição somente-leitura" sob o Linux executando simplesmente <code>fsysopts +/mntpoint --readonly</code>. O tradutor ativo em execução +mudará seu comportamento de acordo com sua requisição, se possível. O +<code>fsysopts /mntpoint</code> sem nenhum parâmetro mostra as configurações +atuais.</p> + +<h4>Exemplos</h4> +<p> +Eu recomendo que você inicie pela leitura do comando <code>/bin/mount</code>, +é só um pequeno script. Devido à configuração de tradutores de sistemas de +arquivos ser similar à montagem de partições, você facilmente pode captar +o conceito desta maneira. Crie uma imagem de sistema de arquivo com +<code>dd if=/dev/zero of=dummy.fs bs=1024k +count=8; mke2fs dummy.fs</code> e "monte-a" com <code>settrans -c dummy +/hurd/ext2fs `pwd`/dummy.fs</code>. Note que o tradutor ainda não +iniciou, nenhum novo processo <code>ext2fs</code> está executando (verifique +com <code>ps Aux</code>). Verifique se tudo está correto usando +<code>showtrans</code>.</p> +<p> +Agora digite <code>ls dummy</code> e você perceberá um curto atraso que +acontece enquanto o tradutor é iniciado. Após isso, não haverá mais atrasos +acessando o dummy. Sob o Linux, poderia se dizer que você montou automaticamente +um sistema de arquivo em loop. Verifique com <code>ps Aux</code> que agora +existe um processo <code>ext2fs dummy</code> ativo e executando. Agora +coloque alguns arquivos no novo diretório. Tente fazer o sistema de arquivos +ficar em somente-leitura com <code>fsysopts</code>. +Note quão longe vão as falhas das tentativas de escrita. Tente matar o +tradutor ativo com <code>settrans -g</code>.</p> +<p> +Agora você deve ter alguma compreensão do que está acontecendo. Lembre-se +de que foi somente <em>um</em> servidor especial, o servidor ext2fs do Hurd. +Existem muitos mais servidores no diretório <code>hurd</code>. Alguns deles +são para sistemas de arquivos. Alguns são necessários para funcionalidades +de sistemas de arquivo, como os links. Alguns são necessários para arquivos +de dispositivos. Alguns são úteis para redes. Imagine "montar" um servidor +FTP com <code>settrans</code> e baixar arquivos +simplesmente com o comando padrão <code>cp</code>. Ou editar seus sites web +com <code>emacs /ftp/homepage.my.server.org/index.html</code>!</p> |