Admirável Mundo Novo: Tudo Sobre Asterisk, OpenSER, Linux e Tecnologias de Voz sobre IP: Manual




Muito Bem Vindo

Prezado Leitor, a proposta desse Blog é compartilhar conhecimento com as pessoas que trabalham com Linux, Asterisk, OpenSER, e com tecnologia de voz sobre a rede IP em geral, através de tutoriais, dicas, howto, notícias entre outros assuntos.

Atente para termo de uso do conteúdo do blog no rodapé da página.

Mostrando postagens com marcador Manual. Mostrar todas as postagens
Mostrando postagens com marcador Manual. Mostrar todas as postagens

sábado, 25 de abril de 2009

ZIC - Compilador de Horário de Zona (Fuso Horário)




Precisei gerar o arquivo localtime conforme instruções do bom tutorial do site da rede nacional de pesquisa (RNP) em http://www.rnp.br/cais/alertas/2008/cais-alr-20081003.html, que atendeu a minha necessidade. Contudo, achei necessário ler a página manual do comando ZIC que só encontrei em inglês. O resultado foi então essa versão em português.

Correções são muito bem-vindas!




ZIC(8)                                                                       ZIC(8)


NOME
zic - time zone compiler – compilador de horário de zona (de fuso horário).


SINOPSIS
zic  [ -v ] [ -d directory ] [ -l localtime ] [ -p posixrules ] [ -L
leapsecondfilename ] [ -s ] [ -y command ] [ filename ... ]



DESCRIÇÃO
O programa zic lê o texto do(s) arquivo(s) denominado na linha de comando e cria arquivos de informação para a conversão de tempo especificado nessa entrada. Se um filename for substituído por‘-‘, então a entrada padrão é lida.

Essas opções estão disponíveis:

-d directory

Cria os arquivos de informação de conversão de tempo no diretório denominado em vez do diretório padrão denominado abaixo.

-l timezone

Usa o timezone (fuso horário) dado como tempo local. O comando zic vai agir como se a entrada contivesse uma linha link da forma:

Link      timezone      localtime


-p timezone

Usa as regras de timezones (fusos horários) quando manipulando variáveis de ambiente timezone no formato POSIX. O comando zic agirá como se a entrada contivesse uma linha link da forma:

Link     timezone     posixrules


-L leapsecondfilename

Lê a informação do Segundo de salto do arquivo com o nome dado. Se essa opção não for usada, nenhuma informação do segundo de salto aparecerá nos arquivos de saída.



-v Reclama se um year (ano) que aparece em um arquivo de dados está fora da faixa de anos representáveis por valores de time(2).

-s Limita valores de tempo armazenados nos arquivos de saída para valores que são os mesmos se eles forem tomados ser sinalizados ou não. Você pode usar essa opção para gerar arquivos compatíveis SVVS.

-y command

Usa o comando dado em vez de yearistype quando verificando tipo ano (veja a seguir).

