在linux 下配置IPv6和TAHI(router部分)

? 说明: 
首先在NUT上安装linux,版本为Red Hat 7.3 ,其Kernel版本为2.4.18-3。 
TN上的操作系统仍为FreeBSD4.5。 
一、NUT的配置 
1)安装USAGI 
    首先从ftp://ftp.linux-ipv6.org/pub/usagi/stable/kit/下载适合于NUT配置的软 
件包,这里使用的是RedHat7.3+Kernel2.4.18-3,所以下载usagi-linux24-stable-200 
20408.tar.bz2即可。下载后放在某目录下:$SOMEWHERE 
    安装步骤如下:(以下内容可以在$SOMEWHERE/INSTALL.USAGI文档中找到) 
---------a. 解压缩 
         bzip2 –cd usagi-linux24-stable-20020408.tar.bz2 | tar xvf – 
    解压成功后可以在$SOMEWHERE目录下看到多了usagi目录 
---------b. 构建前的准备 
         cd $SOMEWHERE/usagi 
      make prepare TARGET= $(TARGET) 
其中$(TARGET)根据系统的配置来写,这里Kernel是2.4.18的,所以TARGET=linux24。 
如果kernel是2.2.XX的,则TARGET=linux22 
---------c. 构建USAGI内核 
     cd kernel 
  cd $(TARGET) 
  make mrproper 
  make menuconfig (为了正确的配置内核选项,打开 
$SOMEWHERE/usagi/CONFIG.$(TARGET)文件,按照其中的提示一步一步去设置,这里参照 
CONFIG.linux24) 
  make dep 
  make bzImage 
  make modules 
---------d. 安装USAGI内核 
    su  (变为root身份) 
    make install 
 make modules_install 
 vi /etc/grub.conf 
此时可以看到grub引导启动选项中多出了一项 RedHat+usagi,修改default值使启动时 
默认进入usagi内核。 
-------- e. 构建并安装用户应用程序 
     cd $SOMEWHERE/usagi/usagi 
  ./configure 
  make 
  su 
  make install 
至此usagi内核的基本安装已经完成,重新启动机器,在grub引导界面中选择含有usagi 
的一项启动即可。 
(注:实际测试过程中按照上面的配置测到stateless autoconfiguration的时候就会出 
现一些异常的Fail。这个问题一直没有解决,后来重新编译了linux原来的内核,原来F 
ail的测试例就能顺利通过了,具体方法如下: 
        进入kernel的目录: 
          cd /usr/src/linux2.4.18-3 
        设置各种选项 
          make xconfig  (IPv6: allow default route when forwarding is enable 
d设为Y) 
        编译 
         make dep 
         make bzImage 
         make modules 
         make install 
         make modules_install 
然后重新启动,选择不含有usagi的那项RedHat7.3即可。) 
2) 配置成IPv6的router 
由于linux的版本为最新的Red Hat7.3,所以在它的内部已经集成了对IPv6的支持。 
可以先利用ifconfig命令查看网络配置,其中可以看到inet xxx.xxx.xxx.xxx的字样, 
表示该网卡对应的IPv4地址(Link Local Address)。 
然后执行以下指令: 
    cd /etc/sysconfig 
    vi network 
可以看到文件network中的内容。在其中添加: 
NETWORKING_IPV6=”yes” 
IPV6FORWARDING=”yes” 
IPV6INIT='yes' 
IPV6_DEFAULTGW="3ffe:501:ffff:100::1%eth0" 
     保存并退出。 
注:/etc/sysconfig目录下的所有文件配置内容(例如下面的ifcfg-eth0和ifcfg-eth1 
)的各个可选参数都可以参考/usr/share/doc/initscripts-6.67/sysconfig.txt文件, 
里面有很详细的说明。 
   另外,还需要修改其他几个文件的内容,分别如下: 
   1./etc/sysconfig/network-scripts/ifcfg-eth0,在其中添加入下语句: 
IPV6INIT='yes' 
IPV6to4INIT='yes' 
IPV6FORWARDING='yes' 
IPV6ADDR="3ffe:501:ffff:100:205:5dff:fea1:b73c/64" 
同样,在/etc/sysconfig/network-scripts/目录下的ifcfg-eth1文件中添加如下语句: 
 
IPV6INIT='yes' 
IPV6TO4INIT='yes' 
IPV6FORWADING='yes' 
IPV6ADDR="3ffe:501:ffff:101:205:5dff:fea1:c15c/64" 
     2.打开/etc目录下的sysctl.conf文件,看是否有如下语句: 
               net.ipv6.conf.all.forwarding  =  1          如果没有则加上 
     3. 修改重定向设置。 
