discuss: Thread: [Proposal] PXE Server HOWTO


[<<] [<] Page 2 of 3 [>] [>>]
Subject: Re: [Proposal] PXE Server HOWTO
From: "Michael H. Collins" ####@####.####
Date: 27 Jan 2002 02:38:52 -0000
Message-Id: <3C536838.3020601@linuxlink.com>

Mistik1 is going to have a webcam in the LTSP booth so we should all be 
able to see a bit of it.  If you want I will post the url here when it 
is known.

I can't make this one either.


Keith Strachan wrote:

> Personally, I'd love to attend, but I'm in Australia.   Any possibility of
> feedback from what is seen by those who manage to go there???
> 
>


-- 
Michael H. Collins		       	http://www.linuxlink.com
Linux Streaming Radio			http://www.kpig.com
Penguins are so sensitive.		Lyle Lovett

Subject: Re: [Proposal] PXE Server HOWTO
From: Charles Curley ####@####.####
Date: 27 Jan 2002 04:57:56 -0000
Message-Id: <20020126210855.B23095@trib.com>

On Sun, Jan 27, 2002 at 01:20:55AM +0100, Jason Bechtel wrote:
> On Sat, 26 Jan 2002 13:52:47 -0700
>  Charles Curley ####@####.#### wrote:
> > On Sat, Jan 26, 2002 at 07:25:32PM +0100, Jason Bechtel
> > wrote:
> > > <http://etherboot.sourceforge.net>
> > > <http://www.ltsp.org>
> > 
> > Cool! One could use this to boot a full Linux disty,
> > which is what the authors intend.
> 
> The authors of PXE?

Sorry, no, I meant the LTSP folks. And I was incorrect. They are after
the diskless workstation, as you point out below.

You could, you know. Boot the kernel, mount everything over NFS,
including /home, and let any user log in to any diskless workstation.
The user would have a full up Linux disty available at Ethernet
speeds. You might have to keep a local RAM disk for some stuff, and
having /tmp in local RAM would be possible. You would have no hard
drive locally and universal access to one's account. This is much
better than NT domains.



> 
> The LTSP project works using PXE+Etherboot (or just
> Etherboot) to load a Linux kernel over the network, not a
> full distro.  The code in the network card's EEPROM (or on a
> floppy) contacts a DHCP server (or a bootp server) to obtain
> its network information (based on its MAC address).  Then
> the DHCP/bootp response contains the location of the kernel
> to download (tftp server name + path), which is then
> downloaded and booted.

Believe me, I'm familiar with bootp. :-) The bootp server provides an
executable; it does not have to be a kernel. It could be a second
stage bootstrap, manufacturing test code, manufacturing OS
installation code, or anything else you can compile or assemble for
the target.

> 
> If PXE was involved at all, it has now served its purpose
> and is out of the picture.  Now, once you boot this
> specially prepared kernel, it again contacts DHCP/bootp for
> its network information (at least it used to need to do
> this; LTSP 3.0 may avoid this, not sure).

I don't think it should avoid it because the bootp server may assign
a temporary address/netmask/gateway/hostname, and the downloaded
executable may "know" its permanent assignments.

> Now the kernel mounts its root filesystem over NFS (see the NFS-Root
> mini-HOWTO, recently reclaimed) and continues to boot, according to
> data stored on the NFS server...  Finally, init is executed as the
> first process and again according to the inittab file on the server,
> it either starts a telnet session in console mode or it launches X
> and establishes a XDMCP connection to the applications server.

In other words, once bootp has delivered its executable it's a normal
Unix boot process - assuming it was a Unix kernel bootp delivered.


> 
> Sorry for the speech, but I think that LTSP really is
> amazing.  The implications for TCO and ongoing maintenance
> costs are staggering.  Microsoft should be quaking in their
> boots!

Quite right.


-- 

		-- C^2

The world's most effective anti-virus software: Linux.

Looking for fine software and/or web pages?
http://w3.trib.com/~ccurley

--> -->
 
 
<type 'exceptions.IOError'>
Python 2.5.2: /usr/bin/python
Tue Jun 18 13:11:46 2024