As linhas de entrada são compostas de campos. Os campos são separados entre si por qualquer número de caracteres espaços em branco. Espaço em branco na cabeça e no rabo nas linhas de entrada é ignorado. Um caractere cerquilho (#) não entre aspa dupla na entrada introduz um comentário que expande até o final da linha que aparece o caractere cequilho. Caracteres espaço em branco e cerquilho (#) podem ser fechados entre aspas duplas (“”), se eles forem usados como parte de um campo. Qualquer linha que esteja em branco (após suprimir comentário) será ignorada. Linhas não em branco são esperadas ser uma de três tipos: linha de regras, linhas de zona e linhas de link.


Uma linha de regra (rule) tem a forma:

Rule   NAME    FROM   TO   TYPE   IN   ON   AT   SAVE  LETTER/S


Por exemplo:

Rule    US    1967 1973   -     Apr lastSun 2:00 1:00 D


Os campos que compõe uma linha de regra são:


NAME

Fornece o nome (arbitrário) do conjunto de regras da qual essa regra é parte.



FROM

Fornece o primeiro ano no qual a regra se aplica. Qualquer inteiro pode ser fornecido; o calendário Gregoriano é assumido. A palavra minimum (ou uma abreviação) significa que o ano mínimo que pode ser representado como um inteiro. A palavra maximum (ou uma abreviação) significa o ano máximo que pode ser representado como inteiro. As Regras podem descrever tempos que não são representáveis como valores de tempo, os tempos que não puderem ser representados serão ignorados; isso permite que as regras sejam portáveis entre hosts com tipos de valor de tempo diferentes.



TO

Fornece o ano final no qual a regra se aplica. Em adição as palavras minimum e maximum (como explicado acima), a palavra only (ou uma abreviação) pode ser usada para repetir o valor do campo FROM.



TYPE

Fornece o tipo de ano no qual a regra se aplica. Se TYPE for ‘-‘, então a regra se aplica em todos os anos entre FROM e TO inclusive. Se TYPE for algo diferente, então zic executa o comando yearistype tipo de ano para verificar o tipo de ano: um status de saída igual a zero é tomado para significar que o ano é do tipo dado; um status de saída 1 é tomado para significar que o ano não é do tipo fornecido.



IN

Nomeia o mês no qual a regra tem efeito. Nomes dos meses podem ser abreviados.



ON

Fornece o dia no qual a regra tomará efeito. Formas reconhecidas incluem:




5No quinto dia do mês.
lastSunNo último Domingo do mês.
lastMonNa última Segunda do mês.
Sun>=1No primeiro Domingo logo após ou igual ao dia primeiro do mês, ou seja, no primeiro Domingo do mês.
Sun>=8No primeiro Domingo logo após o dia 8 ou igual ao oitavo dia do mês, ou seja, no segundo domingo do mês.
Sun>=15No primeiro Domingo logo após o dia 15 ou igual ao décimo quinto dia do mês, ou seja, no terceiro domingo do mês.
Sun>=22No primeiro Domingo logo após o dia 22 ou igual ao vigésimo segundo dia do mês, ou seja, no quarto domingo do mês.
Sun<=25No último Domingo antes do dia 25 ou no domingo igual ao vigésimo quinto dia do mês.




Nomes de dias da semana podem ser abreviados ou colocados completos. Observe que não pode haver nenhum espaço dentro do campo ON.

AT

Fornece a hora do dia na qual a regra toma efeito. Formas reconhecidas incluem:




2Tempo em horas.
2:00Tempo em horas e minutos.
15:00Tempo no formato 24-horas (para horário vespertino).
1:28:14Tempo em horas, minutos, e segundos.



Onde 0 hora é meia noite no começo do dia, e 24 horas é meia noite no final do dia. Qualquer dessas formas pode ser seguida pela letra w se a hora dada for à hora local “wall clock”, s se a hora dada for à hora local “Standard”, ou u (ou g ou z) se a hora dada for à hora do tempo universal; na ausência de um indicador, a hora do relógio local será assumido.

SAVE

Fornece a quantidade de tempo a ser adicionada à hora local padrão quando a regra tomar efeito. Esse campo tem o mesmo formato que o campo AT (embora, claro, os sufixos w e s não sejam usados).



LETTER/S

Fornece a "parte variável" (por exemplo, o "S" ou "D" em "EST" ou "EDT") das abreviações de timezone (fuso horário) a ser usado quando essa regra tomar efeito. Se esse campo for ‘-‘, a parte variável é nula.




Uma linha de zona (zone line) possui a forma:

Zone  NAME   GMTOFF   RULES/SAVE   FORMAT  [UNTIL]


Por exemplo:

Zone Australia/Adelaide 9:30  Aus  CST  1971 Oct 31 2:00



Os campos que compõem uma linha de zona são:

NAME

O nome do timezone (fuso horário). Esse é o nome usado na criação do arquivo de informação de conversão de tempo para o fuso horário.



GMTOFF

A quantidade de tempo a adicionar ao horário UTC para obter a hora padrão nessa zona (fuso). Esse campo possui o mesmo formato que o dos campos AT e SAVE das linhas de regra; inicie o campo com um sinal menos se a hora precisa ser subtraída do horário UTC.



RULES/SAVE

O nome da(s) regra(s) que se aplica no timezone (fuso horário) ou, alternativamente, uma quantidade de tempo a adicionar ao horário local padrão. Se esse campo for ‘-‘, então o horário padrão sempre se aplica nesse timezone (fuso horário).



FORMAT

O formato para abreviação de timezone (fuso horário) nesse fuso. O par de caracteres ‘%s’ é usado para mostrar onde entra a “parte variável” da abreviação do fuso horário. Alternativamente, uma barra (/) separa abreviações do horário padrão e do horário daylight.



UNTIL

O horário no qual o offset UTC ou a(s) regra(s) mudam para uma localização. É especificado como um ano, um mês, um dia, e uma hora do dia. Se isso for especificado, a informação de timezone (fuso horário) é gerada do offset UTC dado e a regra alterada até o tempo especificado. O mês, dia, e hora do dia possui o mesmo formato que o formato das colunas IN, ON, e AT de uma regra; colunas finais podem ser omitidas, e é padronizado com o valor mais antigo possível das colunas faltantes.



A linha seguinte precisa ser uma linha “continuação”; essa tem a mesma forma que de uma linha de zona exceto que a string “Zone” e o nome sejam omitidos, porque a linha continuação colocará a informação no início do tempo especificado como o campo UNTIL na linha anterior no arquivo usado pela linha anterior. Linhas de continuação podem conter um campo UNTIL, justamente como faz as linhas de zona, indica que a próxima linha é uma continuação adicional.


Uma linha link possui a forma:

Link LINK-FROM   LINK-TO


Por exemplo:

Link Europe/Istanbul Asia/Istanbul


O campo LINK-FROM deve parecer igual ao campo NAME em toda linha de zona; o campo LINK-TO é usado como um nome alternativo para essa zona (fuso horário).

Exceto para linha de continuação, as linhas podem aparecer em qualquer ordem na entrada.


Linhas no arquivo que descrevem os segundos de salto têm a seguinte forma:

Leap    YEAR    MONTH     DAY    HH:MM:SS    CORR    R/S


Por exemplo:

Leap 1974 Dec    31   23:59:60 +     S


Os campos YEAR, MONTH, DAY, e ‘HH:MM:SS’ informa quando o segundo de salto aconteceu. O campo CORR deve ser “+”, se um Segundo foi adicionado ou “-“ se um segundo foi saltado. O campo R/S deve ser (uma abreviação para) “Stationary", se o tempo do segundo de salto dado pelo outros campos deve ser interpretado como UTC ou (uma abreviação para) “Rolling”, se o tempo do segundo de salto dado pelos outros campos deve ser interpretado como hora local.


OBSERVAÇÃO:
Para as áreas com mais de dois tipos de horário local, você pode precisar usar a hora local padrão no campo AT da regra de tempos de transição anterior para assegurar que o tempo de transição anterior gravado no arquivo compilado esteja correto.


ARQUIVO
/usr/share/zoneinfo – diretório padrão usado pelos arquivos.


VEJA TAMBÉM
ctime(3), dump(1)                                                           ZIC(8)











quarta-feira, 31 de dezembro de 2008

Descrição do SOX





Descrição

O SoX é um programa executado no prompt da linha de comando que pode converter muitos arquivos de áudio populares para outros formatos de arquivos de áudio igualmente bastante populares. Ele pode opcionalmente mudar o tipo de dados da amostra do áudio e aplicar um ou mais efeitos de som para o arquivo durante essa tradução.

Se mais do que um arquivo de entrada for especificado então eles serão concatenados no arquivo de saída. Neste caso, existe uma restrição de que todos os arquivos de entrada precisam ter o mesmo tipo de dados e mesma taxa de amostragem.

O programa soxmix é funcionalmente igual ao programa de linha de comando sox exceto que ele toma dois ou mais arquivos como entrada e mistura juntos os seus áudios para produzir um único arquivo como saída. Ele possui a restrição de que todos os arquivos de entrada precisam ser do mesmo tipo de dados e mesma taxa de amostragem.

Existem dois tipos de formatos de arquivo de áudio com os quais o SoX pode funcionar. O primeiro são os formatos de arquivos que se descrevem. Esses contêm um cabeçalho que descreve completamente as características dos dados do áudio que o acompanha.

O segundo tipo são os arquivos sem cabeçalho, ou, às vezes, chamados arquivos com dados brutos (raw) de áudio. Um usuário precisa passar a informação necessária ao SoX na linha de comando de sorte que o SOX saiba qual o tipo de dados o arquivo contem.

Os dados do Áudio podem ser normalmente descritos por quatro características fundamentais:

rate A taxa de amostragem está em número de amostras por segundo. Por exemplo, as taxas de amostragem de CD são da ordem de 44100 Hz.

data size A precisão dos dados contido no arquivo. Muito popular são bytes de 8 bits ou palavras de 16 bits.

data encoding O tipo de dados usado na codificação. São exemplos u-law, ADPCM ou codificação linear dos dados com sinal.

channels Quantidade de canais contidos nos dados de áudio. Mono e Estéreo são os dois canais mais comuns.

Favor consulte a página manual do soxexam(1) para um descrição mais completa com exemplos de como usar o SoX com os vários tipos de formatos de arquivos.









... Volta                   Prossegue ...















quinta-feira, 31 de julho de 2008

Ajuda para Configuração de VLAN no Arquivo interfaces



Além de script de inicialização e do comando vconfig, no Debian a configuração de VLAN pode ser feita a partir do arquivo /etc/network/interfaces que possui uma formatação própria para isso.

Abaixo está uma versão em português da página manual para a configuração de VLAN a partir do arquivo citado, conforme aparece quando se executa o comando seguinte:

#man vlan-interfaces




VLAN-INTERFACES (5)Formatos de ArquivoVLAN-INTERFACES (5)




NOME


/etc/network/interfaces (vlan) - extensões do formato do arquivo interfaces (5) para VLAN.




DESCRIÇÃO


/etc/network/interfaces contém a informação de configuração da interface de rede para os comandos ifup (8) e ifdown (8). Essa página manual descreve as extensões VLAN para o formato padrão do arquivo interfaces (5).



Extensões primárias existem para criar e destruir interfaces VLAN, extensões secundárias existem para manipulação de interface ipv4 que sejam geralmente necessárias quando usando (muitas) VLANs.




CRIAÇÃO DE VLAN


Definições de interface VLAN existem para nome de interface VLAN, e uma opção para ter nomes de interface de 4 números preenchidos com zero, ou apenas os dígitos planos sem ser antecedidos por zeros. O exemplo seguinte mostra quatro formas de criar uma VLAN com ID 1 na interface eth0. Todas elas resultam em nomes diferentes.


iface eth0.1 inet static

address 192.168.1.1

netmask 255.255.255.0



iface vlan1 inet static

vlan-raw-device eth0

address 192.168.1.1

netmask 255.255.255.0




iface eth0.0001 inet static

address 192.168.1.1

netmask 255.255.255.0




iface vlan0001 inet static

vlan-raw-device eth0

address 192.168.1.1

netmask 255.255.255.0



# Não temos um suporte brilhante p/ bridge

iface br0.2 inet static

vlan-raw-device br0

address 192.168.1.1

netmask 255.255.255.0



# Aliases são ignoradas

iface br0.2:1 inet static

address 192.168.1.1

netmask 255.255.255.255




OPÇÕES IFACE EXTRAS


Normalmente quem usa VLANs também deseja fazer algumas outras manipulações com a pilha IP ou a interface.


vlan-raw-device devicename

Indica o dispositivo sobre o qual criar a VLAN. Isso é ignorado quando o devicename faz parte da definição do nome da interface VLAN.


ip-proxy-arp 0|1

Ativa ou desativa o proxy-arp para essa interface especifica. Isso também funciona em Ethernet normal como dispositivos.


ip-rp-filter 0|1|2

Define o filtro do caminho de retorno para essa interface especifica. Isso também funciona em Ethernet normal como dispositivos.


hw-mac-address mac-address

Esse parâmetro define o endereço mac da interface antes de ativá-la. Isso funciona sobre qualquer dispositivo que permite definir o endereço de hardware com o comando IP.




AUTOR


Essa página manual foi adaptada do arquivo interfaces (5) por Ard van Breemen




VEJA TAMBÉM


vconfig (8), interfaces (5)





vlan 10 de Agosto 2000

VLAN-INTERFACES (5)





quarta-feira, 30 de julho de 2008

Usando Disco RAM com Linux



Da mesma forma que as duas opções tmpfs e ramfs já publicada aqui, o disco RAM ou RAM disk, é o mecanismo do Linux que permite criar discos virtuais na memória física de modo que um sistema em produção pode ganhar peformance pelo simples fato de não precisar fazer muito I/O com o disco rígido.

Isso é muito útil no Asterisk quando você usa ele como URA e até mesmo quando voce usa-o como PABX que toca bastante guia ou prompt de voz.

O método a escolher depende do gosto do cliente. Sinta-se a vontade para escolher o seu ...

O conteúdo de ajuda a seguir está conforme aparece nos fontes do Linux.



Usando o dispositivo de bloco RAM disk com Linux



/Documentation/ramdisk.txt

----------------------------------------


Conteúdo:


1) Visão Geral

