segunda-feira, 10 de outubro de 2011

LPIC - Funcionamento da USB no Linux

Post com dicas para LPI
Tópico: Arquitetura de Sistema

Funcionamento da USB no Linux

Neste post vou falar um pouco sobre a USB no linux. Falar sobre USB pode parecer um assunto trivial, porém existem certos conceitos sobre a USB que podem vir a cair na LPIC-1 e que podem confundí-lo e levá-lo a perder uma questão aparentemente fácil da prova. Este será um post mais teórico, mas sem muita enrolação ou decoreba, é mais a nível de conhecimento mesmo.

Controladores USB
Podemos encontramos 4 tipos de controles de USB:
- Open Host Controller Interface - OHCI : Um controlador para USB 1.1 de código aberto.
- Universal Host Controller Interface - UHCI : Um Controlador proprietário criado pela Intel para USB 1.0 incompatível com OHCI. Geralmente utilizados por dispositivos Intel e VIA.
- Enhanced Host Controller Interface - EHCI: Um controlador de alta velocidade para o padrão USB 2.0.
- Extensible Host Controller Interface - XHCI: Padrão recente de controlador com melhoria de velocidade e eficiência de energia sobre o seu predecessor. Pode vir a substituir o OHCI, UHCI e EHCI pois suporta todas as velocidade USB, inclusive a USB 3.0.

Classes de dispositivos USB
Existem muitas classes de dispositivos USB, as mais conhecidas são:
- Human Interface Device (HID)
Exemplo: Dispositivos de Entrada, tal como mouse, teclado etc.
- Communications device
Exemplo: Modens
- Mass storage device
Exemplo: Discos Rígidos, HD Externo, Pendrive etc.
- Audio
Exemplo: Dispositivos de Audio
- IrDA
Exemplo: Dispositivos Infravermelho
- Printer
Exemplo: Impressoras

Drivers USB
O suporte a USB no Linux chegou com o desenvolvimento do Kernel 2.3.x e mais tarde foi portado para 2.2.x com excessão do suporte a dispositivos da classe de armazenamento em massa.
Os drivers de USB do Kernel do Linux são divididos em 3 categorias:
- Host controller drivers: incluem usb-ohci.o (OHCI driver), usb-uhci.o (UHCI driver), uhci.o (versão antiga “alternativa” do UHCI driver) e o ehci-hcd.o (EHCI driver).
- Class drivers: Incluem hid.o, usb-storage.o (mass storage driver), acm.o (Automated Control Model [ACM] communications class driver, para enviar comando AT para um modem de interface serial), printer.o, e audio.o.
-Other device drivers: Outros drivers de dispositivos o quais não se incluem nas duas categorias acima.

quinta-feira, 6 de outubro de 2011

LPIC - Um pouco sobre o boot do Linux

Post com dicas para LPI
Tópico: Arquitetura de Sistema

Um pouco sobre o boot do Linux

No momento da inicialização (boot) do sistema podemos passar diversos parâmetros com propósitos variados para o Kernel do Linux. No momento do boot podemos também verificar se dispositivos e serviços foram configurados e iniciados corretamente.

Os principais softwares responsáveis pelo boot no Linux são o Lilo e o Grub. Ambos funcionam de maneira semelhante: antes do carregamento do Kernel oferecem um prompt onde é possível alterar o comportamento do boot, podendo ser possível passar parâmetros para o Kernel. Alguns exemplos de parâmetros que podem ser por este prompt são:

- acpi : Liga/Desliga o suporte a ACPI

- init : define um outro programa para ser executado na inicialização no lugar de /sbin/init

- mem : Define a quantidade de memória que estará disponível para o sistema

- maxcpus : Define a quantidade máxima de processadores que estarão disponíveis para o sistema.

- quiet : não exibe grande parte das mensagens da inicialização(boot)

- vga : seleciona um modo de vídeo

- root : define uma partição raiz diferente

- ro/rw: realiza a montagem inicial da partição raiz como somente-leitura(ro) ou leitura-escrita(rw).

Na inicialização do sistema são exibidas as mensagens de detecção e configuração dos dispositivos de hardware bem como dos serviços do sistema. Em algumas distribuições do Linux essas mensagens são suprimidas e em seu lugar são exibidas telas de abertura. Como o processo de boot é muito rápido é difícil de acompanhar as mensagens do boot, porém o Linux armazena essas mensagens em /var/log/dmesg onde podemos visualizar todas as mensagens da inicialização contidas neste arquivo. Podemos utilizar ainda o comando:

