Posts com Tag ‘kernel’

1. Introdução
Ao instalar o Debian 8 (“jessie”) em um laptop HP-Compaq 6710b, observa-se que sua interface wifi ainda não está funcionando e o áudio está na situação “mudo”. Esse post procura contribuir com a solução destes incovenientes.

2. Sobre o wifi
2.1 BIOS
O laptop tem na BIOS uma opção de bloquear a interface wifi. Verifique para que esta opção esteja habilitando o funcionamento do wifi.

2.2 Usar componentes non-free
Adicionar ao arquivo que contém a lista de fontes de pacotes (/etc/apt/sources.list) o componentes non-free. A título de exemplo, a entrada poderia ficar assim:

deb http://ftp.br.debian.org/debian/ jessie main non-free

2.3 Instalar o firmware e reiniciar o computador

# apt-get update
# apt-get install firmware-iwlwifi
# reboot

2.4 Verificar se firmware está instalado e funcionando
Ao reiniciar a máquina, o wifi já deverá estar funcionando. Adicionalmente, verifique:


# lspci -v
10:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN [Kedron] Network Connection (rev 61)
	Subsystem: Intel Corporation Device 1000
	Flags: bus master, fast devsel, latency 0, IRQ 46
	Memory at e4100000 (64-bit, non-prefetchable) [size=8K]
	Capabilities: [c8] Power Management version 3
	Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [e0] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Device Serial Number 00-21-5c-ff-ff-93-61-dd
	Kernel driver in use: iwl4965

Vemos que se está se utilizando o driver “iwl4965”. Assim, fora instalado o driver e, estando agora a interface wifi funcionando, temos superado o problema da interface wifi.

3. Sobre o áudio
Inicialmente não havia áudio. A razão disso é que o status da interface está em “mudo”. Ative o áudio da seguinte maneira:

# alsamixer
Com o alsamixer, levante o volume do som e digite “M” para sair do modo “mudo”. Pronto, o som deve funcionar.
Obs: se necessário, utilize a opção F6 para selecionar o cartão de áudio.

Por último:
# alsactl store
salvando para o arquivo de configuração o corrente estado do driver relativo ao cartão de som selecionado.

Referências
1- Instalar driver de Wifi no laptop Lenovo E430 ThinkPad usando Debian
2- Instalar driver de Wifi no laptop HP Pavilion dv2040 usando Debian
3- Entendendo melhor como funcionam os drivers em máquinas Linux

Ao instalar uma imagem Debian (a que eu usei foi a versão 8 do Debian – “jessie”) no lap-top Lenovo E430 ThinkPad, nos deparamos com o problema da interface wifi não funcionar. Durante a instalação do Debian já temos a mensagem de que faltavam os firmwares rtl8168e-3.fw e bcm43xx-0.fw.

Para deixar a interface wifi funcionando precisamos instalar drivers proprietários (infelizmente!). Para isso, proceder assim:

a) Indicar os repositórios não livres
Adicionar as sessões de repositórios “contrib” e “non-free” na lista de repositórios (arquivo /etc/apt/sources.list). Um bom exemplo pode ser o seguinte arquivo sources.list:

deb http://ftp.br.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.br.debian.org/debian/ jessie main
#
deb http://security.debian.org/ jessie/updates main contrib non-free
deb-src http://security.debian.org/ jessie/updates main
#
# jessie-updates, previously known as 'volatile'
deb http://ftp.br.debian.org/debian/ jessie-updates main
deb-src http://ftp.br.debian.org/debian/ jessie-updates main

b) Instalar o firmware
Instalar 3 (três) pacotes, conforme abaixo mostrados através da figura:
Pacotes com firmware broadcom

Referências:
1- Lenovo ThinkPad Edge E530
2- Debian: Lenovo Thinkpad Edge e530 – Drivers Wifi
3- Listagem de dispositivos wireless devices com informação sobre o seu chipset, e se são suportados em Linux

4- Instalar driver de Wifi no laptop HP Pavilion dv2040 usando Debian
5- Entendendo melhor como funcionam os drivers em máquinas Linux

Este post descreve a instalação do driver para o controlador wireless do netbook Acer Aspire One Series.
Sistema Operacional: GNU/linux, Debian 6 (Squeeze)

Neste equipamento a interface wireless está em eth1.

1) Identificar o hardware wireless
$ lspci -nn | grep Network
01:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)

Interpretando:
vendor 0x14E4: Broadcom
Devide 0x4315: BCM4315/BCM22062000 Broadcom Wireless b/g

2) Identificar o driver

A Broadcam tem um driver Linux para esta placa em: http://www.broadcom.com/support/802.11/linux_sta.php
Este pacote contém device driver Broadcom’s IEEE 802.11a/b/g/n hybrid Linux® para uso com os hardwares Broadcom’s BCM4311-, BCM4312-, BCM4313-, BCM4321-, BCM4322-, BCM43224-, and BCM43225-, BCM43227- and BCM43228-based.