2) Parâmetros da Linha de Comando do Kernel

3) Usando o comando “rdev -r"

4) Um Exemplo de Criação de um RAM Disk Comprimida



1) Visão Geral

--------------------


O driver do RAM disk é uma forma de usar a memória principal do sistema como um dispositivo de bloco. É exigido pelo initrd, um sistema de arquivo de início usado se você precisa carregar os módulos a fim de acessar o sistema de arquivo root (veja Documentation/initrd.txt). Pode também ser usado como um sistema de arquivo temporário para funcionamento do crypto, desde que os conteúdos sejam apagados no reboot.


O RAM disk cresce dinamicamente quando mais espaço é requerido. Ele faz isso usando a RAM a partir do cache buffer. O driver marca os buffers que ele está usando como demarcados de sorte que o subsistema VM não tentará reclamá-los depois.


Também, o driver RAMdisk suporta até 16 RAMdisks brilhantemente, e pode ser reconfigurados para suportar até 255 RAMdisks – alterando-se a linha "#define NUM_RAMDISKS" no arquivo fonte drivers/block/rd.c. Para usar o suporte à RAM disk com o seu sistema, execute './MAKEDEV ram' a partir do diretório /dev. Todos os RAM disks tem número major 1, e starta com o número minor 0 para o /dev/ram0, etc. Se for usado, os kernels modernos usam o /dev/ram0 para um initrd.


