| | 37 | |
| | 38 | == 1.1 Installation, new version == #new |
| | 39 | The installation procedures have been significantly streamlined (e.g. to use apt). It is described in the [http://noxrepo.org/noxwiki/index.php/NOX_Installation NOX wiki], but it will be repeated here for completeness. |
| | 40 | |
| | 41 | === Base system === |
| | 42 | NOX was built on an Ubuntu 10.10 server install with the following additions: |
| | 43 | * packages: openssh-server ckermit git chromium-browser xinit icewm |
| | 44 | * additional Ethernet interface (for !OpenFlow channel) |
| | 45 | * no LVM |
| | 46 | |
| | 47 | The switch is a NEC IP880/S3640 with !OpenFlow v 1.0 enabled firmware. |
| | 48 | |
| | 49 | === The process === |
| | 50 | 1. as root: |
| | 51 | {{{ |
| | 52 | cd /etc/apt/sources.list.d |
| | 53 | sudo wget http://openflowswitch.org/downloads/debian/nox.list |
| | 54 | sudo apt-get update |
| | 55 | sudo apt-get install nox-dependencies |
| | 56 | }}} |
| | 57 | |
| | 58 | 2. add the following to the end of `/usr/lib/python2.6/dist-packages/twisted/internet/base.py`, before `__all__ = []` : |
| | 59 | {{{ |
| | 60 | def _handleSigchld(self, signum, frame,_threadSupport=platform.supportsThreads()): |
| | 61 | from twisted.internet.process import reapAllProcesses |
| | 62 | if _threadSupport: |
| | 63 | self.callFromThread(reapAllProcesses) |
| | 64 | else: |
| | 65 | self.callLater(0, reapAllProcesses) |
| | 66 | }}} |
| | 67 | This is to make pyoxidereactor.py happy - it assumes that Python takes care of signal handling, which, in the newer versions, does not. The tabs should match with the rest of the file since Python is quite picky. |
| | 68 | [[BR]][[BR]] |
| | 69 | ref: http://www.mail-archive.com/nox-dev@noxrepo.org/msg01448.html |
| | 70 | |
| | 71 | 3. download and build: |
| | 72 | {{{ |
| | 73 | git clone git://noxrepo.org/nox |
| | 74 | cd nox |
| | 75 | ./boot.sh |
| | 76 | mkdir build/ |
| | 77 | cd build/ |
| | 78 | ../configure |
| | 79 | make -j 5 |
| | 80 | }}} |
| | 81 | The install was done in /opt in this case. |