3) Baixar o driver e compilar

3.1) Baixar o driver (no caso, o pacote para 32bits)

minhapasta$ wget -c http://www.broadcom.com/docs/linux_sta/hybrid-portsrc_x86_32-v5_100_82_112.tar.gz

3.2) Desempacotar (no caso, o pacote de 32bits baixado)
minhapasta$ tar -vzxf hybrid-portsrc_x86_32-v5_100_82_112.tar.gz

O arquivo README que está disponível na URL do driver deve ser lido, pois trata-se um tutorial para instalação do driver.

3.3) Headers do Kernel
Se ainda não estiver com os arquivos de headers do kernel instalados, faça-o agora:
# apt-get install build-essential linux-headers-$(uname -r)

3.4) Compilador C
Se ainda não estiver com o compilador C instalado, faça-o agora:
# apt-get install gcc

3.5) Compilar o driver como um “Linux loadable kernel module” (LKM)
minhapasta# make clean
minhapasta# make

Quando a compilação estiver completa, será produzido um arquivo wl.ko
Este driver agora suporta a nova API linux de configuração sem fio cfg80211 em substituição da extensão anterior mais velhos sem fio (wext). O “makefile” automaticamente irá construir a versão correta para o sistema, mas ele pode ser
substituído se necessário:

# make API=WEXT
ou ainda
# make API=CFG80211

4) Instalar driver
4.1) Remover qualquer outro driver instalado para o Broadcom wireless device.
Existem vários outros drivers (além deste baixado) que podem controlar o Broadcom 802.11 tais como b43, BCMA e SSB. Para visualizar os drivers instalados:
# lsmod | grep "b43\|ssb\|bcma\|wl"

Se algum deste estiver instalado, remova-os:
# rmmod b43
# rmmod ssb
# rmmod bcma
# rmmod wl
# rmmod ndiswrapper

Colocar estes drivers na “blacklist” para prevenirque sejam carregados no futuro:
# echo "blacklist ssb" >> /etc/modprobe.d/blacklist.conf
# echo "blacklist bcma" >> /etc/modprobe.d/blacklist.conf
# echo "blacklist b43" >> /etc/modprobe.d/blacklist.conf

4.2) Remover uma (possível) versão do “wl” já instalado anteriormente
Se já existia uma versão anterior do wl, basta fazer o procedimento deste subitem desconsiderando os demais passos descritos neste item “Instalar”. Considerando uma versão do “wl” instalada, é necessário fazer uma transição limpa do driver mais antigo para o novo driver. O caminho para o driver anterior é normalmente /lib/modules/<kernel-version>/kernel/net/wireless. Quando da publicação deste post, o caminho era /lib/modules/2.6.32-5-686/kernel/net/wireless/

minhapasta# rmmod wl
minhapasta# mv /lib/modules/<kernel-version>/kernel/net/wireless/wl.ko /lib/modules/<kernel-version>/kernel/net/wireless/wl.ko.orig
minhapasta# cp wl.ko /lib/modules//kernel/net/wireless/wl.ko
minhapasta# depmod
minhapasta# modprobe wl

O novo driver “wl” deve estar agora operacional e está tudo feito. Não há necessidade de fazer os passos descritos nos itens 4.3 à 4.7 abaixo.

4.3) Módulo de segurança de criptografia
Caso não tenha ocorrido uma instalado de um driver “wl” anteriormente, será necessário adicionar um módulo de segurança antes da utilização deste módulo “wl”. De uma maneira geral, os sistemas atuais usam o “lib80211”.
# modprobe lib80211

4.4) Carregar módulo de API cfg80211
# modprobe cfg80211

4.5) Carregar driver
# insmod wl.ko

O novo driver “wl” deve estar agora operacional e está tudo feito. Pode demorar alguns segundos para o “Network Manager” perceber que um novo driver de rede foi instalado e poder mostrar as redes wireless disponíveis.

4.6) Back up o corrente boot ramfs e gerar um novo
minhapasta# cp /boot/initrd.img-`uname -r` somewheresafe
minhapasta# update-initramfs -u
minhapasta# reboot

4.7) Diretório de módulos do kernel
Copiar o módulo gerado para o diretório de módulos do kernel e criar as dependências:

minhapasta# cp wl.ko /lib/modules/`uname -r`/kernel/drivers/net/wireless
minhapasta# depmod -a

5) Conectando em Redes Sem Fio no Linux
Esta parte do tutorial é referente a como fazer a conexão em redes sem fio que utilizem ou não proteção (WEP e WPA), tudo por linha de comando no GNU/Linux.