O parâmetro antigo "ramdisk=" foi alterado para "ramdisk_size=" para tornar mais claro. O "ramdisk=" original foi mantido para contornar as questões de compatibilidade, mas ele pode ser retirado no futuro.


O novo diver RAMdisk também tem a capacidade de carregar imagens comprimidas da RAMdisk, permitindo espremer mais programas numa instalação mediana ou em um disco flexível de restauração.




2) Parâmetros de Linha de Comando do Kernel

---------------------------------------------------------------------------------


ramdisk_size=N

==============


Esse parâmetro diz ao driver do RAM disk para definir o tamanho de N KBytes das RAMdisks. O padrão é 4096 (4 MB) (8192 (8 MB) no S390).


ramdisk_blocksize=N

===================


Esse parâmetro diz ao driver do RAM disk quantos bytes usar por bloco. O padrão é 512.




3) Usando o Comando "rdev -r"

------------------------------------------------------


O uso da palavra (de dois bytes) que "rdev -r" define na imagem do kernel está a seguir. Os 11 bits inferiores (0 -> 10) especificam um offset (em blocos de 1 kB) de até 2 MB (2^11) de onde achar a RAM disk (isso usado para ser o tamanho). O bit 14 indica que uma RAM disk é para ser carregada, e o bit 15 indica se uma seqüência prompt/wait é pra ser dado antes de tentar ler a RAM disk. Já que a RAM disk cresce dinamicamente enquanto os dados estão sendo escritos nela, um campo tamanho não é preciso. Os bits de 11 a 13 não são usados atualmente e podem ser zero também. Esses números não são de magia secreta, como visto abaixo:


./arch/i386/kernel/setup.c:#define RAMDISK_IMAGE_START_MASK 0x07FF

./arch/i386/kernel/setup.c:#define RAMDISK_PROMPT_FLAG 0x8000

./arch/i386/kernel/setup.c:#define RAMDISK_LOAD_FLAG 0x4000


Considere uma instalação de dois disquetes típicos, onde você terá o kernel em um disco, e já tem que colocar uma imagem da RAMdisk no disco #2.


Portanto, você deseja definir os bits de 0 a 13 como 0, significa que sua RAM disk inicia com um offset igual 0 KB do começo do disquete.


A linha de comando equivalente é: "ramdisk_start=0"


Você deseja que o bit 14 igual a um, indicando que uma RAM disk é pra ser carregado. A linha de comando equivalente é: "load_ramdisk=1"


Você deseja que o bit 15 igual a um, para indicar que você deseja uma seqüência de prompt/keypress de modo que você tenha uma chance para trocar os disquetes.


A linha de comando equivalente é: "prompt_ramdisk=1"


Colocando isso junto permite 2^15 + 2^14 + 0 = 49152 para um palavra de rdev. Então para criar um do conjunto, você faria:


/usr/src/linux# cat arch/i386/boot/zImage > /dev/fd0

/usr/src/linux# rdev /dev/fd0 /dev/fd0

/usr/src/linux# rdev -r /dev/fd0 49152



Se você criar um disco de boot que tenha o LILO, então para ponto acima, você usaria:


append = "ramdisk_start=0 load_ramdisk=1 prompt_ramdisk=1"



Já o start padrão = 0 e o prompt padrão = 1, você poderia usar:


append = "load_ramdisk=1"



> Usando uma RamDisk Comprimida ...





terça-feira, 29 de julho de 2008

Opções de Montagem do RAMFS



A segue uma versão do conteúdo do arquivo texto ramfs que documenta o sistema de arquivo ramfs acompanha os fontes do Kernel Linux. Pra quem pretende implementar sistemas grandes com Asterisk e OpenSER e em geral outros sistemas que demandam recurso de máquina precisa considerar esse tipo de recurso do Linux. Notadamente, se o sistema executa muito I/O com o disco.



Documentation/filesystems/ramfs.txt




ramfs
- Permite redimensionamento automático de memória baseado em filesystem.



Ramfs é um sistema de arquivo que mantém todos os arquivos na RAM. Ele permite acesso de
leitura e escrita. Em contraste com os RAMdisks, que mantém alocada uma quantidade fixa de RAM, o ramfs expande e encolhe de modo a acomodar os arquivos que ele contém.



Você pode montar o ramfs com:

Linux#: mount -t ramfs nome /mnt/qualquerlugar



Então apenas crie e use os arquivos. Quando o sistema de arquivo é desmontado, todo o seu conteúdo será perdido.



NOTA!
Este sistema de arquivo é provavelmente muito útil não como um sistema de arquivo real, mas como um exemplo de sistemas de arquivos virtuais que pode ser escrito.




Limites do Recurso:


Por padrão um sistema de arquivo ramfs será limitado ao uso da metade da metade da memória (física) para armazenamento dos conteúdos dos arquivos, um pouco mais quando os meta dados for incluídos. Os limites de uso dos recursos do ramfs podem ser controlados com as seguintes opções do comando mount:



maxsize=NNN
Define o uso máximo de memória permitido do sistema de arquivo para NNN kilobytes. Isso será arredondado pra baixo a um múltiplo do tamanho da página. O padrão é a metade da memória física.




NB. Diferente de muitos outros limites, definindo esse a zero *não* significa sem limite, mas limitará normalmente o tamanho dos dados do sistema de arquivo a zero página. Pode existir um uso para isso em alguma situação pervertida.



maxfilesize=NNN
Define o tamanho máximo de um arquivo simples no sistema de arquivo a NNN kilobytes. Isso será arredondado pra baixo a um múltiplo do tamanho da página. Se NNN=0, não existe limite. O padrão é sem limite.




maxdentries=NNN
Define o número máximo de entradas de diretório no sistema de arquivo (hard links) para NNN. Se NNN=0, não existe limite. Por padrão é definido como maxsize/4.




maxinodes=NNN
Define o número máximo de nós-i (ou seja, arquivos distintos) no sistema de arquivo para NNN. Se NNN=0, não existe limite. O padrão é sem limite (mas nunca pode haver mais nós-i que entradas de diretórios).






quarta-feira, 9 de julho de 2008

