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
  • 相关阅读:
    iOS 索引列 使用详解
    iOS 搜索条使用详解
    iOS 百度地图使用详解
    在iOS中使用ZBar扫描二维码和条形码
    自学html-five(锚点、伪类、字符实体)
    自学html-four(css初始化及html语义标签 -> h标签 p标签 img标签 有序列表 无序列表 表格 超链接)
    自学html--htree(CSS)
    自学html--two(盒模型)
    自学html--one(div布局)
    常用控件补充(UIDatePicker、UIWebView)
  • 原文地址:https://www.cnblogs.com/hanyulcf/p/1755939.html
Copyright © 2011-2022 走看看