5.1) Parar o gerenciador de rede
Deve-se parar o processo do gerenciador de rede caso este esteja sendo utilizando. Por exemplo, os gerenciadores de rede “Network Manager” ou “Wicd”. Aproveitaremos para mostrar sua desativação completa para que não seja mais iniciado durante o boot:

# /etc/init.d/network-manager stop
# update-rc.d -f network-manager remove

5.2) Habilitar a interface de rede
# ifconfig eth1 up

5.3) Rede Aberta
Para conectar quando é uma rede aberta, ou seja, sem nenhuma criptografia, basta o seguinte comando:
# iwconfig eth1 essid WIFI

5.4) Rede com Criptografia WEP
Se a rede tiver criptografia WEP, para conectar execute o seguinte comando:
# iwconfig eth1 essid WIFI key SENHA

5.5) Rede com Criptografia WAP
Mas se a rede estiver com criptografia WPA, conforme foi mostrado no escaneamento de rede, para conectar execute os seguintes comandos:
# wpa_passphrase WIFI SENHA > /etc/wpa_supplicant/wpa_supplicant.conf
# wpa_supplicant -i eth1 -c /etc/wpa_supplicant/wpa_supplicant.conf -B -D wext

5.6) Finalmente solicitar o IP para navegação
# dhclient wlan0

Links:
1- Broadcom BCM4312 com driver nativo do Linux
2- Conectando em Redes Sem Fio no Linux

Neste post vamos registrar um pequeno roteiro com o objetivo de descrever a instalação do Debian através de um pendrive, conectado na porta USB do computador.

1. Obter as imagens para o pendrive

Será necessário baixar dois arquivos e disponibilizá-los no pendrive. Através do endereço http://www.debian.org/distrib/netinst tem-se acesso aos dois arquivos necessários:

a) Imagem de boot, necessário para fazer a carga inicial através do pendrive
Esta imagem será obtida clicando na opção “CDs minúsculos, pendrives, etc -> amd64” (para máquinas 64 bits, ou fazendo uso da opção i386 para máquinas 32 bits). Uma página será mostrada e que conterá uma coluna chamada “Directory”. Nesta coluna, deve-se clicar em “hd-media” e baixar o arquivo “boot.img.gz”. Este é um arquivo comprimido de 35 MB, com os arquivos de boot para cartão de memória USB (pendrive), e será o responsável por realizar o boot no pendrive. Após descompactado, será gerado o arquivo “boot.img” de aproximadamente 1GB.

b) Imagem ISO do Debian
Esta imagem será obtida clicando na opção “CDs Pequenos -> amd64” (para máquinas 64 bits, ou fazendo uso da opção i386 para máquinas 32 bits). Ao ser clicado, fornecerá o download direto da imagem de instalação do Debian (modalidade NetInst). Como dispunha de um pendrive de 2GB, utilizei a versão de arquivo de imagem de 230MB. No caso, para a versão Debian disponível no momento em que escrevera este post, o arquivo disponível era “debian-6.0.4-amd64-netinst.iso” . Para pendrives menores, utilize a opção da versão até 40MB de imagem (imagem businesscard).

Como optamos por utilizar uma imagem com uma parte do Debian (exigido para começar o processo de instalação), será necessário uma conexão com a internet para complementar a instalação.

2. Transferir os arquivos para o pendrive

a) Considerando o arquivo “boot.img.gz”
Descompacte o arquivo “boot.img.gz” através do comando a seguir:

$ gunzip boot.img.gz

Instale a imagem no pendrive. O pendrive deverá estar montado. Considerando que o pendrive seja o dispositivo /dev/sdb (cuidado: isso irá variar de computador para computador), os comandos a serem emitidos serão os seguintes:

$ dd if=boot.img of=/dev/sdb
$ sync

OBS: Para certificar-se para qual dispositivo foi o ‘pendrive’ USB mapeado, pode-se recorrer ao comando dmesg ou mount depois de ter inserido o pendrive:

$ mount
/dev/sdb on /media/Debian Inst type vfat (rw,nosuid,nodev,uhelper=udisks,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush)

No caso, observa-se que existe um pendrive, formatado com vfat, montado (/dev/sdb).
Agora é uma boa idéia para remover o pendrive e voltar a reconectá-lo ao dispositivo USB para que a nova partição e sua estrutura seja reconhecida pelo sistema Linux. Isso atualiza a tabela de partição das unidades armazenadas pelo udev.

b) Considerando o arquivo “debian-6.0.4-amd64-netinst.iso”
Simplesmente copie este arquivo para a pasta raiz do pendrive.

Após isto, desmonte e remova o pendrive. Ele está pronto para ser utilizado. A pasta raiz do pendrive deverá conter os seguintes arquivos:

$ tree
.
|-- adgtk.cfg
|-- adtxt.cfg
|-- debian-6.0.4-amd64-netinst.iso
|-- disk.lbl
|-- exithelp.cfg
|-- f10.txt
|-- f1.txt
|-- f2.txt
|-- f3.txt
|-- f4.txt
|-- f5.txt
|-- f6.txt
|-- f7.txt
|-- f8.txt
|-- f9.txt
|-- g2ldr
|-- g2ldr.mbr
|-- gtk.cfg
|-- initrdg.gz
|-- initrd.gz
|-- ldlinux.sys
|-- linux
|-- menu.cfg
|-- prompt.cfg
|-- rqgtk.cfg
|-- rqtxt.cfg
|-- setup.exe
|-- splash.png
|-- stdmenu.cfg
|-- syslinux.cfg
|-- txt.cfg
|-- vesamenu.c32
`-- win32-loader.ini

3. Executar o boot pelo pendrive e instalar o Debian
Com o computador desligado, insira o pendrive na interface USB e ligue a máquina. Através da BIOS, configure para que a sequência de boot tenha como primeira opção a interface USB-pendrive (os termos utilizados nas BIOS para designar o boot a partir do dispositivo USB não são padronizados: as vezes “Removable Drive”, “USB-ZIP” e outros).
OBS: algumas BIOS mais antigas não permitem fazer esta configuração.

Para entrar na BIOS e configurá-la, deve-se quando o computador iniciar apertar a tecla “Delete” (na maior parte das vezes, mas isto pode variar de computador para computador. Consulte a documentação de hardware para saber a combinação de teclas exata).

Referências
1- Preparar Ficheiros para iniciar a partir de USB Memory Stick
2- Seleção de Dispositivo Para Boot
3- Como instalar o Debian a partir de pendrive

Tutorial editor vi

Publicado: 30/09/2011 em Linux, Programação
Tags:, , ,

O editor “vi”, sigla para “Visual Interface”, fora criado no começo da década de 80, e ainda é nos dias atuais um dos editores de textos mais utilizados no mundo Unix.  O vi possui vários modos, ou seja, estados em que ele se encontra. São eles: modo de inserção, comandos, linha de comando, visual, busca e reposição. Abordaremos os dois principais, o de inserção e de comandos.

1) Para executar o vi:
– ao executar o vim, ele inicia diretamente em modo de comando.
$ vi => Abre o vi vazio, sem nenhum arquivo e exibe a tela de apresentação.
$ vi arquivo => Abre o arquivo de nome “arquivo”.
$ vi arquivo + => Abre o arquivo de nome “arquivo”, com o cursor no final do mesmo.
$ vi arquivo +5 => Abre o arquivo de nome “arquivo”, com o cursor no início da linha 5.
$ vi arquivo +/squeeze => Abre o arquivo de nome “arquivo”, com o cursor no início da primeira linha que ocorre a palavra “squeeze”.

2) Para ter o help:
tecle <F1>

3) Inserindo texto:
– para começar a escrever, estando em modo de comando, pressione “i” em seu teclado. O vi entra em modo de inserção. Edite normalmente.
A => Insere o texto no fim da linha onde se encontra o cursor
o => Adiciona uma linha vazia abaixo da linha corrente, e entra no modo de inserção.
O => Adiciona uma linha vazia acima da linha corrente, e entra no modo de inserção.

4) Salvando o arquivo editado e saindo do vi:
– primeiro saia do modo de inserção através da tecla <ESC>, e use um dos seguintes comandos:
:w => Salva o arquivo que está sendo editado no momento (mas não sai do vi);
:q => Sai sem salvar.
:wq => Salva e sai.
: x => Salva e sai.
ZZ => Idem.
:w! => Salva forçado.
:q! => Sai forçado, mas não salva.
:wq! => Salva e sai forçado.

5) Apagando o texto
– <Delete> apagar caracteres da linha atual do cursor
– <x>  apagar o caractere onde o cursor estiver
– <dw> remover até o final de uma palavra
– <D>  apagar a linha a partir da posição do cursor até seu final
– <dd> remover a linha atual do cursor

6) Copiar e Colar
– <yy>  copiar a linha onde o cursor se encontra
– <5yy> copiar as próximas 5 linhas a partir da posição atual do cursor
– <p>   colar o que foi copiado na linha abaixo do cursor atual
– para inserir um texto da área de transferência externa ao “vi”, entrar no modo inserção e executar <ctrl><shift><v>
7) Desfazendo ações:
– <u>, para desfazer o último comando
– <ctrl><u>, para desfazer sucessivamente os últimos comandos

8 ) Subcomandos para movimentação pelo texto:

H => Move o cursor para a primeira linha da tela.
M => Move o cursor para o meio da tela.
L => Move o cursor para a última linha da tela.
w => Move o cursor para o início da próxima palavra (não ignorando a pontuação).
W => Move o cursor para o início da próxima palavra (ignorando a pontuação).
b => Move o cursor para o início da palavra anterior (não ignorando a pontuação).
B => Move o cursor para o início da palavra anterior (ignorando a pontuação).
0 (zero) => Move o cursor para o início da linha corrente.
$ => Move o cursor para o fim da linha corrente.
G => Move o cursor para a última linha do arquivo.
Ctrl + f => Passa para a tela seguinte.
Ctrl + b => Passa para a tela anterior.

Links:
Editor vi

Este post se refere ao computador LG R590-U.BE53P1, tipo 5200.

Vem sendo de certa forma comum existir desconfortos para encontrar drivers Linux para as máquinas. Isto vale para o adaptador ethernet, wireless, áudio e vídeo, principalmente estes. Vamos tratar cada procedimento adotado para deixar este computador da LG funcionando corretamente com o Linux, distribuição Debian.

 

1. Configurando a interface wireless Realtek no LG R590 no Debian
Quando da instalação do sistema operacional, já fora detectada a falta de um firmware no repositório Debian, conforme reprodução abaixo de parte da mensagem que fora mostrada naquele momento no terminal:

“parte de seu hardware precida de arquivos de firmware não-livre para funcionar. Os arquivos de firmware que estão faltando são: rtlwifi/rtl8192sefw.bin”.

Ao final da instalação, pode-se observar que a interface wifi ainda não se encontra funcionando. Como veremos adiante, o firmware faltante que fora detectada pelo BIOS é justamente relativo a controladora wifi da máquina.

1.1) Primeiros passos – a identificação
a) Listar as PCI existentes
O utilitário lspci mostra informações sobre os barramentos PCI da máquina e sobre os “devices” conectados a estes.

$ lspci -v
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)
	Subsystem: Quanta Microsystems, Inc Device 0308
	Flags: fast devsel, IRQ 16
	I/O ports at 3000 [size=256]
	Memory at d8100000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: 

Pelo quadro acima vemos que a informação de driver em uso não aparece. Confirmando que falta este firmware. O “device” foi percebido, mas está sem uso em função da inexistência do software de firmware.
$ lspci -nn
02:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller [10ec:8172] (rev 10)

Relembrando, conforme post “Entendendo os drivers Linux para arquitetura de barramento PCI“: a identificação de um dispositivo PCI é realizada através de 32 bits, da seguinte maneira:
dddd:bb:dd.f onde:
– cada domínio é identificado por 16 bits (“dddd”), podendo receber até 256 barramentos;
– cada barramento é identificado por 8 bits (“bb”), podendo receber até 32 dispositivos;
– cada dispositivo é identificado por 5 bits (“dd”), podendo existir até 32 dispositivos em cada barramento PCI;
– a função de cada dispositivo é identificado por 3 bits (“f”), podendo existir até 8 funções.

Logo, interpretando o caso acima, temos na máquina afeta uma controladora de rede no barramento número 02, identificada como o device número 00 deste barramento. Fazendo a leitura completa da saída do comando lspci, pode-se ver que esta máquina tem 5 barramentos identificados por 00, 01, 02, 03 e ff.

A tabela de dispositivos pci lidos a partir do BIOS está em /sys/bus/pci/devices/. No caso deste controlador de rede, suas informações podem ser obtidas em /sys/bus/pci/devices/0000:02:00.0/. Daí, usando-se os dois comandos abaixo:
$ cat /sys/bus/pci/devices/0000:02:00.0/vendor
$ cat /sys/bus/pci/devices/0000:02:00.0/device

pode-se tirar:
– o “vendor” identifica que o fabricante do hardware: é informado 0x10ec (e do sitio PCI Vendor and Device Lists vemos que este número identifica a Realtek Semiconductor Co., Ltd.)
– o “device” é onde o fabricante do hardware informa qual a identificação do dispositivo: é informado 0x8172 (e do sitio PCI Vendor and Device Lists vemos que este número identifica o device “Single-Chip IEEE 802.11b/g/n 1T2R WLAN Controller with PCI Express Interface”).

O circuito integrado (CI) em chip único Realtek RTL8191SE, é um CI MIMO (“Multiple In, Multiple Out”) que implementa solução Wireless LAN (WLAN) com especificação 802.11n (com suporte à IEEE 802.11b and 802.11g) trabalhando na banda de 2.4GHz. Ele integra um MAC, uma capacidade de banda básica 1T2R, e RF em um único “chip”. O RTL8191SE fornece uma solução completa de um cliente “wireless” de alta performance.

Indo ao sitio da Realtek, há como baixar drivers para Linux para este dispositivo. Escolha no menu: Communications Network ICs -> Wireless Lan ICs -> Wlan NIC -> IEEE 802.11b/g/n Single-Chip -> Software -> RTL8192SE e baixe o arquivo correspondente ao seu kernel. No caso do kernel 3.2.60, o arquivo a ser baixado é o 92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz. Para o kernel anterior ao 2.6.24, o arquivo a ser baixado é o rtl819se_linux_2.6.0019.1207.2010.tar.gz.

1.2) Debian 6 (Squeeze)
Acessando os softwares de firmware do CI Realtek, e considerando que o kernel em uso na máquina é o 2.6.23, deve-se baixar o arquivo rtl819se_linux_2.6.0019.1207.2010.tar.gz que contém o driver adequado.

O arquivo baixado deve ser desempacotado e compilado. Certifique-se que sua máquina tem instalado os seguintes aplicativos:

# apt-get install linux-headers-$(uname -r)
# apt-get install gcc
# apt-get install make
# apt-get install binutils

É importantíssimo que a mesma versão do compilador (gcc) que foi utilizado para gerar  o kernel Linux também seja utilizada para compilar os drivers.  Proceda da seguinte maneira:

a) Verificar a versão do gcc utilizada pelo kernel:

$ cat /proc/version
Linux version 2.6.23-5-amd64 (Debian 2.6.23-38) (ben@decadent.org.uk) (gcc version 4.3.5 (Debian 4.3.5-4)

Vemos que a versão do gcc utilizada para compilar o kernel foi a versão 4.3.

b) verificar a versão em uso na máquina:
$ gcc -v
gcc version 4.4.5 (Debian 4.4.5-8)

ou através de:

$ cd /usr/bin
/usr/bin$ ls -l gcc*
lrwxrwxrwx 1 root root gcc -> gcc-4.4
-rwxr-xr-x 1 root root gcc-4.4
-rwxr-xr-x 1 root root gcc-4.3

Logo, observamos uma diferença.  Se a máquina não estiver com o gcc-4.3 instalado, faça sua instalação (pode ser facilmente através do Synaptic). Em seguida, execute:


/usr/bin# rm gcc
/usr/bin# ln -s gcc-4.3 gcc

Para certificar-se, visualize agora qual o compilador gcc que está ativo:
$ gcc -v
gcc version 4.3.5 (Debian 4.3.5-4)

Só então execute os seguintes comandos:


$ tar -xvzf rtl819se_linux_2.6.0019.1207.2010.tar.gz
$ cd rtl819se_linux_2.6.0019.1207.2010
$ make
# make install
Reinicie o computador agora....

OBS:
a) O módulo tem que ser recompilado toda vez que o número do kernel linux mudar.
b) O driver usa wlan0, e utilizando o comando lspci obtem-se DEVICE 8172 na linha 02:00.0. Se mostrado na linha 03:00.0 poderá também ser wlan1.
c) Em caso de necessidade de suporte quanto ao funcionamento do driver, pode ser tentado ajuda através do email wlanfae@realtek.com

1.3) Debian 7 (Wheezy)
Ao seguir o roteiro acima, baixando o arquivo 92ce_se_de_linux_mac80211_0005.1230.2011.tar.gz já que no momento o kernel da máquina 3.2.60, e seguindo os mesmos passos descritos para o Debian 6, após o reboot da máquina esta estará com a interface wifi funcionando normalmente.

Observe agora que a saída do comando lspci indica qual o driver em uso:

$ lspci -v
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8191SEvB Wireless LAN Controller (rev 10)
	Subsystem: Quanta Microsystems, Inc Device 0308
	Flags: bus master, fast devsel, latency 0, IRQ 16
	I/O ports at 3000 [size=256]
	Memory at d8100000 (32-bit, non-prefetchable) [size=16K]
	Capabilities: 
	Kernel driver in use: rtl8192se

1.4) Debian 8 (Jessie)
Mais fácil ainda. Basta:
a) colocar em /etc/apt/sources.list a seção non-free. Por exemplo, algo assim:
deb http://ftp.br.debian.org/debian/ jessie main non-free
b) atualizar:
# apt-get update
c) instalar pacote de firmware (por linha de comando ou utilizando o synaptic):
# apt-get install firmware-realtek
d) reiniciar a máquina
# reboot

Pronto, a interface wifi deverá estar funcionando.

1.5) Comandos úteis
a) verificar se a placa wifi está bloqueada:
# rfkill list wlan (para wifi)
# rfkill list all (para wifi e bluetooth)

obs: inicialmente, fazer a instalação do aplicativo (apt-get install rfkill)
Se tudo estiver desbloqueado uma resposta do tipo deve ser fornecida:

1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
7: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no

 


b) desbloquear a placa (caso esteja bloqueada):
# rfkill unblock wlan (para wifi)
# rfkill unblock all (para wifi e bluetooth)
# /etc/init.d/network-manager restart (reiniciar a rede)

2. Configurando o adaptador de video Nvidia Geforce GT335M no Debian

O lap-top LG modelo LGR58 vem equipado com um processador gráfico NVIDIA GeForce da serie 300M (modelo GeForce GT 335M – mobile), com 1GB de memória dedicada.

# lspci -v

01:00.0 VGA compatible controller: NVIDIA Corporation GT215 [GeForce GT 335M] (rev a2) (prog-if 00 [VGA controller])
	Subsystem: LG Electronics, Inc. Device 0832
	Flags: bus master, fast devsel, latency 0, IRQ 16
	Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	Memory at d0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 4000 [size=128]
	Expansion ROM at d3080000 [disabled] [size=512K]
	Capabilities: [60] Power Management version 3
	Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
	Capabilities: [78] Express Endpoint, MSI 00
	Capabilities: [b4] Vendor Specific Information: Len=14 <?>
	Capabilities: [100] Virtual Channel
	Capabilities: [128] Power Budgeting <?>
	Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
	Kernel driver in use: nouveau

 

Observe que está sendo utilizado o driver genérico “nouveau” para esta interface, e não o driver especializado da própria Nvidea.

a) Faça o download do driver do produto Geforce GT335M, diretamente do sitio da Nvidia.

b) Desinstalar o driver da Nouveau

A distribuição Debian já vem com um driver alternativo e aberto Nouveau para controladoras de vídeo da nVidia (Driver Open Source de Aceleração para placas nVidia) incluído no seu kernel Linux. O Fedora 11 já inclui este driver e a Canonical incluiu também no Ubuntu 10.04. A distribuição Debian também vem disponibilizando este driver em seus repositórios. O projeto nouveau visa à construção de drivers de código aberto de alta qualidade para placas nVidia. “Nouveau” [nuvo] em francês significa “novo”.

Preferi usar o próprio driver fornecido pela nVidea. Neste caso, devemos desinstalar os pacotes Nouveau:

Utilize o Synaptic e marque para desinstalar os pacotes nouveau:
libdrm-nouveau1a
libdrm-nouveau1a:i386
xserver-xorg-video-nouveau-dbg

Adicione ao arquivo (ou crie este arquivo se ainda não existir) /etc/modprobe.d/blacklist.conf as seguintes linhas:
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv

Agora reinicie o computador. Isto fará com o que o driver nouveau ainda em uso não seja mais utilizado. Após a reiniciação, verifique se realmente o driver nouveau não mais está obtendo a seguinte resposta ao comando abaixo:
# lshw -c video | grep 'configuration'
configuration: latency=0

c) Saia do servidor X (abra um terminal em modo texto – por exemplo, através de ctrl+alt+F1) e cancele todas aplicacoes OpenGL:

# /etc/init.d/gdm stop (se está usando gdm) ou
# /etc/init.d/gdm3 stop (se está usando gdm3)
# /etc/init.d/lightdm stop (se está usando o lightdm)

OBS: o gerenciador de login (para detalhes veja o post Gerenciadores de login no Debian) que está em uso pode ser facilmente identificado através de duas formas:
– pelo comando: $ cat /etc/X11/default-display-manager

– pela leitura do deamon ativo no sistema:

$ ps -A | grep gdm para saber se está usando gdm ou gdm3; ou
$ ps -A | grep lig para saber se está usando lightdm; ou
$ ps -A | grep kdm para saber se está usando kdm

d) Mude para a pasta contendo o driver, fazendo o arquivo baixado ter privilégios de ser executado:
# chmod +x NVIDIA-Linux-x86-256.44.run (para versão 32 bits), ou
# chmod +x NVIDIA-Linux-x86_64-340.32.run (para versão 64 bits)

e) Se ainda nao tiver instalado os arquivos listados abaixo, faça-o agora:

# apt-get install linux-headers-$(uname -r)
# apt-get install gcc
# apt-get install make
# apt-get install binutils

f) Por seguranca, faça uma cópia da configuração do servidor X:
#cp /etc/X11/xorg.conf /etc/X11/xorg.conf-original

g) Fazer a instalação do driver:
# ./NVIDIA-Linux-x86_64-340.32.run (para versão 64 bits)
O arquivo .run e’ um arquivo de auto extracao. Quando executado, ele extrai os conteúdos do arquivo e executa o utilitário nvidia-installer, o qual provê uma interface iterativa para o usuário fazer a instalação. Após a instalação reinicie o computador.

h) Verificar se o driver nvidia realmente está em uso
Após reiniciar o computador, verifique se o driver em uso é o nvidea:
– verificação-1: pelo comando abaixo, obtendo a seguinte resposta:
# lshw -c video | grep 'configuration'
configuration: driver=nvidia latency=0

– verificação-2: pelo comando lspci, obtendo a seguinte resposta:

# lspci -v

01:00.0 VGA compatible controller: NVIDIA Corporation GT215 [GeForce GT 335M] (rev a2) (prog-if 00 [VGA controller])
	Subsystem: LG Electronics, Inc. Device 0832
	Flags: bus master, fast devsel, latency 0, IRQ 44
	Memory at d2000000 (32-bit, non-prefetchable) [size=16M]
	Memory at c0000000 (64-bit, prefetchable) [size=256M]
	Memory at d0000000 (64-bit, prefetchable) [size=32M]
	I/O ports at 4000 [size=128]
	[virtual] Expansion ROM at d3080000 [disabled] [size=512K]
	Capabilities: [60] Power Management version 3
	Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
	Capabilities: [78] Express Endpoint, MSI 00
	Capabilities: [b4] Vendor Specific Information: Len=14 <?>
	Capabilities: [100] Virtual Channel
	Capabilities: [128] Power Budgeting <?>
	Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
	Kernel driver in use: nvidia

i) Alguns problemas que podem ser encontrados
i.1) se a versão do compilador GCC do kernel for diferente da versão do compilador instalado em seu sistema, quando desta etapa do procedimento de instalação  do driver ocorrerá uma mensagem de aviso e parada para o usuário abortar ou continuar a instalação.  No meu caso, a mensagem informava que o kernel usou o GCC4-3 e a versão atual é a GCC4-4. Por segurança, é melhor abortar e fazer a instalação do driver com a versão do compilador GCC compatível com a utilizada para compilar o kernel.  Para isto proceda da seguinte forma:

  • instale a versão do GCC 4-3 (utilize o synaptic, por exemplo)
  • verifique a versão do gcc atual:
    $gcc -v
    gcc version 4.4.5 (Debian 4.4.5-8)
  • verifique o local do compilador GCC.$ which gcc
    /usr/bin/gcc

    onde poderá se observar que gcc não passa de um link simbólico para o arquivo -> gcc-4.4
  • crie uma variável de ambiente CC, com valor de GCC4-3, pois no processo de instalação do driver esta será consultada e utilizada:
    # CC=gcc-4.3
    # export CC

Os comandos acima determinam que o conteúdo da variável CC é gcc-4.3, e o export CC é para tornar a variavel CC global  e poder ser visualizada em todos shells.
Para certificar-se, visualize o conteúdo da variável CC através do comando:
# env
Agora sim, dê início a instalação do driver novamente.

i.2) Se obtiver uma mensagem de erro relativo a não encontrar o apontador da árvore do kernel, proceda da seguinte forma:
# cd /usr/src
/usr/src# ln -s linux-headers-3.6.3-amd64/ linux

OBS: no caso acima para o kernel em uso que era o 3.6.3-amd64

i.3) Uma possível configuração para usar a interface RGB para um projetor: use o comando abaixo dentro do X (ou seja, com a interface gráfica sendo executada).
# nvidia-settings
Configure o que for necessário para o /etc/X11/xorg.conf e salve as modificações. Depois reinicialize o X e vai dar certo.

No meu caso, para ter a saída de vídeo reproduzida numa TV através da interface RGB fiz a seguinte configuração:

  • configuração para a tela do laptop LGD (DFP-0 on GPU-0):
    Configuration: TwinView
    resolução: 1024 x 768 60Hz
    position: absolute
  • configuração para o monitor TV LG Electronics LG TV (CRT-0 on GPU-0):
    Configuration: TwinView
    resolução: 1024x768 Auto
    Position: Clones

3. Mais informações:
1- Pacote Debian AMD64, ia64 ou i386 para Intel i5?
2- Blog do Jairo Sanches – Atheros AR8131 no Linux
3- To install Debian testing
4- Instalar o driver wireless RTL8191/8192SE
5- NVIDIA GeForce
6- Repositorios Debian
7- Migrando o Debian para o Squeeze
8- Debian Sources List Generator
9- Nouveau: driver open source de aceleração para placas nVidia
10- Como usar o o driver alternativo e aberto Nouveau
11- Debian – Package firmware-realtek
12- Entendendo melhor como funcionam os drivers em máquinas Linux
13- HDMI Audio on NVIDIA GPUs

O processo de recuperar a senha do root é muito simples.

Reinicie a máquina. Quando entrar no grub, selecione a imagem do boot que você utiliza. Tecle “e” para editar.

Apague tudo que estiver depois da partição do root. Insira “rw init=/bin/bash”;
Exemplo:

antes:
“kernel /boot/vmlinuz-2.6.18.3 root=/dev/hda5 ro vga=791″
depois:
“kernel /boot/vmlinuz-2.6.18.3 root=/dev/hda5 rw init=/bin/bash”

Tecle Enter.
Obs: as alterações realizadas não serão salvas no arquivo de configuração do Grub, servirão apenas para este boot.
Tecle “b” para fazer o boot com as novas configurações.

O sistema irá iniciar em modo monousuário, não pedirá senha.
Após iniciar basta usar o comando “passwd” para escolher a nova senha para o root e reiniciar a máquina.

    Veja outras informações em…

Blog do Bueno