Configuração de VLAN 802.1q no Linux



Página Manual da Aplicação Vconfig




Essa aplicação no nível de usuário que configura o recurso de VLAN no Linux, conforme aparece no comando # man vconfig.





NOME

vconfig - programa de configuração de VLAN (802.1q).


SINOPSE

vconfig [muitas opções longas]


DESCRIÇÃO

O programa vconfig permite você criar e remover dispositivos VLAN em um kernel com VLAN ativada. Dispositivos VLAN são dispositivos Ethernet virtuais que representam as LANs virtuais na LAN física.


OPÇÕES

add [interface-name] [vlan-id]

Cria um dispositivo VLAN sobre a [interface-name]. O dispositivo LAN resultante será chamado de acordo com o conjunto de convenção de nome.


rem [vlan-device]

Remove o mencionado dispositivo LAN.


set_flag [vlan-device] 0 | 1

Quando setado com 1, os organizadores de cabeçalho Ethernet são ativados. Quando da criação do dispositivo, o mesmo vai aparecer como um dispositivo Ethernet normal sem VLANs. Quando 0 (padrão), contudo, os cabeçalhos Ethernet não serão reordenados, o que resulta em pacotes com a etiqueta de VLAN quando se cria o dispositivo. Usualmente o padrão não dar problemas, mas alguns programas de filtragem de pacotes podem ter problemas com isso.


set_egress_map [vlan-device] [skb-priority] [vlan-qos]

Essa opção sinaliza que pacotes saintes com uma prioridade de socket buffer (skb-priority) particular devem ser etiquetados com a prioridade do QoS da VLAN particular. A prioridade padrão de VLAN é 0.


set_ingress_map [vlan-device] [skb-priority] [vlan-qos]

Essa opção sinaliza que os pacotes entrantes com a prioridade do QoS da VLAN particular deve ser enfileirados com uma prioridade de socket buffer (skb-priority) particular. O valor skb-priority padrão é 0.


set_name_type VLAN_PLUS_VID | VLAN_PLUS_VID_NO_PAD | DEV_PLUS_VID | DEV_PLUS_VID_NO_PAD

Seta as formas de nomes para dispositivo VLAN são criados. Use o vconfig sem argumentos para ver os diferentes formatos.


VEJA TAMBÉM

ip(8), ifconfig(8)




sexta-feira, 27 de junho de 2008

Sistema de Arquivo tmpfs




Como eu tenho o habito de tudo que leio em inglês eu faço um apontamento em português, segue mais um documento do Linux como minha pequena contribuição para povoar a Internet com documentação em nossa língua do Pingüim. Como aparece no documento tmpfs.txt nos fontes do kernel:



Sistema de Arquivo tmpfs


O tmpfs é um sistema de arquivo que mantém todos os arquivos em memória virtual.


Tudo que estiver no tmpfs é temporário no sentido de que qualquer arquivo deve ser criado no seu disco rígido. Se você executar um unmount em uma instância do tmpfs, tudo estocado nele será perdido.


O tmpfs coloca tudo nas caches internas do kernel que se expande e contrai para acomodar os arquivos nele contido e é capaz de fazer swap de páginas desnecessárias para colocar no espaço de swap. Tem limites de tamanho máximo que pode ser ajustado via 'mount -o remount ...'


Se você comparar o tmpfs com o ramfs (que foi o modelo para criar o tmpfs) você ganha no mecanismo swapping e na verificação de limite. Outra coisa similar é o RAMdisk (/dev/ram*), que simula um harddisk de tamanho fixo na RAM física, onde você precisa criar um sistema de arquivo ordinário no topo. As ramdisks não conseguem fazer swap e você não tem a possibilidade de redimensioná-lo.


Já que o tmpfs existe completamente na página da cache e no swap, todas as páginas de tmpfs atualmente na memória vão se mostrar ativas quando estiver na cache. Não vão se mostrar como ativas quando estiverem compartilhadas ou algo parecido. Além do mais, você pode verificar o uso atual do RAM+swap de uma instância tmpfs com os comandos df(1) e du(1).


tmpfs tem os seguintes usos:


1) Existe sempre uma montagem interna do kernel que você não verá de jeito nenhum. Isso é usado pelo mapeamento anônimo compartilhado e a memória compartilhada SYSV.


Esta montagem não depende de CONFIG_TMPFS. Se CONFIG_TMPFS não for definida, a parte visível do usuário de tmpfs não é construída. Mas os mecanismos internos sempre estarão presentes.


2) glibc 2.2 e superior espera que tmpfs esteja montado em /dev/shm para a memória compartilhada do POSIX (shm_open, shm_unlink). Adicionando a linha seguinte ao /etc/fstab precisa se preocupar com isso:


tmpfs /dev/shm tmpfs defaults 0 0


Lembre-se de criar o diretório que você tenciona montar tmpfs sobre ele se necessário (/dev/shm é automaticamente criado se você usa devfs).


