在LINUX中建立NFS和TFTP应注意的几个问题

来源:互联网 发布:视频加边框软件 编辑:程序博客网 时间:2024/04/29 16:43

在LINUX中建立NFS和TFTP应注意的几个问题2007-07-02 10:52选中No firewallSystem services,去掉ipchains和iptables两项服务。在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。例如在宿主机/目录下执行:mount 192.168.2.32:/ /mnt然后到/mnt/目录下看是否可以列出/目录下的所有文件和目录,可以则说明mount成功,NFS配置成功。 33. 关于通过NFS mount宿主机硬盘调试应用程序的问题 嵌入式LINUX调试应用程序最主要的方式就是通过NFS mount宿主机硬盘上的应用程序来执行,通过观察其在串口终端打印的信息来达到调试的目的。在这个过程中,存在一个权限的问题,即板子mount宿主机硬盘后,这个NFS mount的操作默认的不是以root的权限执行的,因此一般的板子没有权限执行宿主机硬盘上的程序,这时就要在宿主机上执行chmod 777 app,其中app为应用程序可执行文件的名字。其实这种现象还是比较容易为开发人员解决的,因为当执行应用时,minicom就会报错, permision denied,或者unknown error 4。但对于有的情况就不一定这么容易看出是权限的问题:例如:调试WEB管理软件cgi代码时,我们把宿主机上/cgi-bin/通过NFS mount到板子的CGI工作目录/home/httpd/cgi-bin/上,这时通过浏览器IE执行CGI操作时,就会报错403,这里也是一个权限 的问题,即CGI要求其工作目录可写,这时就必须在宿主机上执行:chmod 777 /cgi-bin,这时浏览器里立刻就可以工作了。.宿主机LINUX安装注意事项及NFS的配置建议都采用REDHAT系列目前华恒所有产品的宿主机平台以REDHAT9.0为标准平台。有些手册上所建议的REDHAT7.2,现在都建议采用REDHAT9.0,当然REDHAT7.2/7.3的系统也都是可以用的,但鉴于市面上目前能买到的都是REDHAT9.0,所以建议采用REDHAT9.0宿主机配置中一个常见的问题就是NFS的配置,这里介绍一种较为直接简单的方法:首先在REDHAT LINUX PC机上执行setup,弹出菜单界面后,选中: System services,回车进入系统服务选项菜单,在其中选中 [*]nfs ,然后退出setup界面返回到命令提示符下。vim /etc/exports将这个默认的空文件修改为只有如下一行内容:(注意中间有空格)/ (rw)然后保存退出(:wq),然后执行如下命令:/etc/rc.d/init.d/nfs restartShutting down NFS mountd: [ OK ]Shutting down NFS daemon: [ OK ]Shutting down NFS quotas: [ OK ]Shutting down NFS services: [ OK ]Starting NFS services: [ OK ]Starting NFS quotas: [ OK ]Starting NFS daemon: [ OK ]Starting NFS mountd: [ OK ]这样就一切OK了!【注意】因NFS不会每次自动启动,即无法像linuxconf命令那样设置成Automatic启动方式,执行如下命令重启NFS服务:/etc/rc.d/init.d/nfs restart(最好把上面一句写入/etc/rc.local文件中,这样每次计算机重新启动就省去每次都要执行上面的命令来启动NFS服务)配置完成后,可用如下办法简单测试一下NFS是否配置好了:在宿主机上自己mount自己,看是否成功就可以判断NFS是否配好了。例如在宿主机/目录下执行:mount -o nolock 192.168.2.32:/ /mnt (有时若根目录不让读写,执行chmod 777 / 试试)然后到/mnt/目录下看是否可以列出/目录下的所有文件和目录,可以则说明mount成功,NFS配置成功。但实际上,REDHAT LINUX PC自己mount自己成功也不能完全说明NFS就可以工作了,因为还有一个防火墙的问题,一般的我们建议客户在安装REDHAT LINUX时就默认选择NO FIREWALL,但若客户没有这样选择的话,REDHAT 启动时会加载防火墙规则,这样你自己能 mount 自己,但其它PC和板子也无法mount这台PC。所以这时要运行setup关闭防火墙。注意!setup里面的防火墙显示永远都是HIGH,这个是 REDHAT一直的一个小BUG,即使你安装时默认选择了NO FIREWALL,setup里面也照样会显示防火墙设置是HIGH的,这个可以不必理会。只要你选择了一次NO FIREWALL就可以了。关于防火墙等问题,请参见您的光盘里面的PDF手册。另外,建议对LINUX操作不是非常熟悉的客户,务必请阅读我们手册附录 的“LINUX常用命令”。还有,就是REDHAT还有这样一个问题,就是加入网关设置后,网络建立TCP链接非常慢,例如FTP/TELNET/NFS等都是,建立 链接后,以太网通信还是很快的。若您安装网络时加入了网关,就会出现你在板子NFS mount REDHAT PC时,敲入mount -o nolock pcip:/ /mnt后非常长的时间不返回SHELL提示符,就一直停在那里,这就是建立连接的时间非常的长。一般的,遇到这种情况,建议在REDHAT LINUX PC上执行route del default即去掉网关,然后再进行NFS mount等操作就会非常快了。再有,若您用的不是华恒的开发板,那么可能您的busybox可能没有加入NFS mount的支持,这样您就需要重新编译busybox,加入NFS mount支持,然后更新ramdisk,重新烧写即可。 当然了,测试NFS你必须用以太网将板子和REDHAT LINUX PC连接起来才行,连接的方式有两种:一是板子和PC都用普通的网线接到HUB或者交换机上;二是用交叉网线将板子和PC直连起来,注意!这种网线是特制的,内部收发交换的!测试板子和PC网络是否连通的方式是:板子正常启动LINUX后,在minicom里面ping PC看是否能通即可,当然了,用PC来ping板子看是否通也是可以的。 注意:板子必须启动到LINUX后才能ping通,板子处在bootloader阶段一般是无法ping通的,即使这时板子的bootloader初始化 了以太网也不行。若板子跟PC的网络不通,mount报错信息为:# mount -o nolock 192.168.2.211:/ /mntmount: RPC: Unable to receive; eNrno = No route Fo hostmount: Sfsmount failed::Bad file descriptormount program didn't pass remote address!mount: Mounting 192.168.2.211:/ on /mnt failed: Invalid argument关于tftp服务安装的问题有些客户在安装REDHAT LINUX 时,有时没有选Custom-->Packages里面选择everything,导致没有安装tftp服务(典型的就是安装完成后没有 /tftpboot目录,setup-->system services里面也没有tftp选项 ),这时若要重新完全安装就太麻烦了,可如下单独安装改服务:<感谢深圳客户廖代国先生和瘦网虫提供资讯> 安装tftp 的方法: rpm -ivh foo-1.0-2.i386.rpm 其中foo-1.0-2.i386.rpm在Redhat9的第3张光盘里面。16.HHARM2410及HHARM9-EDU中ppcboot的烧写过程大致过程:(1).在PC机的终端上通过JTAG烧写器把ppcboot.bin烧写到flash中;(2).按复位键重启板子,切换到minicom终端(作为开发板的终端),在SDMK2410#提示符下键入命令操作以下步骤;(3).下载、烧写内核zImage;(4).下载、烧写文件系统。详细步骤:第一步:在PC机的shell提示符下,键入以下命令进入Image目录,进行烧写ppcbootcd /HHARM2410-R3/Images (cd /HHARM9-EDU/Images)./flash (或./SJF2410 /f:ppcboot.bin)会出现以下提示信息+------------------------------------+| SEC JTAG FLASH(SJF) v 0.3 | | (S3C2410X & SMDK2410 B/D) |+------------------------------------+Usage: SJF /f: /d=> S3C2410X(ID=0x0032409d) is detected.[SJF Main Menu]0:K9S1208 program 1:28F128J3A program 2:Memory Rd/Wr 3:ExitSelect the function to test:键入 1 选择flash的类型,再键入 0 选择烧写在flash中的位置,然后就会开始通过JTAG烧写器烧写ppcboot,此过程需要约10分钟。若以上过程没有异常退出,则烧写正常,尤其是其中这一句> S3C2410X(ID=0x0032409d) is detected.可以判断jtag已经连接上CPU,若此句变成ERROR: No CPU is detected(ID=0xffffffff).则有可能是jtag没有插好,或是插反了,或是jtag坏了,导致没能找到CPU的ID号。【注意】:jtag线有凸起的那边朝向核心板的外面,插到核心板的jtag插针上。如果使用了20针->10针的转接头,当插上JTAG到核心板上,留出PCB板多的一方朝向核心板的外面,如果插反了,会提示您没有找到CPU。第二步:在已经烧写了ppcboot的开发板上,通过TFTP下载内核按一下复位键:可以看到启动信息如下:PPCBoot 2.0.0 (Dec 15 2003 - 09:41:17)PPCBoot code: 33F00000 -> 33F15118 BSS: -> 33F18318DRAM Configuration:Bank #0: 30000000 64 MBFlash: 16 MBstart linux now(y/n):SMDK2410 # //需要立即按回车或其它键,让其停留在此提示符下,否则其会一直向下引导,可以按一下复位键,重复这一过程。SMDK2410 # tftp 0x30008000 zImage // 在SMDKE#提示符下键入的命令,通过TFTP下载内核。 I/O: 8000300, VID: 90000a46NetOurIP =c0a80278NetServerIP = c0a8027a //【注意】这里c0a8027a是为十六进制的TFTP服务器的IP地址,十进制表示为192.168.2.122,即要求TFTP服务器的IP地址必 须为192.168.2.122,这个地址是可以修改调整的,参见下面介绍。NetOurGatewayIP = c0a80201NetOurSubnetMask = ffffff00ARP broadcast 1ARP broadcast 2TFTP from server 192.168.2.122; our IP address is 192.168.2.120Filename 'zImage'.Load address: 0x30008000Loading: ####################################################################################################################################################doneBytes transferred = 753148 (b7dfc hex) //【注意】括号中的数值表示刚下载文件的大小。如果PC机上TFTP服务没有配置正确,或配置的TFTP服务器的IP地址和开板要求的不一致,会反复出现以下信息提示:Retry count exceeded; starting againNetOurIP =c0a80278NetServerIP = c0a80219NetOurGatewayIP = c0a80201NetOurSubnetMask = ffffff00ARP broadcast 1ARP broadcast 2ARP broadcast 3ARP broadcast 4ARP broadcast 5 第三步:烧写刚下载的内核SMDK2410 # fl 0x1040000 0x30008000 0xe0000说明: fl命令后的三个参数的意义为:第一个参数是烧写到Flash的地址;第二个参数是刚才通过tftp把文件下载到SDRAM中的地址;最后一个参数表示在 烧写指定的文件时,在flash中给这个文件的空间大小,请注意最后一个参数的值一定要比刚才通过tftp命令下载的文件的大小要大,否则,刚才的文件只 烧了部分,没有烧全。此值是由使用tftp命令下载的文件的大小确实的,在通过tftp命令下载的时候,最后会提示您(十六进制值的)文件的大小,保持最 后4个数字为"0"就可以了。可以在ppcboot提示符下键入help查看fl命令的帮助。tftp命令和fl命令后的所有十六进制数值在键入命令时, 0x前缀可以省略。start_sect=0x2,end_sect=0x7************erase sector 0x2***********************erase sector 0x3***********************erase sector 0x4***********************erase sector 0x5***********************erase sector 0x6***********************erase sector 0x7***********----------program sector 0x2-------------------program sector 0x3-------------------program sector 0x4-------------------program sector 0x5-------------------program sector 0x6-------------------program sector 0x7---------第四步:通过TFTP服务下载文件系统SMDK2410 # tftp 30800000 ramdisk.image.gz I/O: 8000300, VID: 90000a46NetOurIP =c0a80278NetServerIP = c0a8027a NetOurGatewayIP = c0a80201NetOurSubnetMask = ffffff00ARP broadcast 1ARP broadcast 2TFTP from server 192.168.2.122; our IP address is 192.168.2.120Filename 'ramdisk.image.gz'.Load address: 0x30800000Loading: #######################################################################################################################################################################################################################################################################################################################################doneBytes transferred = 1672929 (1986e1 hex)第五步:烧写刚下载的文件系统SMDK2410 # fl 1140000 30800000 220000start_sect=0xa,end_sect=0x16************erase sector 0xa***********************erase sector 0xb***********************erase sector 0xc***********************erase sector 0xd***********************erase sector 0xe***********************erase sector 0xf***********************erase sector 0x10***********************erase sector 0x11***********************erase sector 0x12***********************erase sector 0x13***********************erase sector 0x14***********************erase sector 0x15***********************erase sector 0x16***********----------program sector 0xa-------------------program sector 0xb-------------------program sector 0xc-------------------program sector 0xd-------------------program sector 0xe-------------------program sector 0xf-------------------program sector 0x10-------------------program sector 0x11-------------------program sector 0x12-------------------program sector 0x13-------------------program sector 0x14-------------------program sector 0x15-------------------program sector 0x16---------SMDK2410 #按一下开发板上的复位键,就可看到开发板的整个启动过程了。说明:TFTP服务器IP是在ppcboot中指定的,用户可以修改开发板和TFTP服务器的IP。vim ppcboot-2.0.0/include/configs/smdk2410.h修改如下一行:#define CONFIG_SERVERIP 192.168.2.122 //122.2.168.192然后重新编译ppcboot,编译步骤,请见下一个问题。重新烧写新的ppcboot.bin,就可从用户指定的IP下载烧写了。

原文:http://hi.baidu.com/wangy0919/blog/item/8bd8a703582d96ee08fa93ca.html

原创粉丝点击