[Gllug] Building Intranet Kiosks

Kieran Barry kieran at esperi.demon.co.uk
Thu Jul 12 14:57:46 UTC 2001


On Thu, 12 Jul 2001 john.hearns at framestore.co.uk wrote:

> Jim Cheetham wrote:
> > 
> 
> > can contact the server, and dd into the PC's primary (windows) partition.
> > I'd be interested if anyone has any insights about how to handle
> > customisation of the windows data (i.e. networking details, host names, etc)
> 
> Errrr... use DHCP. OR am I missing something vital here?
> 
As someone pointed out, Jamie Zawinsky is doing this at his club, DNA
lounge in the States.

http://www.dnalounge.com/backstage/src/kiosk/

Summary:

His setup uses diskless clients which boot over the network using
something called Preboot Execution Environment. This is part of the 
ROM on modern network cards. From what I can find on it, it seems like
DHCP on steroids.

He has a central server which runs TFTP, NFS, DHCP and a network boot
loader called BPBatch etc, and passes out the kernel and filesystem.
Each client shares the main filesystems read-only, and their is some
more stuff which is write-able. Finally, he sets up sshd to allow remote
access to the kiosk, and has to create seperate keys...

The bit I liked best was his fastboot.c which doesn't bother with
fscking the filesystems:

http://www.dnalounge.com/backstage/src/kiosk/sbin/fastboot.c

int main (int argc, char **argv)
{
  char *s = strrchr(argv[0], '/');
  if (*s) argv[0] = s+1;

  if (argc != 1)
    {
      fprintf (stderr, "usage: %s\n", argv[0]);
      fprintf (stderr, "       resets the machine right now, without "
               "shutting down or unmounting.\n");
      exit (1);
    }

  fprintf (stderr,
           "\014"               /* ^L */
           "\033[H\033[J"       /* ANSI clear sequence */
           "\007\007\007"       /* some bells */
           "\r\n\r\n\r\n"
           "                             <<  REBOOTING NOW  >>"
           "\r\n\r\n\r\n");

  sync ();
  sleep (1);
  sync ();
  sleep (1);
  sync ();

  if (reboot (LINUX_REBOOT_CMD_RESTART))
    {
      perror ("reboot");
      exit (1);
    }

  fprintf (stderr, "%s: we just rebooted, so you can't be reading
this.\n",
           argv[0]);
  exit (0);
}

... which is about as subtle as a brick through a window.

Regards

Kieran


-- 
Gllug mailing list  -  Gllug at linux.co.uk
http://list.ftech.net/mailman/listinfo/gllug




More information about the GLLUG mailing list