A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.

 /opt/ezmlm-browse-0.20/<string> in ()
 /opt/ezmlm-browse-0.20/main.py in main()
  424 
  425         if path is not None:
  426                 main_path(path)
  427         else:
  428                 main_form()
global main_form = <function main_form at 0x83b0c6c>
 /opt/ezmlm-browse-0.20/main.py in main_form()
  378         except ImportError:
  379                 die(ctxt, "Invalid command")
  380         module.do(ctxt)
  381 
  382 def main():
module = <module 'commands.showthread' from '/opt/ezmlm-browse-0.20/commands/showthread.pyc'>, module.do = <function do at 0x83ce294>, global ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}
 /opt/ezmlm-browse-0.20/commands/showthread.py in do(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'})
    9         ctxt.update(ezmlm.thread(ctxt[THREADID]))
   10         header(ctxt, 'Thread: ' + ctxt[SUBJECT], 'showthread')
   11         do_list(ctxt, 'msgs', ctxt[MSGSPERPAGE], ctxt[MESSAGES],
   12                         lambda:sub_showmsg(ctxt, ctxt[MSGNUM]))
   13         footer(ctxt)
global sub_showmsg = <function sub_showmsg at 0x83b01ec>, ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum'
 /opt/ezmlm-browse-0.20/globalfns.py in do_list(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, name='msgs', perpage=10, values=[{'author': u'Michael H. Collins', 'authorid': 'hmjengapgenidcpideii', 'date': '27 Jan 2002 02:38:52 -0000', 'month': 200201, 'msgnum': 2195, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012099132.0}, {'author': u'Charles Curley', 'authorid': 'blnflnoieggjgfeejfli', 'date': '27 Jan 2002 04:57:56 -0000', 'month': 200201, 'msgnum': 2196, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012107476.0}, {'author': u'Michael H. Collins', 'authorid': 'hmjengapgenidcpideii', 'date': '27 Jan 2002 16:43:48 -0000', 'month': 200201, 'msgnum': 2199, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012149828.0}, {'author': u'Nicolas Chauvat', 'authorid': 'nibfaikpkkpacdojonbm', 'date': '28 Jan 2002 13:44:06 -0000', 'month': 200201, 'msgnum': 2211, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012225446.0}, {'author': u'Jason Bechtel', 'authorid': 'endcpoemckhgogefncka', 'date': '28 Jan 2002 15:45:57 -0000', 'month': 200201, 'msgnum': 2212, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012232757.0}, {'author': u'Nicolas Chauvat', 'authorid': 'nibfaikpkkpacdojonbm', 'date': '28 Jan 2002 15:57:04 -0000', 'month': 200201, 'msgnum': 2213, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012233424.0}, {'author': u'Jason Bechtel', 'authorid': 'endcpoemckhgogefncka', 'date': '28 Jan 2002 16:24:33 -0000', 'month': 200201, 'msgnum': 2214, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012235073.0}, {'author': u'Cicero Mota', 'authorid': 'dkhlajcpamkiidcohnba', 'date': '28 Jan 2002 17:06:25 -0000', 'month': 200201, 'msgnum': 2215, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012237585.0}, {'author': u'prl-linuxdoc-discuss.sychron.com', 'authorid': 'jmfmdagooohmhcmcmfkm', 'date': '28 Jan 2002 18:10:52 -0000', 'month': 200201, 'msgnum': 2216, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012241452.0}, {'author': u'Peter Lister', 'authorid': 'nfdjdehdkhdllmibelll', 'date': '28 Jan 2002 18:17:40 -0000', 'month': 200201, 'msgnum': 2217, 'subject': u'Re: [Proposal] PXE Server HOWTO', 'threadid': 'hjidhfcmaanogoghefno', 'timestamp': 1012241860.0}], peritem=<function <lambda> at 0x83ce48c>)
  128                 write(template % ctxt)
  129                 if peritem:
  130                         peritem()
  131                 ctxt[ROW] += 1
  132 
peritem = <function <lambda> at 0x83ce48c>
 /opt/ezmlm-browse-0.20/commands/showthread.py in ()
    9         ctxt.update(ezmlm.thread(ctxt[THREADID]))
   10         header(ctxt, 'Thread: ' + ctxt[SUBJECT], 'showthread')
   11         do_list(ctxt, 'msgs', ctxt[MSGSPERPAGE], ctxt[MESSAGES],
   12                         lambda:sub_showmsg(ctxt, ctxt[MSGNUM]))
   13         footer(ctxt)
global sub_showmsg = <function sub_showmsg at 0x83b01ec>, ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, global MSGNUM = 'msgnum'
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showmsg(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msgnum=2196)
  229         format_timestamp(ctxt, ctxt)
  230         write(html('msg-header') % ctxt)
  231         rec_showpart(ctxt, msg, 0)
  232         write(html('msg-footer') % ctxt)
  233         ctxt.pop()
global rec_showpart = <function rec_showpart at 0x83b01b4>, ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, msg = <email.message.Message instance at 0x842b36c>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x842b36c>, partnum=1)
  205                 else:
  206                         for p in part.get_payload():
  207                                 partnum = rec_showpart(ctxt, p, partnum+1)
  208         else:
  209                 write(html('msg-sep') % ctxt)
