elenna's profile๑۩ﺴ 猪猪艾美丽的学习乐园BlogListsGuestbook Tools Help

๑۩ﺴ 猪猪艾美丽的学习乐园

正所谓“学海无涯苦做舟”

Let's study together~~学习也可以很有乐趣~~

让我们交流学习的心得吧^_^

Please wait...
Sorry, the comment you entered is too long. Please shorten it.
You didn't enter anything. Please try again.
Sorry, we can't add your comment right now. Please try again later.
To add a comment, you need permission from your parent. Ask for permission
Your parent has turned off comments.
Sorry, we can't delete your comment right now. Please try again later.
You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
Complete the security check below to finish leaving your comment.
The characters you type in the security check must match the characters in the picture or audio.

elenna

Occupation
让我们用眼睛去看,用耳朵去听,用脑袋去思考,用心去感受吧!
March 11

grub4dos---加载双系统中的linux!

1.进windows,下载、解压grub for dos。

2.安装grub4dos。复制grldr到c:\,修改boot.ini文件,在最后一行添加c:\grub="GRUB"。引号里面的内容可以随便写,它的作用主要是开机后windows引导菜单里显示的内容。如果看不到boot.ini文件,去掉查看->文件夹选项->隐藏系统保护文件和选中“显示所有文件”。

3.重启系统,在windows的启动引导菜单里,选择“GRUB”,系统完全交由grub控制。grub的功能还是很强的,可以直接从FAT、minix、FFS、ext2或ReiserFS分区读取Linux内核。这就意味着无论怎样它总能找到内核。这时会出现一个grub>提示符(进入grub后选择command line),其实它引导内核的步骤跟GNU grub是一样的。

4.手动加载Linux(所有命令均在grub>提示符下输入,使用tab键自动填补命令)

help命令可用于查看grub的所有命令格式。

cat (hd[0-n],y)/etc/fstab用于查看分区情况,以找到linux所在分区即分区类型为ext2。输入(hd0,2)意味着linux在第一个硬盘的第三个分区上。

首先键入root(hd0,2)用于设置包含操作系统内核的根设备。

然后键入kernel /boot/vmlinuz-xxx ro root=/dev/hda3(或root=LABEL=/)。kernel命令用于装载内核映像文件,vmlinuz-xxx是你内核文件的名字。后面的root=/dev/hda3表示内核文件所在的磁盘分区,ro表示以只读方式打开内核文件。

然后键入initrd /boot/initrd.img-xxx。initrd.img-xxx是一个镜像文件,类似ramdisk,把一段程序打包到img里。它的作用是在没有mount /分区以前,虚拟出一个/,然后执行其根目录下的一个脚本"linuxrc",做一些挂载scsi驱动类似的事情,如果你的磁盘并不是scsi磁盘的话,这步并不是必须的。

最后键入boot,引导进入linux。

5.将新的grub装入mbr。以root的身份登录,运行grub-install /dev/hda3,或者键入grub,然后在提示符下键入root (hd0,2),setup (hd0),把mbr的控制权抢回来了!

6.将windows加入grub启动菜单。root权限,修改/boot/grub/menu.lst。加入以下内容:

title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

参考:http://hi.baidu.com/opthome/blog/item/09ef04124bd18e55f919b80c.html

grub命令行用法 http://hi.baidu.com/realxfliu/blog/item/f6fe14e96463b83fb90e2d35.html

 

PS:另一种方案---windows下安装grubfordos后, 拷贝原linux系统/boot/grub/menu.lst到c:\下(需要在重新安装windows前保存)。但我采用这种方案时,在kernel、initrd后的savedefault命令出错,估计要修改menu.1st,去掉savedefault命令。

August 11

《NS与网络模拟》学习13——完整例子

       通过MFlood协议的添加,可以总结出以下的大概流程:

1.添加协议类:

   1)添加自己的Agent类,重载recv()、command()等函数

   2)创建对应的TclClass类

   3)当添加的是无线自组网下的路由协议时,需要修改NS的系统Tcl代码,使得当设定路由协议时会调用我们新增加的Agent/NewAgent类。(~ns/tcl/lib/ns-lib.tcl)

2.增加包头类型:

   1)定义自己的hdr_newhdr结构

   2)通过PacketHeaderClass类绑定

   3)修改~ns/tcl/lib/ns-packet.tcl使得新加入的包头类型被激活

   4)如果想要创建新的包类型,修改~ns/common/packet.h,将名字与包类型绑定

3.修改~ns/Makefile文件,增加对新类的编译。编译代码->调试。。。

4.初步测试:编写简单的场景文件,研究trace文件

5.可以利用setdest和cbrgen工具编写复杂的测试场景文件,并多次测试;应用gawk等对trace文件进行分析;利用画图软件绘测出所需图像;利用nam查看运行过程。

《NS与网络模拟》学习12——ns中的小工具

一.cbrgen(~ns/indep-utils/cmu-scen-gen)

   cbrgen用来生成传输负载,可以产生TCP流或者CBR流。 使用方法如下:

   ns cbrgen.tcl [-type cbr|tcp] [-nn nodes] [-seed seed] [-mc connections] [-rate rate]

                      -type tcp流或cbr流              -nn 节点数  
                      -mc 节点间的最大连接数          -rate  每个连接间的流的负载数
                      -seed  指定随机数种子

二.setdest(~ns/indep-utils/cmu-scen-gen/setdest/)

   用来随机生成无线网所需的节点运动场景,使用前需make。使用方法如下:

   ./setdest   -v <1> -n <nodes> -p <pause time> -M <max speed> 
                   -t <simulation time> -x <max X> -y <max Y>

    或:./setdest   -v <2> -n <nodes> -s <speed type> -m <min speed> -M <max speed>
                         -t <simulation time> -P <pause type> -p <pause time> -x <max X> -y <max Y>

    其中,speed type为uniform/normal,pause type为constant/uniform

    以上两个工具产生的文件均可采用source命令加入到tcl文件中,注意产生的文件用到了诸如node_数组变量和god_变量,需要在tcl脚本中预先建立。

