Falta agora automatizar as coisas, fazendo com que o comando seja executado automaticamente durante o boot. Existem várias formas de fazer isso. Você poderia desde criar um ícone no desktop até adicionar o comando no final do arquivo “/etc/init.d/rc.local”. Entretanto, a solução mais correta é fazer com que o sistema estabeleça a conexão ao ativar as interfaces de rede.
Se você usa o Ubuntu, Kubuntu ou qualquer outra distribuição derivada do Debian, abra o arquivo “/etc/network/interfaces“. Adicione as duas linhas abaixo, contendo os parâmetros do wpa_supplicant, no final do arquivo. Note que agora adicionamos também a opção “w”, específica para uso em scripts de inicialização:
pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -wB -D wext
post-down killall -q wpa_supplicant
Lembre-se de substituir o “wlan0” e “wext” pelos parâmetros corretos no seu caso. Para que fique tudo certo, o arquivo deve conter também uma seção com os endereços usados pela placa. Veja um exemplo de arquivo completo:
# /etc/network/interfaces
auto lo wlan0
iface lo inet loopback
iface wlan0 inet static
address 192.168.1.56
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -wB -D wext
post-down killall -q wpa_supplicant
Como de praxe, ao usar esse exemplo como modelo, preste atenção para substituir todos os “wlan0” pela interface correta no seu caso e ajustar os endereços de acordo com a configuração da sua rede.
Como pode ver, a primeira linha indica a localização do arquivo de configuração do wpa_supplicant. Se você ainda não o criou, aproveite para fazê-lo usando o comando que vimos há pouco: wpa_passphrase minharede minhapassphrase > /etc/wpa_supplicant.conf.
Se o ponto de acesso foi configurado para esconder o SSID e você só consegue se conectar à rede usando o comando manual do iwconfig, adicione a linha “wireless-essid casa” (onde o “casa” é o SSID desejado) na seção com a configuração da interface de rede, como em:
iface wlan0 inet static
address 192.168.1.56
etmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254
wireless-essid casa
pre-up wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -wB -D wext
post-down killall -q wpa_supplicant
No Fedora, o wpa_supplicant roda como um serviço de rede, que é configurado através do arquivo “/etc/sysconfig/wpa_supplicant“. Ele é criado automaticamente quando o pacote é instalado, com o seguinte conteúdo:
# wlan0 and wifi0
# INTERFACES=”-iwlan0 -iwifi0″
INTERFACES=”-iwlan0″
# ndiswrapper and prism
# DRIVERS=”-Dndiswrapper -Dprism”
DRIVERS=”-Dndiswrapper”
Como pode ver, o arquivo contém a interface que deve ser monitorada e o driver que deve ser usado. Você precisa apenas editá-lo, de forma a incluir as informações corretas. Os comentários são apenas para informação e podem ser removidos, como em:
# /etc/sysconfig/wpa_supplicant
INTERFACES=”-iwlan0“
DRIVERS=”-Dwext“
Falta agora editar o arquivo “/etc/wpa_supplicant/wpa_supplicant.conf“, que é usado pelo serviço para armazenar a configuração. Ele é também criado ao instalar o pacote, inicialmente com o seguinte conteúdo:
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid=”any”
key_mgmt=NONE
}
Use o comando “wpa_passphrase minharede minhapassphrase” para gerar a configuração apropriada para a sua rede e insira as linhas no arquivo, sem apagar as duas primeiras, como em:
# /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=wheel
network={
ssid=”minharede”
psk=24b0d83ee1506019e87fcf1705525ca60abbd9b24ac5bedf183620d0a22ab924
}
Depois de feita a configuração, use o comando “service wpa_supplicant restart” para reiniciar o serviço, de forma que as alterações sejam aplicadas. Aproveite também para certificar-se de que ele será carregado durante o boot, usando o comando chkconfig:
# service wpa_supplicant restart
# chkconfig wpa_supplicant on
Concluindo, falta apenas editar o arquivo com a configuração da placa de rede, dentro da pasta “/etc/sysconfig/network-scripts”. Se a interface wireless é a “wlan0”, o arquivo será o “/etc/sysconfig/network-scripts/ifcfg-wlan0”.
Ele deve conter as linhas “ONBOOT=yes”, “Type=Wireless” e “MODE=Managed”, como em:
#/etc/sysconfig/network/network-scripts/ifcfg-wlan0
DEVICE=wlan0
IPADDR=192.168.1.21
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
BOOTPROTO=static
ONBOOT=yes
Type=Wireless
MODE=Managed
ou:
#/etc/sysconfig/network/network-scripts/ifcfg-wlan0
DEVICE=wlan0
BOOTPROTO=dhcp
ONBOOT=yes
Type=Wireless
MODE=Managed
Se você precisar indicar manualmente o SSID da rede, evitando o bug do wpa_supplicant ao se conectar em pontos de acesso que não divulgam o SSID, adicione também a linha “ESSID=xxxx”, como em:
#/etc/sysconfig/network/network-scripts/ifcfg-wlan0
DEVICE=wlan0
BOOTPROTO=dhcp
ONBOOT=yes
Type=Wireless
MODE=Managed
ESSID=minharede
Ao editar o arquivo, não se esqueça de reiniciar o serviço responsável pela configuração das interfaces para que a nova configuração seja carregada:
# /etc/rc.d/init.d/network restart
Uma observação importante é que, ao ser configurado para rodar em background, o wpa_supplicant ficará o tempo todo tentando se conectar às redes wireless configuradas. Se você quiser se conectar a uma rede cabeada, deverá (além de configurar a rede), desativar o wpa_supplicant, usando o comando:
# service wpa_supplicant stop