dmesg

para maior facilidade da visualização destas mensagens.

Claro que existem mais coisas a serem estudadas sobre o processo de boot, bem como configurações e usos de outros softwares responsáveis pelo boot(bootloader). Acredito que este post venha a dar uma idéia básica do boot para você e aconselho a ligar o seu Linux agora e começar a experimentar mais opções de parâmetros de inicialização do sistema e configurações do bootloader de sua distro.


quinta-feira, 16 de dezembro de 2010

LPIC - Identificando e editando as configurações de hardware

Post com dicas para LPI
Tópico: Arquitetura de Sistema

Este é o primeiro dos posts com dicas para a LPIC. Os posts conterão sempre as duas linhas acima indicando qual a finalidade do post bem como o Tópico da LPIC que o post se relaciona.

Identificando e editando as configurações de hardware


No Linux temos dois comando principais quando desejamos visualizar as informações de Hardware identificados pelo sistema operacional, são eles:
lspci - Lista dispositivos conectados ao barramento PCI.
lsusb - Lista dispositivos USB conectados ao computador.

Para visualizar informações mais detalhadas sobre um dispositivo, basta utilizar o comando:
lspci -s [endereço do dispositivo] -v
ou para dispositivos USB
lsusb -d [ID do dispositivo] -v
Para listar os módulos(drivers) utilizados no sistema, podemos usar:
lsmod
O resultado do comando possui 3 colunas.
- Module: nome do módulo
- Size: memória ocupada pelo módulo
- Used by: outros módulos que utilizam este

Os recursos de hardware no Linux são representados por um conjunto de arquivos. Estes arquivos estão localizados nos diretórios /proc e /sys

/proc : possui informações de recursos de hardware e de processos ativos
/sys : armazena unicamente informações de dispositivos

Alguns arquivos importantes encontrados no diretório /proc :
- /proc/cpuinfo : Inoformações sobre o processador encontradas pelo sistema;
- /proc/dma : Informações sobre canais de acesso direto à memória;
- /proc/ioports : Informações sobre endereços de memória usados pelos dispositivos;
- /proc/interrupts : informações sobre IRQs nos processadores;

Conceito sobre Hotplug e Coldplug:
- Hotplug : dispositivos que podem ser ligados com o sistema em funcionamento.
- Coldplug : dispositvos que devem ser ligados ao computador com o sistema desligado.

Todo dispositivo de armazenamento identificado pelo Linux é identificado por um arquivo dentro de /dev. O nome do arquivo depende do tipo de dispositivo e do canal IDE da placa-mãe que ele se encontra instalado, bem como por um número para cada partição que este possuir.
Exemplo:
- Disquete: /dev/fd0
- CD/DVD conectado ao segundo canal IDE: /dev/hdc
- Segunda partição de um HD SATA conectado ao primeiro canal SATA : /dev/sda2
- Primeira partição de um HD IDE conectado ao segundo canal IDE como master: /dev/hdc1

Por hoje são só essas dicas, importante se aprofundar e buscar mais informações sobre os conceitos e comandos aqui apresentados. As próximas dicas serão sobre o boot do sistema.
Até lá e bons estudos!

Certificação Linux - LPIC

Apartir de hoje estarei postando material que ajudará àqueles que desejam, assim como eu, tirar a sua LPIC. Estou estudando para a LPIC-1, estarei postando, sempre que tiver tempo, algumas dicas úteis que podem servir como complemento ao seus estudos.

A todos nós que estamos no caminho para LPIC, desejo boa sorte!

quarta-feira, 8 de dezembro de 2010

Utilizando Fones Bluetooth no Ubuntu 10.10

Há pouco mais de um mês comprei um Fone Bluetooth no mercado livre. Estava precisando de um fone sem fio, uma vez que adoro estudar e trabalhar escutando música, é quase um vício, hehe. Pesquisei pela net e encontrei um ótimo modelo o Nokia BH-503, que é um fone muito bom por sinal. Comprei de um vendedor do Mercado Livre que importou de Hong Kong, demorou muito para chegar, quando finalmente chegou fui ansioso para usá-lo no Ruindows 7 e adivinha? Não funcionou. O driver padrão do Ruindows para bluetooth não possui recursos de audio. Pois bem, pesquisei bastante e depois de muito baixar e instalar vários drivers fiz o fone funcionar.
No outro dia fui usar meu bom e velho Ubuntu quis escutar uma musica no fone novo, e para minha surpresa o meu adaptador bluetooth foi reconhecido logo de cara e já com suporte a audio A2DP e SCO. Fiz o pareamento do Fone com o adaptador, configurei a saída de audio do ubuntu para o Fone Bluetooth e para minha surpresa o som saiu! Porém a qualidade estava péssima e o som ficava picotando.
Então recorri ao bom e velho Google. E eis aqui a solução:
Primeiro vamos precisar dos seguintes pacotes instalados:
  • bluetooth
  • bluez
  • bluez-utils
  • bluez-audio
  • blueman
  • gstreamer