在/etc/rc.d/rc.local中加入如下语句: 
for f in /proc/sys/net/ipv6/conf/*/accept-redirects 
do 
 echo 1 > $f 
done 
4.TAHI系统为linux的测试配置中缺少一些测试需要的rmt文件,需要在/usr/local/v6 
eval/bin/linux-v6/目录下创建,另外还有几个已经存在的rmt文件内容还需要根据lin 
ux的使用方法加以修改,具体如下: 
(1)route.rmt,用于在被测试机器上添加和删除路由地址的操作。内容如下: 
(加粗的地方需要特别注意) 
use V6evalRemote; 
$rOpt_timeout = 5 if ! defined $rOpt_timeout; 
$rOpt_addrfamily = "inet6" if ! defined($rOpt_addrfamily); 
$rOpt_addrtype = "host" if ! defined($rOpt_addrtype); 
$rOpt_netmask = "255.255.255.0" if ! defined($rOpt_netmask); 
rOpen() || goto error; 
rLogin($rOpt_timeout) || goto error; 
$ROUTECMD = "route"; 
if ($rOpt_cmd eq "add") { 
 $NUT_cmd = "add"; 

elsif ($rOpt_cmd eq "delete") { 
 $NUT_cmd = "del"; 

else { 
    print "$rOpt_cmd: unknown cmd/n"; 
    goto error; 

if ($rOpt_addrfamily eq "inet6") { 
    if ($rOpt_prefix eq "default") { 
 rCommand("$ROUTECMD ". 
   "-A $rOpt_addrfamily ". 
   "$NUT_cmd ". 
   ":: ". 
   "gw $rOpt_gateway ". 
   "dev $rOpt_if", 
   $rOpt_timeout) || goto error; 
    } 
    else { 
 rCommand("$ROUTECMD ". 
   "-A $rOpt_addrfamily ". 
   "$NUT_cmd ". 
   "$rOpt_prefix/$rOpt_prefixlen ". 
   "gw $rOpt_gateway ". 
   "dev $rOpt_if", 
   $rOpt_timeout) || goto error; 
    } 

elsif ($rOpt_addrfamily eq "inet") { 
    if ($rOpt_addrtype eq "net") { 
 rCommand("$ROUTECMD ". 
   "-A $rOpt_addrfamily ". 
   "$NUT_cmd ". 
   "-net ". 
   "$rOpt_prefix ". 
   "netmask $rOpt_netmask ". 
   "gw $rOpt_gateway ". 
   "dev $rOpt_if", 
   $rOpt_timeout) || goto error; 
    } 
    else { 
 rCommand("$ROUTECMD ". 
   "-A $rOpt_addrfamily ". 
   "$NUT_cmd ". 
   "$rOpt_prefix ". 
   "gw $rOpt_gateway ". 
   "dev $rOpt_if", 
   $rOpt_timeout) || goto error; 
    } 

else { 
    print "$rOpt_addrfamily: unknown address family/n"; 
    goto error; 

rLogout($rOpt_timeout) || goto error; 
rClose(); 
exit($V6evalRemote::exitPass); 
error: 
    rClose(); 
    exit($V6evalRemote::exitFail); 
notsupported: 
    rClose(); 
    exit($V6evalRemote::exitNS); 
(2)radvd.rmt,用于启动和停止NUT上的Router Advertisement Daemon。内容如下: 
 
(加粗的地方需要特别注意) 
use V6evalRemote; 
#exit($V6evalRemote::exitNS); # delete this line, and modify 
rOpen() || goto error; 
$type=rType(); 

if($rOpt_Start && !$rOpt_link0 && !$rOpt_link1) { 
    print STDERR "Specify link0=XXX and/or link1=XXX/n"; 
    goto error; 


$rOpt_timeout=5 
    if ! defined($rOpt_timeout); 

$rOpt_maxinterval=600 
    if ! defined($rOpt_maxinterval); 
$rOpt_mininterval=$rOpt_maxinterval*0.33 
    if ! defined($rOpt_mininterval); 

$rOpt_chlim=64 
    if ! defined($rOpt_chlim); 
$rOpt_raflag=0 
    if ! defined($rOpt_raflag); 
$rOpt_rltime=$rOpt_maxinterval*3 
    if ! defined($rOpt_rltime); 
$rOpt_rtime=0 
    if ! defined($rOpt_rtime); 
$rOpt_retrans=0 
    if ! defined($rOpt_retrans); 

$rOpt_pinfoflags=192 
    if ! defined($rOpt_pinfoflags); 
$rOpt_vltime=2592000 
    if ! defined($rOpt_vltime); 
$rOpt_pltime=604800 
    if ! defined($rOpt_pltime); 

$rOpt_mtu=1500 
    if ! defined($rOpt_mut); 

$rtadv_tmpl="$type".".rtadvd.tmpl"; 
$rtadv_conf="$type".".rtadvd.conf"; 
$rtadv_rmt="/tmp/rtadvd.conf"; 
$put_timeout=180; 

rLogin($rOpt_timeout) || goto error; 
rtadvd() || goto error; 
rLogout($rOpt_timeout) || goto error; 
rClose(); 
exit($V6evalRemote::exitPass); 
error: 
    rClose(); 
    exit($V6evalRemote::exitFail); 
######################################################################## 
sub rtadvd() 

    if($rOpt_start) { 
 mkconf() || goto error; 
 kill_rtadvd() || goto error; 
 start_rtadvd() || goto error; 
    } elsif($rOpt_stop) { 
 kill_rtadvd() || goto error; 
    } else { 
 print "Nothing happed. Please specify start/stop./n"; 
    } 
    return(1); 
error: 
    return(0); 


sub mkconf() 

    print "Make rtadvd.conf/n" if $V6evalRemote::debug; 
    if(open(IN, "$rtadv_tmpl") == 0) { 
 print STDERR "$rtadv_tmpl: $!/n"; 
 goto error; 
    } 
    if(open(OUT, "> $rtadv_conf") == 0) { 
 print STDERR "$rtadv_conf: $!/n"; 
 goto error; 
    } 
    while(<IN>) { 
 s/LINK0/$rOpt_link0/; 
 s/LINK1/$rOpt_link1/; 
 # 
 s/MAXINTERVAL/$rOpt_maxinterval/; 
 s/MININTERVAL/$rOpt_mininterval/; 
 s/CHLIM/$rOpt_chlim/; 
 s/RAFLAGS/$rOpt_raflags/; 
 s/RLTIME/$rOpt_rltime/; 
 s/RTIME/$rOpt_rtime/; 
 s/RETRANS/$rOpt_retrans/; 
 # 
 s/PINFOFLAGS/pinfoflags#$rOpt_pinfoflags/; 
 s/VLTIME/$rOpt_vltime/; 
 s/PLTIME/$rOpt_pltime/; 
 # 
 s/MMTU/$rOpt_mtu/; 
 # 
 print STDERR $_ if $V6evalRemote::debug; 
 print OUT $_; 
    } 
    close(IN); 
    close(OUT); 
    print "Put local:$rtadv_conf to remote:$rtadv_rmt/n" 
 if $V6evalRemote::debug; 
    rPutfile($rtadv_conf, $rtadv_rmt, $put_timeout) || goto error; 
    return(1); 
error: 
    return(0); 


sub kill_rtadvd 

    my(@lines); 
    my($pid)=0; 
    rCommand("ps ax", $timeout) || goto error; 
    @lines=rCmdOutput(); 
    shift(@lines); # remove command line 
    pop(@lines);   # remove command prompt 
    foreach(@lines) { 
 if(/^/s*(/d+)/s+(/S+)/s+(/S+)/s+(/S+)/s+(/S+radvd)/) { 
      $pid=$1; 
 } 
    } 
    if($pid) { 
 print "Kill current rtadvd (pid=$pid)/n" if $V6evalRemote::debug; 
         rCommand("kill $pid", $timeout) || goto error; 
    } 
    return(1); 
error: 
    return(0); 


sub start_rtadvd() 

    print "Start rtadvd/n" if $V6evalRemote::debug; 
    if(rCommand("/usr/sbin/radvd -C $rtadv_rmt ". 
  "$rOpt_link0 $rOpt_link1", $timeout) != 1) { 
 return(0); 
    } 
    return(1); 

与之相关的还要在$SOMEWHERE(ct测试集所在目录)/nd目录下添加linux-v6.rtadvd.t 
mpl模板文件,因为radvd.rmt要以这个模板文件为基础在NUT上生成radvd的临时配置文 
件/tmp/rtadvd.conf,创建模板文件内容如下: 
interface LINK0 

    AdvSendAdvert on; 
    MaxRtrAdvInterval MAXINTERVAL; 
 MinRtrAdvInterval MININTERVAL; 
 AdvCurHopLimit CHLIM; 
    AdvReachableTime RTIME; 
 AdvRetransTimer RETRANS; 
 AdvLinkMTU MMTU; 
 AdvDefaultLifetime RLTIME; 
 prefix 3ffe:501:ffff:100::/64 
 { 
    AdvOnLink on; 
       AdvAutonomous on; 
    AdvRouterAddr off; 
    AdvValidLifetime VLTIME; 
    AdvPreferredLifetime PLTIME; 
 }; 
}; 
interface eth1 

    AdvSendAdvert on; 
    MaxRtrAdvInterval MAXINTERVAL; 
 MinRtrAdvInterval MININTERVAL; 
 AdvCurHopLimit CHLIM; 
    AdvReachableTime RTIME; 
 AdvRetransTimer RETRANS; 
 AdvLinkMTU MMTU; 
 AdvDefaultLifetime RLTIME; 
 prefix 3ffe:501:ffff:101::/64 
 { 
    AdvOnLink on; 
       AdvAutonomous on; 
    AdvRouterAddr off; 
    AdvValidLifetime VLTIME; 
    AdvPreferredLifetime PLTIME; 
 }; 
}; 
3)manualaddrconf.rmt需要修改(anycast的部分  linux还没有支持) 
4)需要添加mtuconfig.rmt文件 
    然后保存文件并重新启动机器(reboot)。这时网络接口将会完全自动的根据Rout 
er Advertisement配置好自己的IPv6地址。可用ifconfig再次查看,能够看到inet6 xx 
xx:xxxx……的字样,表示其IPv6的Link Local Address。 
3)串行通信配置(在后面的串行连接设置中具体说明) 
二、  TN的配置 
(FreeBSD4.5已经集成了对IPv6的支持,所以下面只讲配置TAHI的过程) 
1)安装v6eval软件包 
1. 解压缩: 
执行下列命令 
        cd $SOMEWHERE  (进入包含v6eval包的目录) 
        tar zxvf v6eval-X.X.tar.gz  (X.X指不同的v6eval版本号) 
   解压缩成功后,在$SOMEWHERE目录下可看到解好的v6eval-X.X目录。 
2. 安装perl相关的模块: 
系统需要安装以下的软件包 
 - Perl5 
 - Expect 
 - IO-Stty 
 - IO-Tty 
其中除了Perl5是安装盘内带的,其他的软件包都只能够下载 
安装方法: 
在/usr/ports/lang/p5-Expect目录下执行make install 
如果/usr/ports/distfiles/目录里面有对应的软件包,系统将一次性安装好 
      - Expect、IO-Stty、IO-Tty 
如果该目录内没有对应的软件包,系统会自动连接ftp站点并且下载和安装的。在不使用 
的代理的情况下,可以在ftp://ftp.kddlabs.co.jp/lang/perl/CPAN/modules/by-modu 
le/找到这三个包。(这三个软件包已经下载,备份并且放好在系统制定的安装目录/us 
r/ports/distfiles/下以后安装的时候就直接放到/usr/ports/distfiles/就好了) 
3. 编译并安装v6eval包 
解包后,进入所在目录执行以下的步骤 
cd $SOMEWHERE/v6eval-X.X 
make 
make install(这步需要root权限) 
将会将v6eval成功的安装在/usr/local/v6eval目录 
然后切换到root或者su权限,安装bpf设备,执行以下步骤: 
cd /dev 
./MAKEDEV bpf1 bpf2 bpf3 bpf4 bpf5 bpf6 bpf7 
=============================================== 
? 软件配置 
需要修改tn.def和nut.def这两个文件,它们均在/usr/local/v6eval/etc目录下。目录 
里面还有tn.def.sample和nut.def.sample两个示例文件。通过它们来生成tn.def和nut 
..def,方法如下: 
用root权限分别执行 
 cd /usr/local/v6eval/etc 
 cp tn.def.sample tn.def 
 cp nut.def.sample nut.def 
对配置文件tn.def进行编辑: 
       vi tn.def 
(修改文件内容之前最好将原文件先做一备份,以便能够方便的恢复原始文件内容。对 
后面的步骤也是如此。) 
这个文件中我们需要进行的改动是: 
 ... 
 Link0 de0 00:00:00:00:01:00 
    Link1 de1 00:00:00:00:01:01 
 ...   ~~~ 将预设的测试点的设备名称改成实际的设备名称,注意,是TN,也就是运行 
测试的机器的网卡的设备名称,该设备名称可以用ifconfig看网卡的设备名称,我们所 
使用的测试机的设备名称是vr0,vr1。 
同样,对配置文件nut.def进行编辑: 
        vi nut.def 
在文件中需要修改的有: 
        System   -----   要改成被测试机器的类型,这里设为linux-v6 
                        (这里很重要,关系到TN是否能够通过远程登录来重启NUT, 
如果不知道具体写什么,可以到/usr/v6eval/bin/目录下去找) 
        HostName  -----    被测试机器的名字 
        Type       -----    被测试机器的类型,这里改为router 
        User       ------   被测机器超级用户的用户名,一般为root 
        Password   ------   超级用户的密码,我们设为csnet1 
... 
     Link0 de0 00:00:92:a7:6d:f5 
        Link1 de1 00:00:5d:b1:3c:7e 
 ...       ~~~ ~~~~~~~~~~~~~~~将预设的被测试点的设备名称和Mac地址改成实际的设 
备名称和Mac地址,注意,是被测试点,也就是被测试Ipv6实现的机器的网卡的设备名称 
和MAC。我们所使用的网卡设备名为vr0,物理地址可以通过在NUT上执行ifconfig来查看 
到。 
================================================= 
? 运行一些示例: 
v6eval包里面不包含IPv6一致性测试的文件,但是它自带了示例(sample)文件,可以运 
行一下看看以上的配置是否成功,执行步骤如下: 
     cd $SOMEWHERE/sample 
  /usr/local/v6eval/bin/autorun INDEX 
    然后可以打开生成的index.html文件来察看运行结果。 
    因为不是正式的测试,所以看到一些“FAIL”字样也没有关系。 
    (但如果配置成功的话,起码前面几个TEST都应该能够PASS) 
2)安装ct包(Conformance Test) 
首先,确认v6eval包已经安装完成后,才可以开始安装ct包。 
1. 解压缩: 
   执行  tar zxvf ct-X.X.tar.gz 
解压完毕后将会在当前目录下看到解好的ct-X.X目录。 
2. 安装ct包: 
进入所在目录执行以下的步骤 
cd ct-X.X 
su 
make install 
以上步骤将会将v6eval成功的安装在/usr/local/v6eval/ct目录 
但是注意不要在这个目录下进行测试。 
3. 备份ct包: 
      把上面的ct目录拷贝到任何一个其他的目录备份起来,执行: 
              cp -pR /usr/local/v6eval/ct  $SOMEWHERE/ct 
           chmod -R +w $SOMEWHERE/ct 
      然后在备份目录进行测试。 
3)其他配置 
(1)删除或者改名/etc/resolv.conf以防止发布影响测试的不必要的分组 
(2)修改文件/usr/local/v6eval/etc/tn.def 
   RemoteDevice 设为 /dev/cuaa0 
其他除link0一项外,都可以用tn.def.sample中的默认设置。 
Link0 后面必须写明网卡的设备名(vr0)和虚拟的MAC地址(00:00:00:00:01:00)。 
   另外,为了记录远程登陆的日志,将RemoteLogout的值设为1。这样在测试的过程中 
就能看到一些远程登陆过程的信息。 
(3)修改文件/usr/local/v6eval/etc/nut.def 
System设为linux-v6 
HostName 改为NUT的主机名称,如“iut.cs.tsinghua.edu.cn” 
Type 是指NUT的类型,这里将NUT配置为router 
(这里注意检查一下是否有多余的字符,如空格等,如有应当删掉) 
User 改为NUT的超级用户名,一般为root 
Password 改为超级用户的密码。 
Link0 后面填写网卡的设备名和NUT的MAC地址,例如: 
       Link0       eth0    00:90:27:14:ce:da(NUT的实际值) 
(4) 安装和使用Router Adervertisement Daemon 
    在RedHat7.3中已经安装好了radvd,可以通过man radvd命令察看更详细的帮助。相 
关文件有: 
 /etc/radvd.conf     这个文件是默认的radvd配置文件,系统启动时会自动按照该文 
件的配置启动radvd,这是TAHI系统不希望的,所以测试前将该文件改名。这样系统启动 
时就无法自动加载radvd了。 
/etc/rc.d/init.d/radvd 这个文件控制radvd的启停操作等,标准内容如下,可作为参 
考: 
# Location of radvd binary 
BINRADVD="/usr/local/sbin/radvd" 
# Location of radvd config file 
CONFRADVD="/etc/radvd.conf" 
# Additional RADVD options (see manpage for more details= 
OPTIONSRADVD=""   # No additional option 
#OPTIONSRADVD="-d 9"  # Set debug level to 9 
# set -x 
# Source function library. 
. /etc/rc.d/init.d/functions 
# Get config. 
. /etc/sysconfig/network 
# Check that networking is enabled 
if [ ! ${NETWORKING} = "yes" ]; then exit 0; fi 
# Check that IPv6 networking is enabled 
if [ ! ${NETWORKING_IPV6} = "yes" ]; then exit 0; fi 
# Check for executable given binary 
if [ ! -x $BINRADVD ]; then 
    echo -e "/a Missing binary '$BINRADVD'" 
    exit 1 
fi 
# Check for existing configuration file 
if [ ! -f $CONFRADVD ]; then 
    echo -e "/a Missing configuration file '$CONFRADVD'" 
    exit 1 
fi 
# See how we were called. 
case "$1" in 
  start) 
 echo -n "Start IPv6-Router Advertisement Daemon" 
        # Start daemon 
        daemon $BINRADVD -C $CONFRADVD $OPTIONSRADVD 
 RETVAL=$? 
 echo 
 [ $RETVAL -eq 0 ] && touch /var/lock/subsys/radvd 
        ;; 
  stop) 
 echo -n "Stop IPv6-Router Advertisement Daemon" 
 killproc radvd 
 RETVAL=$? 
 echo 
 [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/radvd 
        ;; 
  restart|reload) 
 $0 stop 
 $0 start 
 RETVAL=$? 
 ;; 
  *) 
 echo "Usage: radvd {start|stop|restart|reload}" 
        exit 1 
        ;; 
esac 
exit $RETVAL 
================================================ 
三、TN和NUT之间的串行连接配置 
1.硬配置: 
TN和NUT之间用串行对联线 
    COM1            COM1 
 TN -------------------- NUT 
         serial line 
        (Null-modem cable) 
串行线接法的示意图如下 
 1 DCD ********** open ********* 1 DCD 
 2 RXD ------------------------- 3 TXD 
 3 TXD ------------------------- 2 RSD 
 4 DTR ------------------------- 6 DSR 
 6 DSR ------------------------- 4 DTR 
 5 GND ------------------------- 5 GND 
 7 RTS ------------------------- 8 CTS 
 8 CTS ------------------------- 7 RTS 
 9 CE  ********** open ********* 9 CE 
2.对NUT进行软配置(Red Hat 7.3 --– Kernel 2.4.18-3) 
    (1)/etc/resolv.conf和/etc/radvd.conf 
       删除或者改名/etc/resolv.conf以防止发布影响测试的不必要的分组 
       将radvd.conf改名,以便重新启动机器时不自动开启radvd。 
     (2)NUT以超级用户root身份登陆,使用的login shell是 /bin/csh,确保可以正常 
登陆 
   (3) /etc/inittab 
    修改/etc目录下的inittab文件,在其中添加一行: 
S0:345:respawn:/sbin/agetty 9600 cua0 
    保存文件之后,运行init q即可更新。 
3.cu命令 
     要运行cu命令,用超级用户的权限在TN上执行 
  touch /var/log/aculog 
  chmod a+rw /var/log/aculog 
为检查是否配置成功,可以执行以下指令: 
cu -l /dev/cuaa0 
如果配置成功,将显示Connected,然后登入NUT机器,提示用户log in。 
(注意:要保证/var目录下有一定的剩余空间,否则会提示/var:file system full的信 
息,连接始终不成功。删掉一些东西之后问题即可解决。) 
为了能够以root身份登录,还需要修改/etc目录下的securetty文件的内容。在其中添加 
一行cua0即可,这样TN就可以使用超级用户root的身份登入NUT的系统了。 
如果配置不成功,可以更改一下/dev/cuaa0的修改权限设置,如执行 
chmod 777 /dev/cuaa0 
         (另外,这里注意TN中/etc目录下的ttys文件不应当修改,即不应该增加cua 
a0那一行。否则会出现错误。) 
然后重新启动TN和NUT,这样通过串行口的连接就设置好了。 
至此,一切配置完毕,接下来就可以运行ct测试集了,执行如下步骤: 
  cd $SOMEWHERE/ct 
 make clean   (此命令将会清除原来存在的全部测试结果记录,所以若要保存原来的 
结果,应当将该/ct下的内容复制到其他地方然后再进行新的测试) 
  make test 
测试需要几个小时的时间,测试结束后可以在$SOMEWHERE/ct/index.html查看所有测试 
的结果。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值