partnum = 1, global rec_showpart = <function rec_showpart at 0x83b01b4>, ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, p = <email.message.Message instance at 0x842b6ec>
 /opt/ezmlm-browse-0.20/globalfns.py in rec_showpart(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x842b6ec>, partnum=2)
  208         else:
  209                 write(html('msg-sep') % ctxt)
  210                 sub_showpart(ctxt, part)
  211         return partnum
  212 
global sub_showpart = <function sub_showpart at 0x83b0144>, ctxt = {'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part = <email.message.Message instance at 0x842b6ec>
 /opt/ezmlm-browse-0.20/globalfns.py in sub_showpart(ctxt={'HTTP_X_FORWARDED_SERVER': 'glitch', 'HTTP_REFE...HTTP_ACCEPT_ENCODING': 'gzip, br, zstd, deflate'}, part=<email.message.Message instance at 0x842b6ec>)
  164         type = ctxt[TYPE] = part.get_content_type()
  165         ctxt[FILENAME] = part.get_filename()
  166         template = html('msg-' + type.replace('/', '-'))
  167         if not template:
  168                 template = html('msg-' + type[:type.find('/')])
global template = <function template at 0x83a8e9c>, global html = <function html at 0x83a8ed4>, type = 'application/pgp-signature', type.replace = <built-in method replace of str object at 0x842aa68>
 /opt/ezmlm-browse-0.20/globalfns.py in html(name='msg-application-pgp-signature')
   40 
   41 def html(name):
   42         return template(name + '.html')
   43 
   44 def xml(name):
global template = <function template at 0x83a8e9c>, name = 'msg-application-pgp-signature'
 /opt/ezmlm-browse-0.20/globalfns.py in template(filename='msg-application-pgp-signature.html')
   31         except IOError:
   32                 if not _template_zipfile:
   33                         _template_zipfile = zipfile.ZipFile(sys.argv[0])
   34                 try:
   35                         f = _template_zipfile.open(n).read()
global _template_zipfile = None, global zipfile = <module 'zipfile' from '/usr/lib/python2.5/zipfile.pyc'>, zipfile.ZipFile = <class zipfile.ZipFile at 0x8341a7c>, global sys = <module 'sys' (built-in)>, sys.argv = ['-c', '/opt/ezmlm-browse-0.20']
 /usr/lib/python2.5/zipfile.py in __init__(self=<zipfile.ZipFile instance at 0x842b76c>, file='-c', mode='r', compression=0, allowZip64=False)
  337             self.filename = file
  338             modeDict = {'r' : 'rb', 'w': 'wb', 'a' : 'r+b'}
  339             self.fp = open(file, modeDict[mode])
  340         else:
  341             self._filePassed = 1
self = <zipfile.ZipFile instance at 0x842b76c>, self.fp = None, builtin open = <built-in function open>, file = '-c', modeDict = {'a': 'r+b', 'r': 'rb', 'w': 'wb'}, mode = 'r'

<type 'exceptions.IOError'>: [Errno 2] No such file or directory: '-c'
      args = (2, 'No such file or directory')
      errno = 2
      filename = '-c'
      message = ''
      strerror = 'No such file or directory'