Essa montagem _não_ é preciso para memória compartilhada SYSV. A montagem interna é usada para isso. (Nas versões 2.3 do kernel era necessário montar o predecessor de tmpfs (shm fs) para usar a memória compartilhada SYSV)


3) Algumas pessoas (incluindo eu) acham muito convenientes montá-lo, por exemplo, sobre os diretórios /tmp e /var/tmp e ter uma grande partição de swap. E agora dar um giro nas montagens dos arquivos tmpfs para fazer funcionar, assim o mkinitrd embutido por muitas distribuições deve ser bem sucedido com um tmpfs /tmp.


4) E muito provavelmente mais coisas sobre as quais Eu não sei:


tmpfs tem três opções de mount de ajuste de tamanho:


size:


O limite de bytes alocados por instância de tmpfs. O padrão é a metade de sua RAM física sem fazer swap. Se você superdimensionar sua instância de tmpfs a máquina vai entrar em deadlock já que o manipulador OOM não será capaz de liberar esta memória.


nr_blocks:


O mesmo que size, mas em blocos de PAGE_CACHE_SIZE.


nr_inodes:


O número máximo de Nós-i desta instância. O padrão é a metade do número de suas páginas de RAM física, ou (numa máquina com highmem) o número de páginas RAM lowmem, em qualquer caso é o menor.


Esses parâmetros aceitam um sufixo k, m ou g para kilo, mega e giga e pode ser alterado no remount. O parâmetro size também aceita um sufixo % para limitar essa instância de tmpfs a esta percentagem de sua RAM física: o padrão, quando nem size ou nr_blocks for especificado, é size=50%.


Se tanto nr_blocks (ou size) e nr_inodes são setado para 0, nem os blocos nem os s-i serão limitados nesta instância. Geralmente não é inteligente montar com tais opções, já que isso permite qualquer usuário com acesso de escrita fazer uso elevado de toda a memória da máquina; mas melhora a escalabilidade desta instância em um sistema com muitas CPUs fazendo uso intenso dela.


Para especificar o diretório de root inicial pode usar as seguintes opções para mount:


mode: As permissões como um número octal

uid: O id do usuário

gid: O id do grupo


Estas opções não têm qualquer efeito sobre o comando remount. Você pode alterar estes parâmetros com os comandos chmod(1), chown(1) e chgrp(1) sobre um filesystem montado.


Assim,

mount -t tmpfs -o size=10G,nr_inodes=10k,mode=700 tmpfs /mytmpfs

Isso vai dar a você a instância de tmpfs em /mytmpfs que pode alocar 10GB RAM/SWAP nos 10240 Nós-i e ele é somente acessível pelo usuário root.



Autor: Christoph Rohland <cr@sap.com>, 1.12.01

Atualizado: Hugh Dickins <hugh@veritas.com>, 01 Setembro 2004





quinta-feira, 26 de junho de 2008

Ajuda do Comando strip




Página de Manual de strip


Algum tempo atrás precisei usar o comando strip, e procurei ver se existia algum help para ele em português e não encontrei. Assim, eu fiz uma tradução do texto do help que é exibido quando usamos o comando de página de manual (man strip) na console do Linux. Como uma contribuição à comunidade Linux, segue o help em português como ele aparece na saída de # man strip:



STRIP(1) GNU Development Tools STRIP(1)


NOME

strip - Descarta símbolos dos arquivos objetos.


SINOPSE

strip [-F bfdname |--target=bfdname]

[-I bfdname |--input-target=bfdname]

[-O bfdname |--output-target=bfdname]

[-s|--strip-all]

[-S|-g|-d|--strip-debug]

[-K symbolname |--keep-symbol=symbolname]

[-N symbolname |--strip-symbol=symbolname]

[-w|--wildcard]

[-x|--discard-all] [-X |--discard-locals]

[-R sectionname |--remove-section=sectionname]

[-o file] [-p|--preserve-dates]

[--keep-file-symbols]

[--only-keep-debug]

[-v |--verbose] [-V|--version]

[--help] [--info]

objfile...


DESCRIÇÃO

O comando strip GNU descarta todos os símbolos dos arquivos objeto objfile. A lista de arquivos objeto pode incluir arquivamentos. Pelo menos um arquivo objeto precisa ser fornecido. O comando strip modifica os arquivos mencionados em seus argumentos, em vez de escrever cópias modificadas sob nomes diferentes.


OPÇÕES

-F bfdname / --target=bfdname

Trata o objfile original como um arquivo com o formato de código objeto bfdname, e o reescreve no mesmo formato.


--help

Mostra um sumário das opções de strip e sai.


--info

Exibe uma lista mostrando todas as arquiteturas e formatos objeto disponíveis.


-I bfdname / --input-target=bfdname

Trata o objfile original como um arquivo com o formato do código objeto bfdname.


-O bfdname / --output-target=bfdname

Substitui o objfile por um arquivo no formato de saída bfdname.


-R sectionname / --remove-section=sectionname

