Como posso fazer com que o WOL funcione no Ubuntu de 64 bits?
É uma situação estranha. O hardware é um ASUS G75VW 3D altamente modificado. O Windows e o Ubuntu de 32 bits funcionam bem para o Wake on LAN. A placa-mãe tem um papel menor aqui, tendo apenas algumas configurações de economia de energia que eu desativei no BIOS para permitir o WOL. Em seguida, a NIC precisa ser configurada. No Windows, essa é uma configuração única e funciona muito bem. No Ubuntu 32 bits, usei um gatilho rc.local
para ethtool
e funcionou muito bem.
No Ubuntu de 32 bits, a placa de rede aparece como eth0
, como se poderia esperar. Em 64 bits, ele é renomeado para enp4s0
. Eu sei que ele é renomeado porque eu verifiquei dmesg
, que também diz por que meu script rc.local não altera o wol
de d
para g
em ethtool
:
[ 1.624275] atl1c 0000:04:00.0 enp4s0: renamed from eth0
[ 3.821446] IPv6: ADDRCONF(NETDEV_UP): enp4s0: link is not ready
[ 3.822431] atl1c 0000:04:00.0: atl1c: enp4s0 NIC Link is Up<1000 Mbps Full Duplex>
tudo bem. Eu posso lidar com o link não estar pronto, colocá-lo em um temporizador ou algo assim para mais tarde. Mas se eu configurá-lo manualmente, ethtool diz que está mostrando wol g para o cartão
Supports Wake-on: pg
Wake-on: g
Por algum motivo, isso é redefinido quando eu desligo o computador, porque o pacote mágico wol não acorda o computador mesmo depois disso.
Teste
Eu testei muitas coisas. Primeiro, o gatilho wol não funciona se o laptop tiver sido desconectado, mesmo que por um breve período. Ele funciona se o cabo ethernet foi desconectado e conectado novamente. O disparador wol está claramente sendo definido quando o sistema é desligado, pois se eu desligar o ubuntu de 32 bits e trocar os discos rígidos sem desconectá-los, posso usar o ubuntu em 64 bits.
Suspeito que tenha algo a ver com os controladores, mas não sei onde os obter, se for esse o caso. Então, novamente, posso apenas executar o driver de 32 bits em 64 bits e acabar com isso? Eu tenho bibliotecas de 32 bits na máquina para outros fins.
Não consigo resolver isso executando o Ubuntu de 32 bits, porque eu executo as JVMs na máquina que exigem uma grande quantidade de RAM (além do limite de 32 bits).
Para os documentos de ajuda do ubuntu , removi network-manager
e tentei configurar a conexão com ifup
( daqui ). Infelizmente, o ifup não reconheceu a interface. Aqui estava o conteúdo do meu arquivo /etc/network/interfaces
em 64 bits.
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
Não sei por que minha placa wireless e a placa ethernet não foram listadas lá. Aqui está ifconfig -a
.
enp4s0 Link encap:Ethernet HWaddr 10:bf:48:19:08:b4
inet addr:192.168.1.91 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::12bf:48ff:fe19:8b4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:505 errors:0 dropped:0 overruns:0 frame:0
TX packets:289 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:1000
RX bytes:48646 (48.6 KB) TX bytes:38816 (38.8 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:57 errors:0 dropped:0 overruns:0 frame:0
TX packets:57 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:8091 (8.0 KB) TX bytes:8091 (8.0 KB)
wlp3s0 Link encap:Ethernet HWaddr c4:85:08:70:7d:7b
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Então, por uma postagem no fórum , adicionei enp4s0
manualmente ao arquivo de interfaces de rede. Agora parece:
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto enp4s0
iface enp4s0 inet dhcp
Então o ifup funcionou. Eu não sei se fiz certo, mas tudo que fiz foi digitar:
ifup enp4s0
Tudo ainda funcionou e ainda consegui SSH depois de reiniciar, então acho que ainda não quebrei minha placa ethernet. Eu realmente não sei o que estou fazendo aqui pessoal e estou me agarrando a palhas.
Eu li um pouco mais abaixo na página de ajuda e percebi que ignorava o link para um bug .
Seguindo a solução alternativa, adicionei um script a rc6.d
e rc0.d
e defini-os como executáveis, mas não sei como verificar se realmente foram executados (acho que eu poderia echo
something e verificar dmesg
...Isso funcionaria?). Eu reiniciei a máquina uma vez por uma boa medida e a desliguei, mas ela ainda não apresentou tentativas de WOL.
Seguindo o buraco do coelho, encontrei um comentar em uma postagem no blog , que sugeria um endereço IP estático mais específico, ajudaria. Eu não entendi porque (já que o pacote mágico envia para toda a rede com um endereço mac), mas eu tentei mesmo assim. Se minha configuração para interfaces de rede se parece com a dele, não há mudança.
Mais detalhes sobre a máquina. Tanto 32 bits quanto 64 bits estão no mais recente Ubuntu 15.10 Wily Werewolf
.
Atualizar
Eu tenho mais pesquisas.
Posso confirmar que o WoL funciona em uma nova instalação do Wily Werewolf de 64 bits. Depois disso, eu corri:
sudo apt-get update
sudo apt-get upgrade
E depois o WoL parou de funcionar. Esse parece ser o único passo necessário para reproduzir meu problema.
Então, novamente, aqui está minha pergunta:
Como posso ativar o wake on lan no Ubuntu de 64 bits?