Skip to content. | Skip to navigation

Personal tools

Navigation

You are here: Home / Wiki / Kb275

Kb275

Emulab FAQ: Troubleshooting: How does Windows XP start up in Emulab?

Emulab FAQ: Troubleshooting: How does Windows XP start up in Emulab?

Here's an outline of how the Emulab client-side (experiment node) code boots up on Windows XP.

Look in the XP "Computer Management" app for "Services Manager" to examine services. When creating Windows XP OS images, the Emulab prepare script uses the regtool and cygrunsrv Cygwin utilities to set registry keys and redefine the the Emulab Windows services (daemons) that run as user root, authenticating with a password.

At boot time, there is an EmulabStartup XP service that runs the Emulab boot scripts in /usr/local/etc/emulab/rc: first the Windows-specific rc.firstboot and then the Emulab generic rc.bootsetup.

Boot-time output is logged in var/log, in EmulabStartup.log and bootsetup.log. Emulab daemons log their output in /var/emulab/logs

In general, you'll see that the Emulab node setup scripts use a tmcc command to contact the tmcd daemon on Boss, which queries the DB for the details for each particular node and returns them in a simple text format. Much of this is cached in the /var/emulab/boot/tmcc directory, and you'll find generated script files in /var/emulab/boot.

The rc.firstboot script sets the computer name if necessary (causing a reboot) and does some initial network setup. When loading a Sysprep'ed image, rc.firstboot is run by Mini-Setup under Cmdlines.txt, before Windows XP is booted, so it avoids an extra reboot.

rc.bootsetup runs (among many other things):

  • rc.cygwin to do Windows XP-specific initial setup, including network interface devices,
  • rc.slothd to set up the idle monitor,
  • and rc.config for the rest of the node setup (see the WINDOWS-specific @bootscripts list there), including:
    • rc.accounts to set up the proper user accounts and groups for the node within the experiment, among them your Cygwin user login with its SSH keys,
    • rc.mounts to get access to your shared home directory on Ops and /proj, /group, and /share directories via Samba.
    • rc.route and rc.ifconfig to set up the network routing and interfaces. Windows-specific parts of that are in functions like os_ifconfig_line() in /usr/local/etc/emulab/liblocsetup.pm, which makes another try at rc.cygwin each time a wedged network interface is found.