Remove qualquer seção chamada sectionname do arquivo de saída. Essa opção pode ser fornecida mais de uma vez. Note que usando essa opção inapropriadamente pode tornar o arquivo de saída inutilizável.


-s / --strip-all

Remove todos os símbolos.


-g / -S / -d / --strip-debug

Remove somente símbolos de debug.


--strip-unneeded

Remove todos os símbolos que não são necessários no processamento de realocação.


-K symbolname / --keep-symbol=symbolname

Quando sugando símbolos, mantém o símbolo symbolname mesmo que esse seja normalmente retirado. Essa opção pode ser fornecida mais de uma vez.


-N symbolname / --strip-symbol=symbolname

Remove o símbolo symbolname do arquivo fonte. Essa opção pode ser fornecida mais de uma vez, e pode ser combinado com as opções de strip exceto a opção ‘-K’.


-o file

Coloca a saída enxugada em file, em vez de substituir o arquivo existente. Quando esse argumento for usado, somente um argumento objfile pode ser especificado.


-p / --preserve-dates

Preserva as datas de acesso e modificação do arquivo.


-w / --wildcard

Permite expressões regulares em symbolnames usadas em outras opções de linha de comando. As marcas dos operadores interrogação (?), asterisco (*), barra invertida (\) e colchetes ([]) podem ser usados em qualquer lugar no nome de símbolo. Se o primeiro caractere do nome do símbolo for exclamação (!) então o sentido da troca será invertido para esse símbolo. Por exemplo:


-w -K !foo -K fo*

fará strip manter somente os símbolos que começa com as letras "fo", mas descarta o símbolo "foo".


-x / --discard-all

Remove os símbolos não globais.


-X / --discard-locals

Remove os símbolos locais gerados pelo compilador. (Eles normalmente começam com L ou ..)


--keep-file-symbols

Quando enxugando um arquivo, talvez com a opção --strip-debug ou --strip-unneeded, retém quaisquer símbolos que especificam nomes de arquivos fonte, que do contrário poderia ser sugado.


--only-keep-debug

Enxuga um arquivo, removendo quaisquer seções que seria enxugada pela opção --strip-debug e deixando as seções de debug.


A intenção é que essa opção será usada em conjunção com --add-gnu-debuglink para criar um executável de duas partes. Uma parte é um binário enxugado que ocupará menos espaço na RAM e numa distribuição e a segunda parte um arquivo de com informação de debug que será necessário somente se as capacidades de debug são requeridas. O procedimento sugerido para criar esses arquivos é como segue:


1.<Link o executável como normal. Supondo que é chamado"foo"> depois ...


1.Rode <"objcopy --only-keep-debug foo foo.dbg"> para criar um arquivo que contenha a informação de debug.


1. Rode <"objcopy --strip-debug foo" > para criar um executável enxugado.


1. Rode <"objcopy --add-gnu-debuglink=foo.dbg foo"> para adicionar um link para a informação de debug no executável enxugado.


Observação: a escolha de ‘.dbg’ como uma extensão para a arquivo com a informação de debug é arbitrário. Também o passo "--only-keep-debug" é opcional. Você pode no lugar fazer isso:


1.<Link o executável como normal.>


1. Copia <"foo" para "foo.full">


1. Roda <"strip --strip-debug foo">


1. Roda <"objcopy --add-gnu-debuglink=foo.full foo">


ou seja, o arquivo apontado pela opção --add-gnu-debuglink pode ser o executável totalmente. Ele não precisa ser um arquivo criado pela troca de --only-keep-debug.


-V / --version

Mostra o número de versão de strip.


-v / --verbose

Saída de verbose: lista todos os arquivos objetos modificados. No caso de arquivados, strip -v lista todos os membros do arquivado.


@file

Lê opções de linha de comando de file. As opções lidas são inseridas no lugar da opção original @file. Se o arquivo não existir, ou não puder ser lido, então a opção será tratado literalmente, e não será removida.


Opções em file são separados por espaço em branco. Um caractere espaço em branco pode ser incluído em uma opção delimitando a opção inteira tanto em aspas simples ou duplas. Qualquer caractere (incluindo uma barra invertida) pode ser incluído prefixando o caractere a ser incluído com uma barra invertida. O arquivo pode conter opções @file adicionais por si mesmo; quaisquer de tais opções serão processadas recursivamente.


VEJA TAMBÉM

As entradas de Informação para binutils.


DIREITOS

Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.


Permissão é concedida para copiar, distribuir e/ou modificar esse documento sob os termos da GNU Free Documentation License, Versão 1.1 ou qualquer versão posterior publicada pela Free Software Foundation; sem Seções Invariantes, sem Textos Front-Cover, e sem Textos Back-Cover. Uma pia da licença é incluída na seção intitulada "GNU Free Documentation License".


binutils-2.17 23-06-2006 STRIP(1)







Creative Commons License
Admirável Mundo Novo: Tudo Sobre Asterisk, OpenSER, Linux e Tecnologias de Voz sobre IP
by Cléviton Mendes de Araújo is licensed under a Creative Commons Atribuição 2.5 Brasil License.