No meu caso só precisei instalar o Blueman. Agora vá digite o seguinte comando no console para configurarmos o gstreamer:
gstreamer-properties
Troque a entrada e a saida padrão para o plugin ALSA. Agora lique o seu adaptador bluetooth e digite o seguinte comando:
blueman-manager
Agora você deve localizar e parear o seu Fone. Feito isso tenha certeza que os serviços Headset Service e Audio Sink estão ativados clicando com o botão direito emcima dele.
Com o Fone conectado ao notebook e com os serviços em funcionamento, você deve agora configurar a qualidade do som. Para isso vá em Sistema->Preferências->Som e na aba Hardware clique no seu fone e selecione a opção High Fidelity Playback (A2DP).
Pronto, o seu fone está instalado e configurado!

Dica: para direcionar todo o som do sistema para os fones de ouvido, vá em Sistema->Preferência->Som e na aba Saida e selecione o seu fone.

quinta-feira, 10 de junho de 2010

Alterando corretamente as configurações do Grub2

Após muito tempo sem atualizar o blog, estarei começando apartir de agora a realizar postagens diárias no blog. E o que me inspirou a começar foi o fato de hoje eu ter instalado o Ubuntu 10.04 em meu notebook, para substituir o meu antigo Mint 8. Nada melhor para começar do que postando dicas para mudar a cara do seu grub não é?

Confesso que foi uma surpresa eu ver a cara nova do Ubuntu, depois de uma noite baixando a imagem(é minha net é um lixo mesmo xD ), instalei o sistema aqui, todo bonitão começando pela cara nova do setup de instalação, muito bem acabado por sinal mas um pouco pesado.Ao terminar a instalação a primeira mudança significativa que notei foi que a instalação tinha apagado meu grub personalizado...aff, então o que eu fiz foi personalizá-lo novamente.

Deve ser do conhecimento do leitor que o grub2 não possui nenhum arquivo menu.lst para configurar assim como no antigo grub, o novo arquivo agora é o grub.cfg, que se transformou em um script em shell com inúmeras configurações possíveis. Antes de começar a alterar o grub.cfg fique sabendo que sempre que houver uma atualização do grub (update-grub), esse arquivo é refeito desfazendo com isto suas configurações. A maneira correta de modificar o grub é alterando alguns arquivos que ele usa para gerar estas atualizações a cada update. O primeiro é o /etc/default/grub onde podemos alterar as configurações para recuperação do grub.Aqui nós vamos alterar algumas coisas:
  • GRUB_TIMEOUT=30 (altere o número para o tempo em segundos que deseja que o grub espera até carregar a opção padrão de boot).
  • GRUB_DEFAULT=0 (altere para a opção que deseja que seja a padrão para carregamento ao fim do tempo de espera, lembrando que a primeira opção da lista equivale a 0, a segunda a 1 e assim por diante).
  • GRUB_GFXMODE=1366x768 (descomente esta linha e coloque a resolução que o grub irá usar na tela de boot, no exemplo coloquei a resolução da tela do meu notebook).
Pronto, já alteramos algumas coisas que serão cruciais para a aparência do nosso grub, fique livre para fazer outras modificações. Para realmente aplicar estas configurações ao arquivo de configuração(grub.cfg) basta digitar o seguinte comando:
sudo update-grub


Agora vamos colocar uma imagem de fundo no nosso grub. Para isto vamos alterar um outro arquivo: /etc/grub.d/05_debian_theme. Aqui neste arquivo vamos alterar as seguintes coisas:
  • WALLPAPER="/usr/share/images/desktop-base/imagem.jpg" (altere para o caminho da sua imagem, eu prefiro copiar a imagem para a pasta padrão, se quiser testar uma outra pasta personalizada esteja a vontade ;D. Importante é que a imagem deve ser da mesma resolução que você colocou no parâmetro GRUB_GFXMODE, caso contrário converta ela com o comando convert ) .
  • COLOR_NORMAL="white/black" (altere os parâmetros para as cores que os caracteres do grub serão impressos na tela, importante alterar para melhor visualização dependendo da imagem que vc colocou como fundo)
  • COLOR_HIGHLIGHT="magenta/black" (altere para modificar a cor da opção selecionada na lista de opçṍes de boot na tela do grub)
