Debian GNU/Hurd
O Dirk Ritter me enviou o texto a seguir que contém a saída da opção --help de todo programa servidor do Hurd. Isto pode ser um bom ponto de partida para documentações adicionais sobre programas servidores, especialmente aqueles úteis para um(a) usuário(a), como ext2fs, ufs, isofs, ftpfs, crash, etc.
Desde então, eu atualizei o texto usando excertos de e-mail das listas de discussão do Hurd. Obrigado(a), Martin von Loewis.
Descrição preliminar da interface de usuário(a) do GNU/Hurd
Atualmente não existe quase nada, mas isso é melhor do que nada mesmo, então por favor enviem reclamações, correções e adições para Dirk Ritter, <dirk@gnumatic.s.bawue.de>. Por favor, note que minhas habilidades de programação são bem limitadas, então você não deve esperar que eu realmente entenda sobre coisas relacionadas a desenho e implementação de sistemas operacionais.
O servidor de autenticação | "auth " |
---|---|
O servidor crash | "crash " |
O servidor exec | "exec " |
O servidor ext2fs | "ext2fs " |
O tradutor fifo | "fifo " |
O tradutor firmlink | "firmlink " |
O tradutor de sistema de arquivo ftp | "ftpfs " |
O servidor fwd | "fwd " |
O servidor hostmux | "hostmux " |
O servidor ifsock | "ifsock " |
O servidor init | "init " |
O servidor de arquivo de sistema iso | "isofs " |
O servidor magic | "magic " |
O servidor new-fifo | "new-fifo " |
O servidor nfs | "nfs " |
O servidor null | "null " |
O servidor pfinet | "pfinet " |
O servidor pflocal | "pflocal " |
O servidor de processo | "proc " |
O tradutor de armazenamento | "storeio " |
O tradutor de link simbólico | "symlink " |
O servidor de terminal | "term " |
O servidor ufs | "ufs " |
O servidor usermux | "usermux " |
O servidor de autenticação - "auth
"
Passa credenciais quando dois servidores mutuamente não confiáveis se comunicam. De certo modo, cada servidor auth estabelece um domínio de confiança. (Martin von Loewis, 10 de outubro de 1996)
Uma de suas funcionalidades interessantes é que ele torna possível que processos personifiquem diversas identidades ao mesmo tempo, e também que dinamicamente adquiram ou renunciem a identidades.
Executar "/hurd/auth --help
" exibe:
Usage: auth [OPTION...] -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor crash - "crash
"
O servidor crash fica ativo sempre que uma tarefa recebe um sinal de erro fatal, por exemplo porque limites de memória foram violados (falha de segmentação). O servidor crash tem três modos de operação: suspender o grupo do processo (pgrp) da tarefa transgressora, terminá-la ou descarregar um arquivo central. Este último ainda não está implementado. Pense no servidor crash como um airbag.
Você pode definir o modo de operação com settrans
, claro, mas
também com fsysopts
durante a execução. Isto é verdade para todo o
sistema padrão e geralmente requer privilégios de
root. Um(a) usuário(a) pode selecionar um padrão diferente com a variável
de ambiente CRASHSERVER
. Você define essa variável para um
inode que tem um servidor crash
anexado a ele. No sistema
padrão do Debian GNU/Linux, essas três operações padrões têm os respectivos
tradutores em /servers/crash-*
.
These options specify the disposition of a crashing process: -s, --suspend Suspend the process -k, --kill Kill the process -c, --core-file Dump a core file --dump-core
O servidor de execução - "exec
"
O exec gerencia a criação de uma nova imagem de processo de um arquivo de imagem.
Na verdade, este servidor tem suporte para criar uma imagem de processo em execução a partir de qualquer arquivo de imagem reconhecido pela biblioteca BFD (isto inclui a.out, ELF e muitos outros). Executáveis armazenados em gzip também são reconhecidos (útil para boot em disquete).
Executar "/hurd/exec --help
" exibe:
Usage: exec [OPTION...] Hurd standard exec server -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor de sistema de arquivo ext2 - "ext2fs
"
Este servidor gerencia sistemas de arquivos do tipo ext2. Ele faz o mesmo
que ext2fs.static
, mas o ext2fs.static
é um executável vinculado estaticamente.
Executar "/hurd/ext2fs --help
" exibe:
Usage: ext2fs [OPTION...] DEVICE... If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. -E, --no-exec Don't permit any execution of files on this filesystem -I, --interleave=BLOCKS Interleave in runs of length BLOCKS -L, --layer Layer multiple devices for redundancy -n, --no-sync Don't automatically sync data to disk -r, --readonly Never write to disk or allow opens for writing -s, --sync[=INTERVAL] If INTERVAL is supplied, sync all data not actually written to disk every INTERVAL seconds, otherwise operate in synchronous mode (the default is to sync every 30 seconds) -S, --no-suid Don't permit set-uid or set-gid execution -T, --store-type=TYPE Each DEVICE names a store of type TYPE -w, --writable Use normal read/write behavior Boot options: --bootflags=FLAGS -C, --directory=DIRECTORY --device-master-port=PORT --exec-server-task=PORT --host-priv-port=PORT -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. Report bugs to bug-hurd@gnu.org.
O servidor fifo - "fifo
"
O tradutor fifo implementa pipes nomeados.
Executar "/hurd/fifo --help
" exibe:
Usage: fifo [OPTION...] Translator for fifos -d, --dgram Reads reflect write record boundaries -m, --multiple-readers Allow multiple simultaneous readers -n, --noblock Don't block on open -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor firmlink - "firmlink
"
Um tradutor para firmlinks.
Executar "/hurd/firmlink --help
" exibe:
Usage: firmlink [OPTION...] TARGET A translator for firmlinks -?, --help Give this help list --usage Give a short usage message -V, --version Print program version A firmlink is sort of half-way between a symbolic link and a hard link; Like a symbolic link, it is `by name', and contains no actual reference to the target. However, the lookup returns a node which will redirect parent lookups so that attempts to find the cwd that go through the link will reflect the link name, not the target name. The target referenced by the firmlink is looked up in the namespace of the translator, not the client. Report bugs to bug-hurd@gnu.org.
O servidor de sistema de arquivo ftp - "ftpfs
"
Um servidor para sistemas de arquivo ftp.
Executar "/hurd/ftpfs --help
" exibe:
Usage: ftpfs [OPTION...] REMOTE_FS [SERVER] Hurd ftp filesystem translator -D, --debug[=FILE] Print debug output to FILE Parameters: --bulk-stat-period=SECS Period for detecting bulk stats (default 10) --bulk-stat-threshold=SECS Number of stats within the bulk-stat-period that trigger a bulk stat (default 5) --name-timeout=SECS Time directory names are cached (default 300) --node-cache-size=ENTRIES Number of recently used filesystem nodes that are cached (default 50) --stat-timeout=SECS Time stat information is cached (default 120) -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If SERVER is not specified, an attempt is made to extract it from REMOTE_FS, using `SERVER:FS' notation. SERVER can be a hostname, in which case anonymous ftp is used, or may include a user and password like `USER:PASSWORD@HOST' (the `:PASSWORD' part is optional). Report bugs to bug-hurd@gnu.org.
O servidor fwd - "fwd
"
Quando acessado, o tradutor fwd encaminha requisições para outro servidor. Ele é usado nos servidores fifo e symlink. A ideia é que você não tenha um zilhão de servidores para coisas triviais; o fwd é usado para coordenar a presença de um servidor que lida convenientemente com muitos e diferentes nodes.
Executar "/hurd/fwd --help
" exibe:
Usage: /hurd/fwd SERVER [TRANS_NAME [TRANS_ARG...]]
O servidor hostmux - "hostmux
"
Eu não faço ideia do que faz esse servidor. (Um servidor para procura de hosts?)
Executar "/hurd/hostmux --help
" exibe:
Usage: hostmux [OPTION...] TRANSLATOR [ARG...] A translator for invoking host-specific translators -H, --host-pattern=PAT The string to replace in the translator specification with the hostname; if empty, or doesn't occur, the hostname is appended as additional argument instead (default `${host}') -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. This translator appears like a directory in which hostnames can be looked up, and will start TRANSLATOR to service each resulting node. Report bugs to bug-hurd@gnu.org.
O servidor ifsock - "ifsock
"
O ifsock
somente lida com nodes de sistema de arquivo
S_IFSOCK
para sistemas de arquivo que não fazem isso por si
mesmos, agindo como um hook sobre o qual pendurar endereços de socket de
domínio Unix. pfinet e pflocal implementam o socket API.
(Thomas Bushnell, 10 de outubro de 1996)
Executar "/hurd/ifsock --help
" exibe:
/hurd/ifsock: Must be started as a translator
O servidor de inicialização - "init
"
Um servidor para procedimentos de boot de sistema e para configurações básicas em tempo de execução.
Executar "/hurd/init --help
" exibe:
Usage: init [OPTION...] Start and maintain hurd core servers and system run state -d, --debug -f, --fake-boot This hurd hasn't been booted on the raw machine -n, --init-name -q, --query Ask for the names of servers to start -s, --single-user Startup system in single-user mode -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor de sistema de arquivo iso - "isofs
"
Um servidor para sistemas de arquivo do tipo iso, normalmente usados para CDs.
Executar "/hurd/isofs --help
" exibe:
Usage: isofs [OPTION...] DEVICE... If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. -E, --no-exec Don't permit any execution of files on this filesystem -I, --interleave=BLOCKS Interleave in runs of length BLOCKS -L, --layer Layer multiple devices for redundancy -n, --no-sync Don't automatically sync data to disk -r, --readonly Never write to disk or allow opens for writing -s, --sync[=INTERVAL] If INTERVAL is supplied, sync all data not actually written to disk every INTERVAL seconds, otherwise operate in synchronous mode (the default is to sync every 30 seconds) -S, --no-suid Don't permit set-uid or set-gid execution -T, --store-type=TYPE Each DEVICE names a store of type TYPE -w, --writable Use normal read/write behavior Boot options: --bootflags=FLAGS -C, --directory=DIRECTORY --device-master-port=PORT --exec-server-task=PORT --host-priv-port=PORT -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. Report bugs to bug-hurd@gnu.org.
O servidor magic - "magic
"
Um tradutor que retorna o resultado MAGIC
da nova tentativa de
magic.
Usuários(as) finais normais provavelmente não precisam saber muito sobre ele,
já que é usado, por exemplo, para facilitar entrada/saída do terminal.
Programadores(as) podem se beneficiar das seguintes informações que
Thomas Bushnell forneceu:
A questão aqui é saber o que é um "magic retry result". O que deve ser feito é examinar o
dir_lookup
RPC documentado em<hurd/fs.defs>
e<hurd/hurd_types.defs>
.
Os resultados de pesquisa do magic basicamente são para casos onde a busca precisa de informação que é parte do estado de chamada do processo, e não é parte do procedimento normal de busca por nome. Essas "pinçadas no estado da chamada" têm que ser implementadas especialmente na biblioteca C (vejalibc/hurd/hurdlookup.c
) e têm que cobrir os casos conhecidos para fornecer a funcionalidade que muitos outros sistemas oferecem.
Ele gentilmente também explicou um comportamento particular que geralmente confunde os(as) usuários(as) finais normais quando se deparam pela primeira vez com ele:
A incapacidade para fazer "ls /dev/fd" ocorre porque o tradutor não sabe quais descritores de arquivo você tem que abrir, então ele não pode te dizer qual existe. Mas o comportamento dele é exatamente como em outros sistemas.
Executar "/hurd/magic --help
" exibe:
Usage: magic [OPTION...] MAGIC A translator that returns the magic retry result MAGIC -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor new-fifo - "new-fifo
"
Servidor alternativo para pipes nomeados.
Executar "/hurd/new-fifo --help
" exibe:
Usage: new-fifo [OPTION...] -d, --dgram Reflect write record boundaries -n, --noblock Don't block on open -r, --multiple-readers Allow multiple simultaneous readers -s, --server Operate in server mode -S, --standalone Don't attempt to use a fifo server -U, --use-server=NAME Attempt use server NAME -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. Report bugs to bug-hurd@gnu.org.
O servidor de sistema de arquivo de rede - "nfs
"
Suporte ao sistema de arquivo de rede para o sistema de arquivo de rede da Sun.
Executar "/hurd/nfs --help
" exibe:
Usage: nfs [OPTION...] REMOTE_FS [HOST] Hurd nfs translator -h, --hard Retry file systems requests until they succeed -s, --soft[=RETRIES] File system requests will eventually fail, after RETRIES tries if specified, otherwise 3 -R, --read-size=BYTES, --rsize=BYTES Max packet size for reads (default 8192) -W, --write-size=BYTES, --wsize=BYTES Max packet size for writes (default 8192) Timeouts: --cache-timeout=SEC Timeout for cached file data (default 3) --init-transmit-timeout=SEC --max-transmit-timeout=SEC --name-cache-neg-timeout=SEC Timeout for negative directory cache entries (default 3) --name-cache-timeout=SEC Timeout for positive directory cache entries (default 3) --stat-timeout=SEC Timeout for cached stat information (default 3) Server specification: --default-mount-port=PORT Port for mount server, if none can be found automatically --default-nfs-port=PORT Port for nfs operations, if none can be found automatically --mount-port=PORT Port for mount server --mount-program=ID[.VERS] --nfs-port=PORT Port for nfs operations --nfs-program=ID[.VERS] --pmap-port=SVC|PORT -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If HOST is not specified, an attempt is made to extract it from REMOTE_FS, using either the `HOST:FS' or `FS@HOST' notations. Report bugs to bug-hurd@gnu.org.
O saco sem fundo - "null
"
Um servidor com muito espaço livre e inumeráveis zeros, que implementa
/dev/null
e /dev/zero
.
Executar "/hurd/null --help
" exibe:
Usage: null [OPTION...] Endless sink and null source -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O servidor de TCP/IP - "pfinet
"
Um servidor para TCP/IP que implementa a família de protocolo PF_INET (IPv4). O servidor que implementará a família de protocolo IPv6 será chamado pfinet6 no atual esquema.
Configurá-lo não é nada difícil. Ele é sempre colocado em
/servers/socket/2
, porque lá é onde o glibc o procura.
Certifique-se de instalá-lo desta maneira:
settrans /servers/socket/2 /hurd/pfinet -6 /servers/socket/26 --interface=/dev/eth0 OPÇÕES
e
settrans /servers/socket/26 /hurd/pfinet -4 /servers/socket/2 --interface=/dev/eth0 OPÇÕES
,
onde OPÇÕES
especifica seu endereço IP, máscara de rede e gateway (se houver). Somente uma
interface de rede é suportada atualmente. Posteriormente, você também pode
definir interfaces adicionais como eth1
e outras, com o mesmo
comando.
Se você não tem uma placa de rede, você deve ao menos instalar uma interface
loopback de modo que localhost funcione (importante para enfileiramento de
impressão e outras coisas úteis). Faça isso com o comando acima, mas não
especifique qualquer interface ou OPÇÕES
. Um simples
settrans /servers/socket/1/hurd/pfinet
resolve.
Executar "/hurd/pfinet --help
" exibe:
Swansea University Computer Society TCP/IP for NET3.019 IP Protocols: ICMP, UDP, TCP Usage: pfinet [OPTION...] Interface-specific options before the first interface specification apply to the first following interface; otherwise they apply to the previously specified interface. -i, --interface=DEVICE Network interface to use These apply to a given interface: -a, --address=ADDRESS Set the network address -g, --gateway=ADDRESS Set the default gateway -m, --netmask=MASK Set the netmask -s, --shutdown Shut it down -?, --help Give this help list --usage Give a short usage message Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. Report bugs to bug-hurd@gnu.org.
O servidor pflocal - "pflocal
"
Implementa sockets de domínio UNIX. Necessário para pipes, por exemplo.
Executar "/hurd/pflocal --help
" exibe:
Usage: /hurd/pflocal
O servidor de processo - "proc
"
O servidor proc atribui PIDs e estruturas de processo para tarefas, e gerencia tudo no nível de processo como wait, bits de fork, suporte à biblioteca C.
Executar "/hurd/proc --help
" exibe:
Usage: proc [OPTION...] Hurd process server -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Report bugs to bug-hurd@gnu.org.
O tradutor de armazenamento - "storeio
"
Um tradutor para dispositivos e outros armazenamentos.
Executar "/hurd/storeio --help
" exibe:
Usage: storeio [OPTION...] DEVICE... Translator for devices and other stores -I, --interleave=BLOCKS Interleave in runs of length BLOCKS -L, --layer Layer multiple devices for redundancy -n, --rdev=ID The stat rdev number for this node; may be either a single integer, or of the form MAJOR,MINOR -r, --readonly Disallow writing -T, --store-type=TYPE Each DEVICE names a store of type TYPE -w, --writable Allow writing -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. Report bugs to bug-hurd@gnu.org.
O servidor de link simbólico - "symlink
"
Um servidor para links simbólicos para sistemas de arquivo que não têm esse suporte.
Executar "/hurd/symlink --help
" exibe:
?(Não houve nenhuma saída? Estranho...)
O servidor de terminal - "term
"
Implementa um terminal POSIX.
Executar "/hurd/term --help
" exibe:
Usage: term ttyname type arg
O servidor ufs - "ufs
"
Um servidor para sistemas de arquivo do tipo ufs. Ele faz o mesmo que
ufs.static
, só que ufs.static
é um executável vinculado estaticamente.
Executar "/hurd/ufs --help
" exibe:
Usage: ufs [OPTION...] DEVICE... If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. -C, --compat=FMT FMT may be GNU, 4.4, or 4.2, and determines which filesystem extensions are written onto the disk (default is GNU) -E, --no-exec Don't permit any execution of files on this filesystem -I, --interleave=BLOCKS Interleave in runs of length BLOCKS -L, --layer Layer multiple devices for redundancy -n, --no-sync Don't automatically sync data to disk -r, --readonly Never write to disk or allow opens for writing -s, --sync[=INTERVAL] If INTERVAL is supplied, sync all data not actually written to disk every INTERVAL seconds, otherwise operate in synchronous mode (the default is to sync every 30 seconds) -S, --no-suid Don't permit set-uid or set-gid execution -T, --store-type=TYPE Each DEVICE names a store of type TYPE -w, --writable Use normal read/write behavior Boot options: --bootflags=FLAGS --device-master-port=PORT --directory=DIRECTORY --exec-server-task=PORT --host-priv-port=PORT -?, --help Give this help list --usage Give a short usage message -V, --version Print program version Mandatory or optional arguments to long options are also mandatory or optional for any corresponding short options. If neither --interleave or --layer is specified, multiple DEVICEs are concatenated. Report bugs to bug-hurd@gnu.org.
O tradutor usermux - "usermux
"
Um tradutor para invocar tradutores específicos a usuários(as).
Executar "/hurd/usermux --help
" exibe:
Usage: usermux [OPTION...] [TRANSLATOR [ARG...]] A translator for invoking user-specific translators -C, --clear-patterns Reset all patterns to empty; this option may then be followed by options to set specific patterns --home-pattern=PAT The string to replace in the translator specification with the user's home directory (default `${home}') --uid-pattern=PAT The string to replace in the translator specification with the uid (default `${uid}') --user-pattern=PAT The string to replace in the translator specification with the user name (default `${user}') -?, --help Give this help list --usage Give a short usage message This translator appears like a directory in which user names can be looked up, and will start TRANSLATOR to service each resulting node. If no pattern occurs in the translator specification, the users's home directory is appended to it instead; TRANSLATOR defaults to /hurd/symlink. Report bugs to bug-hurd@gnu.org.