Wake On LAN
This is the
ManagedPlatformUnit page which describes how Informatics' Wake On LAN service is put together. If you just want to use the service, see
http://wake.inf.ed.ac.uk. If you're looking for documentation for users of the service, see
Remote Wake-up for Sleeping Computers.
Instructions for Support
For a person to be able to wake a sleeping computer using wake.inf.ed.ac.uk, these things need to happen:
It has to be on a Forum or Tower network wire.
The computer's lcfg file needs to #include <dice/options/wake-client.h>
.
You will usually not need to bother with this because it has already been done in the following headers: dice/options/office-at.h
, dice/options/office-forum.h
, dice/options/studentlabs.h
, dice/os/selfmanaged.h
, dice/os/managed-desktop.h
, dice/os/placeholder.h
and dice/os/diystub.h
.
Machines using dice/os/placeholder.h
will also need their MAC address declared in the wolclient.mac
resource in their profile. Unless this is done, placeholder.h
machines cannot be woken by wake.inf. On placeholder.h
machines this needs to be done even if the MAC address is already in dhclient.mac
. Don't bother with this step if the machine doesn't use placeholder.h
.
Whoever the computer is allocated to (in sysinfo.allocated
) will then have permission to wake it.
You can give extra people permission to wake a machine by adding their names to the wolclient.users
resource. For example
!wolclient.users mEXTRA(huey dewey louie)
You can also use a capability or netgroup if you precede it by @ e.g.
!wolclient.users mEXTRA(@sysmans)
or
!wolclient.users mEXTRA(@wol/nephews)
Note If you create a capability specially for this, like wol/nephews
in the example above, make sure to wait until it has been created before adding it to wolclient.users
. You can tell when it has been created when netgroup -U
lists its members, e.g.
$ netgroup -U wol/nephews
huey
dewey
louie
If you're really in a hurry then ssh ionian
and run your netgroup
command there; if your capability hasn't yet shown up then om openldap kick
to hurry it along.
Architecture
The web server of
wake.inf.ed.ac.uk
currently runs on
ionian. The configuration for the web server portion is in
dice/options/wake-web.h
. The CGI script and associated files live in LCFG subversion in the
wakeweb
directory
and are installed using the
wakeweb
RPM.
The web server does not wake machines itself. Instead it sends commands to Infrastructure Unit machines
abbado and
otaka.
abbado covers Forum subnets and
otaka covers Tower subnets. The Wake On LAN configuration for
abbado and
otaka is in
dice/options/wake-backend.h
. The backend part of the service uses a small script which lives in LCFG subversion in
the
wakebackend
directory and is installed using the
wakebackend
RPM.
wake.inf.ed.ac.uk
gets its list of registered hosts & users from a configuration file on
ionian. The configuration file is
/etc/wol-lcfg.map
and is built by the
lcfg-wolconf
component. This subscribes to the
wol/all
spanning map.
Each participating machine - everything that's registered to be wakeable - publishes to the spanning map using the
lcfg-wolclient
component. This component has no code - it just publishes to the spanning map - so it works just as well on self-managed machines that have no XML LCFG profile. The configuration for the client end is in
dice/options/wake-client.h
.
This is included by
dice/options/office-at.h
,
dice/options/office-forum.h
,
dice/options/studentlabs.h
,
dice/os/selfmanaged.h
and
dice/os/diystub.h
.
You can exclude a machine using one of the above headers by, above that header's inclusion, defining
NO_WAKE_ON_LAN
.
Credits
Informatics' Wake On LAN service was developed under
development project 213, and re-used a couple of the LCFG components developed by Kenny MacDonald for the IS Wake On LAN facility.