Depois basta dar novamente o comando para atualização do grub:
sudo update-grub


Agora é só reiniciar e curtir a cara nova do seu grub ;D

segunda-feira, 26 de outubro de 2009

Enviando e-mail diretamente através da linha de comando

Começarei minhas postagens neste blog por um assunto que me chamou atenção por algum tempo: enviar e-mail para servidores reais pela linha de comando.


Em meu curso estudei alguns protocolos de comunicação, entre eles os protocolos de e-mail: SMTP, IMAP e POP3. Vi os comandos que eram utilizados para se enviar e receber um e-mail, porém havia um problema: para testá-los tínhamos que instalar nosso próprio servidor de e-mail e configurá-lo para então por Telnet utilizar os comandos. Porém a idéia de testar os comandos apenas em laboratório não me agradava muito. Eu queria comunicar com servidores reais tal como Yahoo, Gmail e outros. Como minha conta de e-mail mais utilizada é a do Gmail resolvi começar a pesquisar como enviar um e-mail para os servidores de email da Google.


Caso precise de ajuda quanto aos comando do SMTP, IMAP ou do POP3:

http://pt.kioskea.net/contents/internet/smtp.php3


Para podermos receber qualquer e-mail por um cliente devemos também ajustar duas configurações na nossa conta de e-mail. Acessando minha conta do Gmail eu vou em Configurações → Encaminhamento e POP/IMAP, aqui ativamos o POP na opção Ativar POP para todos os e-mails e o IMAP na opção Ativar IMAP.


Para enviar e-mail para o Gmail precisamos primeiro saber qual é o seu servidor e qual a porta que deveremos acessar para enviar ou receber um e-mail. O proprio Gmail possui essas informações:


Servidor de entrada de e-mail (IMAP) - requer SSL

imap.gmail.com
Utilizar SSL: Sim
Porta: 993

Servidor de entrada de e-mail (POP3) - requer SSL

pop.gmail.com
Utilizar SSL: Sim
Porta: 995

Servidor de saída de e-mail (SMTP) - requer TLS

smtp.gmail.com(usa autenticação)
Usa autenticação: Sim
Utilizar STARTTLS: Sim (alguns clientes o chamam de SSL)
Porta: 465 ou 587


Como a tabela acima indica podemos enviar o e-mail por SMTP para 2 portas diferentes: a 465 e a 587. Todas as duas exigem uma conexão criptografada, a diferença está que a 465 exige protocolo SSL de criptografia, já a porta 587 exige o protocolo TLS.


Para criar uma conexão criptografada utilizei o openssl que é uma ferramenta que implementa os protocolos SSL e TLS.


Para instalar basta o comando:

sudo apt-get install openssl


Agora com a ferramenta instalada vamos criar uma conexão. Porém como temos duas portas que esperam diferentes protocolos então temos também diferentes sintaxes para cada uma delas. Para conectar na porta 465 utilize o comando:

openssl s_client -crlf -connect smtp.gmail.com:465


Como a porta 587 utiliza TLS, para se conectar por ela devemos especificar ao openssl que utilize este tipo de criptografia, com isto o comando ficaria o seguinte:

openssl s_client -crlf -starttls smtp -connect smtp.gmail.com:587


Enviamos um helo para nos identificarmos:

HELO nome_qualquer


Agora temos que nos autenticar, a autenticação é feita da seguinte maneira:

AUTH PLAIN usuario_e_senha_criptografados_em_base_64


Para criarmos a chave com nosso usuario e senha criptografados em base 64 podemos utilizar um comando em Perl:

perl -MMIME::Base64 -e 'print encode_base64("\000usuario\@gmail.com\000senha")'


Agora informamos o remetente do email:
MAIL FROM: <usuario@gmail.com>


E o destinatário:
RCPT TO: <destino@gmail.com>

Informamos que a mensagem irá iniciar logo após o comando:

DATA


Agora podemos começar a digitar o email:
From: Remetente <remetente@gmail.com>

To: Destinatário <destinatario@dominio.com>

Subject: Assunto do Email


Conteúdo

Para finalizarmos o e-mail saltamos uma linha digitamos um ponto (.) e saltamos mais uma linha.


E pronto enviamos um e-mail sem utilizar nenhum cliente de e-mail.