zoukankan      html  css  js  c++  java
  • 在ubuntu上安装NCTUns

    How to install NCTUns in Debian/Ubuntu

    Contenido

     [ocultar]

    Introduction

    The NCTUns is a high-fidelity and extensible network simulator and emulator capable of simulating various protocols used in both wired and wireless IP networks. NCTUns uses directly the Linux TCP/IP protocol stack to generate high-fidelity simulation results.

    This document describes how to install NCTUns (developed only for Fedora Linux 9) on a Debian Unstable (Sid) operating system. A similar process should work on Debian Stable (Lenny) and latests versions of Ubuntu.

    Dependencies

    Install the build and runtime dependencies:

    $ apt-get install build-essential rpm tcl8.5 tcl8.5-dev xinetd rsh-server libncurses5-dev libqt3-mt
    

    Download NCTUns

    Download NCTUns and uncompress it:

    $ wget http://nsl10.csie.nctu.edu.tw/download/NCTUns-allinone-linux-2.6.25.9-f9.20080919-3.tar.gz
    $ tar xzf NCTUns-allinone-linux-2.6.25.9-f9.20080919-3.tar.gz
    $ cd NCTUns-5.0
    

    Modify NCTUns

    We need to modify slightly NCTUns code to install it on a Debian/Ubuntu system:

    • install.d/E00common (line 26).
    # WHICH="/usr/bin/which --skip-function --skip-alias"
    WHICH="/usr/bin/which"
    
    • install.d/E00common (line 139).
    #if [[ `eval echo \\\$$1` =~ ^[Yy]([Ee][Ss])?$ ]]; then
    if grep -q "^[Yy]\([Ee][Ss]\)\?$" <<< "${!1}"; then
    
    • install.d/S06check (line 31). Now, this is an ugly hack: the script uses rpm to query packages and check out if it is installed. Echoing any fake line makes the script think a package is installed (we don't want to install RPMs on a Debian system)
    # test rpm package manager whether exists
    #RPM=rpm
    #export RPM=`$WHICH $RPM 2>/dev/null`
    fake_rpm() { echo "fake_rpm"; }
    export RPM=fake_rpm
    
    • Create /etc/xinetd.d/rlogin
    # default: on
    # description: rlogind is the server for the rlogin(1) program.  The server \
    #   provides a remote login facility with authentication based on \
    #   privileged port numbers from trusted hosts.
    service login
    {
        socket_type     = stream
        wait            = no
        user            = root
        log_on_success      += USERID
        log_on_failure      += USERID
        server          = /usr/sbin/in.rlogind
        disable         = no
    }
    
    • Create /etc/xinetd.d/rsh
    # default: on
    # description: The rshd server is the server for the rcmd(3) routine and, \
    #   consequently, for the rsh(1) program.  The server provides \
    #   remote execution facilities with authentication based on \
    #   privileged port numbers from trusted hosts.
    service shell
    {
        socket_type     = stream
        wait            = no
        user            = root
        log_on_success      += USERID
        log_on_failure      += USERID
        server          = /usr/sbin/in.rshd
        disable         = no
    }
    

    Build NCTUns

    Copy the existing install.conf-example to install.conf and enable all configuration variables except install_kernel (install_kernel=no). Then run the install script as root:

    $ ./install.sh -c install.conf
    

    Include the NCTUns environment variables adding these lines at the bottom of /home/nctuns/.bashrc:

    export NCTUNSHOME=/usr/local/nctuns
    export NCTUNS_TOOLS=$NCTUNSHOME/tools
    export NCTUNS_BIN=$NCTUNSHOME/bin
    export PATH=${NCTUNS_BIN}:${PATH}
    

    Run the NCTUns GUI

    Login into the system with the nctuns user and run the GUI client:

    $ nctunsclient
    

    Run the NCTUns dispatcher/coordinator

    NCTUns is a distributed system consisting in three parts: GUI, dispatcher and coordinators (which runs on every simulator server), which can be installed on different computers (manual). The GUI application has not any special requirement, but the dispatcher and coordinator require a modified kernel.

    NCTUns sources include a precompiled modified kernel package (NCTUns-5.0/RPM/kernel-nctuns-2.6.25.9nctuns20080826-12.i386.rpm) for Fedora 9. Although we could convert to a Debian package with alien, its preferrable to build it from original Debian sources.

    The kernel patches are located at src/kernel-patch/kernel-2.6.25.9nctuns20080826-patches.tar.bz2. Despite the name, this file does not contain patches but the whole content of the files that NCTUns needs to modify (or create). Since copying these files directly to the Debian kernel tree is unsafe, first of all we will create a real NCTUns patch.

    If you are using Debian Unstable you may skip the next two steps by downloading this file and installing the included kernel package. The tarball contains also the NCTUns patch and the config-2.6.25 used to compile the kernel.

    Create the NCTUns kernel patch

    Download a pristine Linux kernel source and compare it against the NCTUns kernel files:

    $ cd NCTUns-5.0/kernel-patch
    
    $ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.9.tar.bz2
    $ tar jxf linux-2.6.25.9.tar.bz2
    
    $ mkdir linux-2.6.25.9-nctuns
    $ tar -C linux-2.6.25.9-nctuns -xjf kernel-2.6.25.9nctuns20080826-patches.tar.bz2
    
    $ LC_ALL=C diff -urP linux-2.6.25.9 linux-2.6.25.9-nctuns | grep -v "^Only in" > nctuns-2.6.25.9.patch
    

    Compile the Debian Kernel

    Download a Debian kernel v2.6.25 (for example, here), apply the previously created NCTUns patch, compile the kernel and install the generated deb package.

    $ cd /tmp
    
    $ wget http://puga.vdu.lt/debian/dists/lenny/main/binary-i386/l/linux-2.6.25/linux-source-2.6.25_2.6.25-3~1_all.deb
    $ dpkg -i linux-source-2.6.25_2.6.25-3~1_all.deb
    
    $ cd /usr/src
    $ tar jxf linux-source-2.6.25.tar.bz2
    $ cd linux-source-2.6.25
    $ patch -p1 < /path/to/patch/nctuns-2.6.25.9.patch
    
    $ cp config-2.6.25 .config
    $ make-kpkg --initrd --append-to-version=-nctuns kernel_image
    
    $ dpkg -i .. linux-image-2.6.25-nctuns_2.6.25-nctuns-10.00.Custom_i386.deb
    

    Reboot the system and select the NCTUns kernel.

    Test the daemons

    Now that a NCTUns kernel is installed, both dispatcher and coordinator daemons should work (otherwise the message Sorry!! This kernel is not nctuns kernel. Please select nctuns kernel to boot. will be shown).

    $ dispatcher
    ServerSocket listen to port:9810
    ServerSocket listen to port:9800
    (Active:0| fd:3)   (Active:1| fd:4)
    
    $ coordinator
    /usr/local/nctuns/bin/
    ServerSocket listen to port:9830	FD:4
    ServerSocket listen to port:9840	FD:5
    ServerSocket listen to port:9880	FD:6
    UnixDomainSocket Bind Path:/tmp/nctuns	FD:7
    [To Dispatcher...]	register|127.0.0.1|9830|9840|IDLE
    [From Dispatcher...]	OK
  • 相关阅读:
    Codeforces 1045C Hyperspace Highways (看题解) 圆方树
    Codeforces 316E3 线段树 + 斐波那切数列 (看题解)
    Codeforces 803G Periodic RMQ Problem 线段树
    Codeforces 420D Cup Trick 平衡树
    Codeforces 295E Yaroslav and Points 线段树
    Codeforces 196E Opening Portals MST (看题解)
    Codeforces 653F Paper task SA
    Codeforces 542A Place Your Ad Here
    python基础 异常与返回
    mongodb 删除
  • 原文地址:https://www.cnblogs.com/hanyulcf/p/1755939.html
Copyright © 2011-2022 走看看