三.threshold工具(~ns/indep-utils/propagation)

    用来在无线网络中,计算在某种传播模型下,如何设定接收功率阈值来控制无线传输的范围。

    先编译得到可执行文件:g++ threshold.cc -o threshold

    命令如下:threshold -m <propagation-model> [other-options] distance

common parameters: -Pt <transmit-power> -fr <frequency> -Gt <transmit-antenna-gain>
                             -Gr <receive-antenna-gain> -L <system-loss>
for two-ray ground model: -ht <transmit-antenna-height> -hr <receive-antenna-height>
for shadowing model: -pl <path-loss-exponent> -std <shadowing-deviation> -d0 <reference-distance> -r <receiving-rate>

四.nam(Network Animater)

    nam的功能是根据网络模拟软件或真实环境里的特定格式的trace输出文件来运行动画,例如,trace文件常常来自NS模拟器或者Tcpdump软件的输出。

    NS中控制nam动画显示的命令如下:

1.节点:$node color [color] ;#设定节点的颜色
          $node shape [shape] ;#设定节点的形状
          $node label [label] ;#设定节点的名称
          $node label-color [lcolor] ;#设定节点显示名称的颜色
          $node label-at [ldirection] ;#设定节点名称的显示位置
          $node add-mark [name] [color] [shape] ;#增加注释
          $node delete-mark [name]              ;#删除注释

2.链路和队列:$ns duplex-link <attribute> <value>
                        attribute:orient、color、queuePos、label

3.Agent:

使用下面的命令就可以使想要显示的Agent以AgentName出现在节点附件的方框内:$ns add-agent-trace $Agent AgentName

《NS与网络模拟》学习11——gawk

       gawk是一种程序语言,对于资料的处理具有很强的功能,可以使用很短的代码轻易地完成对文本档案做修改、分析、提取和比较等处理。在NS的模拟结果分析中,经常用到gawk来进行数据分析和统计等。命令如下:

       gawk 'program' input-file1 input-file2 ...                                 程序代码较短
       gawk -f program-file input-file1 input-file2...                           程序较长

       gawk程序是由很多的pattern和action所组成的:pattern   {action}。功能是针对文件的每一行搜寻指定的模式(pattern),当一行里有符合指定的模式时,gawk就会在此一行执行指定的动作(action)。

       一些系统变量:RS——记录分割符(默认:\n)    FNR——目前的输入档案已经被读取的记录个数
                         NR——所有输入档案已经被读取的记录个数
                         FS——栏分隔符(默认:空白字符) NF——目前记录有多少个栏位
                         OFS——输出栏位分隔符(初始值:空格) ORS——输出记录分隔符(初始值:\n)

Pattern包括:

       /regular expression/——正则表达式,如exp~/regexp/,exp!~/regexp/

       /expression/——单一表达式,值不为0或字串不空时视为匹配

       pat1,pat2——指定记录的范围

       BEGIN、END——gawk在开始执行或要结束时会分别执行BEGIN或END指定的action

       null——对于每个输入记录皆视为符合Pattern

Action包括:

       Expression——算术运算、比较运算、布尔运算、条件运算等

       控制语句——if、while、do-while、for、break、continue、next(next file)、exit

       内建函数——数值方面的函数(sqrt、exp、log、sin、rand、srand)

                       字串方面的函数(index、length、match、sprintf、sub、gsub、substr、tolower、toupper)

                       输入输出的内建函数(close、system)

        使用者定义的函数

August 10

《NS与网络模拟》学习9——代理和应用

一.Agent     

   agent代表了网络层分组的起点和终点,创建新型Agent:

      1)确定继承结构
      2)定义recv()方法和timeout()方法
      3)构造所需要的定时器
      4)定义OTCL Linkage函数
      5)写OTCL代码访问该agent

      比较熟知的两个agent协议分别是UDP和TCP,介绍见书。

二.应用层

      应用层程序建立在运输层代理(transport agent)之上,分为两大类:流量发生器(traffic generator)和应用模拟器(simulated application)。流量发生器一般用在UDP代理之上,应用模拟器一般用在TCP代理之上。

      运输层代理的API函数:NS通过一系列预先定义的API函数来模仿sockets API的功能。运输层代理和应用层程序是如何通过API通信并相互配合进行工作的?

     1)将运输层代理绑定到节点上,如:
       set src [new Agent/TCP/FullTcp]
       set sink [new Agent/TCP/FullTcp]
       $ns attach-agent $node_(s1) $src
       $ns attach-agent $node_(k1) $sink
       $ns connect $src $sink
     2)将应用层程序连接到运输层代理上,如:
       set ftp1 [new Application/FTP]
       $ftp1 attach-agent $src
     3)通过系统调用使用运输层代理
        这些调用可以在Otcl或C++中执行,包括:send()、sendmsg()、closse()、listen()、set_pketype
     4)运输层代理对应用程序的回调,包括:recv()、resume()等

     四个主要的流量发生器为(Application/Traffic/~):Exponential(按照指数ON/OFF分布产生数据)、Pareto(按照Parento ON/OFF分布产生数据)、CBR(按照一个确定的速率产生数据)、Trace(按照一个trace文件产生数据)。Traffic/Trace类使用attach-tracefile方法将一个Traffic/Trace对象和一个特定的Tracefile对象结合起来。

     应用模拟器包括:Applicaiton/FTP(attach-agent、start、stop、produce、producemore、send n)
                          Application/Telnet