web-dev-qa-db-fra.com

Wake-on-LAN cassé sur 64 bits, fonctionne sur 32 bits

Comment puis-je faire fonctionner WOL sur Ubuntu 64 bits?

C'est une situation bizarre. Le matériel est un ASUS G75VW 3D fortement modifié. Windows et Ubuntu 32 bits fonctionnent bien pour Wake on LAN. La carte mère a un rôle mineur ici, n'ayant que quelques paramètres d'économie d'énergie que j'ai désactivés dans le bios pour autoriser WOL. Ensuite, le NIC doit être configuré. Sous Windows, il s'agit d'un paramètre unique et il fonctionne très bien. Sur Ubuntu 32 bits, j'ai utilisé un rc.local déclencheur pour ethtool et cela a très bien fonctionné.

Sur Ubuntu 32 bits, la carte réseau apparaît comme eth0 comme on pouvait s'y attendre. Sur 64 bits, il est renommé enp4s0. Je sais qu'il a été renommé car j'ai vérifié dmesg, ce qui explique également pourquoi mon script rc.local ne change pas le wol de d en g dans 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>

oK peu importe. Je peux gérer le lien n'étant pas prêt, le mettre sur une minuterie ou quelque chose pour plus tard. Mais si je le configure manuellement, ethtool dit qu'il montre le wol g pour la carte

Supports Wake-on: pg
Wake-on: g

Pour une raison quelconque, cela est réinitialisé lorsque j'arrête l'ordinateur, car le paquet magique wol ne réveille pas l'ordinateur même après cela.

Essai

J'ai testé beaucoup de choses. Tout d'abord, le déclencheur wol ne fonctionne pas si l'ordinateur portable a été débranché, même brièvement. Cela fonctionne si le câble Ethernet a été débranché et rebranché. Le déclencheur wol est clairement défini lorsque le système d'exploitation s'arrête, car si j'arrête Ubuntu 32 bits et permute les disques durs sans débrancher, je peux WOL en ubuntu 64 bits.

Je soupçonne que cela a quelque chose à voir avec les chauffeurs, mais je ne sais pas où les obtenir si c'est le cas. Là encore, puis-je simplement exécuter le pilote 32 bits sur 64 bits et en finir avec lui? J'ai des bibliothèques 32 bits sur la machine à d'autres fins.

Je ne peux pas résoudre ce problème en exécutant Ubuntu 32 bits, car j'exécute des machines virtuelles Java sur la machine qui nécessitent une grande quantité de RAM (au-delà de la limite de 32 bits).

Par documentation d'aide ubunt J'ai supprimé network-manager et a tenté de configurer la connexion avec ifup ( d'ici ). Malheureusement, ifup n'a pas reconnu l'interface. Voici le contenu de mon /etc/network/interfaces fichier en 64 bits.

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

Je ne sais pas pourquoi ma carte sans fil et Ethernet n'y figurent pas. Voici 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)

Donc, par n message sur le forum j'ai ajouté enp4s0 manuellement dans le fichier des interfaces réseau. Il ressemble maintenant à:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto enp4s0
iface enp4s0 inet dhcp

Ensuite, ifup a fonctionné. Je ne sais pas si je l'ai bien fait, mais je n'ai fait que taper:

ifup enp4s0

Tout fonctionnait toujours et je pouvais toujours SSH après un redémarrage, donc je suppose que je n'ai pas encore cassé ma carte Ethernet. Je ne sais vraiment pas ce que je fais ici les gars et je saisis les pailles.

J'ai lu un peu plus bas la page d'aide et j'ai réalisé que j'avais oublié le lien vers un bug .

Après la solution de contournement, j'ai ajouté un script à rc6.d et rc0.d et les définir sur exécutable, mais je ne sais pas comment vérifier si le fichier est réellement exécuté (je suppose que je pourrais echo quelque chose et vérifier dmesg... cela fonctionnerait-il?). J'ai redémarré la machine une fois pour faire bonne mesure et je l'ai mise hors tension, mais elle n'a toujours pas proposé de tentatives WOL.

Après le lapin, j'ai trouvé n commentaire sur un article de blog qui suggérait qu'une adresse IP statique plus spécifique serait utile. Je n'ai pas vu pourquoi (puisque le paquet magique envoie à l'ensemble du réseau avec une adresse mac), mais je l'ai quand même essayé. Si ma configuration pour les interfaces réseau ressemble à la sienne, il n'y a aucun changement.

Plus de détails sur la machine. Les versions 32 bits et 64 bits sont toutes les dernières Ubuntu 15.10 Wily Werewolf.


Mise à jour

J'ai plus de recherches.

Je peux confirmer que WoL fonctionne sur une nouvelle installation de Wily Werewolf 64 bits. Après cela, j'ai couru:

Sudo apt-get update
Sudo apt-get upgrade

Et puis WoL a cessé de fonctionner. Cela semble être les seules étapes nécessaires pour reproduire mon problème.


Encore une fois, voici ma question:

Comment puis-je faire en sorte que wake on lan fonctionne dans Ubuntu 64 bits?

2
deltree

Je pense avoir enfin trouvé une réponse à ce problème. Dans la version 15.10, les utilitaires TLP ont été introduits par défaut. Donc, lors de la mise à niveau dist, vous obtenez une configuration par défaut dans TLP disant WOL_DISABLE = Y

Même https://wiki.archlinux.org/index.php/Wake-on-LAN indique que si l'ordinateur ne se réveille pas après suspension/hibernation lors de l'utilisation de TLP, définissez la valeur WOL_DISABLE sur N dans/etc/default/tlp.

J'ai testé cela sur Ubuntu-MATE 16.04 LTS (64 bits) où WOL ne fonctionnait pas après l'installation. Changer la configuration de TLP le fait fonctionner à nouveau.

J'espère que cela vous aidera aussi dans votre problème.

1
paradix

Après avoir dérangé avec les options de la carte Ethernet, j'ai trouvé un paramètre dans l'onglet avancé appelé "Shutdown wake up" qui a été désactivé pour moi. Je l'ai activé et maintenant ça marche! J'espère que cela aide quelqu'un d'autre avec le même problème.

0
5il3nt