hquatoy 发表于 2004-5-7 21:20:25

armlinux下mount nfs不成功?

我配置完內核,选择了tcp/ip和nfs文件支持,
重新编译了内核,但是在ep7312下mount时,
提示without support for the nfs,搞
不明白。存在的网络问题还有:
(1)在配置armlinux的网卡时没有
skyeye ne2k,是不是要打补钉,uclinux
看论坛是要,那armlinux呢,我找不到
补钉或其它相关的程序;
(2)ep7312下redhat9主机能够用tcp/ip访问
skyeye内的armlinux,但是用armlinux
里的tftp访问redhat9的tftp服务告知超时,
我的tftp服务测试没有问题,查了佷久没有结果,
请大侠指点迷津。

hquatoy 发表于 2004-5-9 09:19:47

(2)搞定,我真糊涂,忘记rh9的防火墙了.

chyyuu 发表于 2004-5-25 10:20:51

能够把你的支持nfs的内核img+filesystem + skyeye.conf
email给我吗?我想把它放到 testsuits中。
如果可以,增加一个简单使用的readme更好!

hquatoy 发表于 2004-5-26 14:38:42

还是有些问题,我搞定了就email给你.

chyyuu 发表于 2004-5-26 16:05:46

请用最新的skyeye-0.7.3试试!

hquatoy 发表于 2004-5-26 20:02:02

在http://www.augcyber.com/linux-world/nfs.htm有
好的介绍,同仁也一起试试,大家集思广益,开源项目的成功更
需要热情和奉献.

以下是原文转贴:

三、 建立基于nfs并使用BUSYBOX的根文件系统

  文件系统是LINUX操作系统的重要组成部分,在启动的的最后阶段,系统将会寻找init文件,建立init进程,并按照etc目录的一些脚本文件配置系统,完成系统的最后启动。文件系统主要有下面几个目录组成;

  /bin — 保存大多数象init、busybox、shell和文件管理程序等。
  /dev — LINUX操作系统的所有设备文件
  /etc — 系统配置文件
  /lib — 包含所有系统运行所必需的库文件。

  在嵌入式系统中,使用BUSYBOX是一个很好的选择,它包含了一百多种LINUX上标准的工具程序,仅需几百KBYTE空间(视所选择工具程序的数目来决定大小),BUSYBOX可在此下载,主要包含的命令如下:

adjtimex   dos2unixhead  makedevs   readlink  touch
ar     dpkg       hostid    md5sum   reboot
tr      ash        dpkg-deb   hostname  mkdir
renice    traceroute    basename   du      hush
mkfifo    reset      true      bash    dumpkmapid
mkfs.minix rm        tty      busybox  dutmp
ifconfig  mknod      rmdir     umount   cat
echo    init.busybox   mkswap    rmmod    uname
chat     ed        insmod    mktemp   route
uniq    chgrp      egrep     kbd     modprobe
rpm2cpio  unix2dos     chmod     env     kill
more     sed       update    chown   expr
killall   mount      setkeycodes uptime   chroot
false    klogd      msh      sh     usleep
chvt     fbset      lash      mt     sleep
uudecode   clear      fdflush    length    mv
sort     uuencode     cmp      find     llinuxrc
nc      stty       vi      cp      free
ln      nslookup     swapoff    watchdog  cpio
freeramdisk loadacm     pidof     swapon   wc
cut     fsck.minix    loadfont   ping    sync
wget     date       ftp      loadkmap  pivot_root
syslogd   which      dc      getopt    logger
poweroff   tail      whoami    dd     getty
login    printf     tar      xargs    deallocvt
grep    logname     ps      tee     yes
df      gunzip     logread    pwd     telnet
zcat     dirname    gzip      ls      test
dmesg    halt       lsmod     rdate    tftp


  BUSYBOX使用非常方便,只要建立一个符号连接即可,用户可以通过配置Config.h和Makefile文件来定制BUSYBOX。编译BUSYBOX的步骤如下:

  首先需要准备一下交叉编译器的头文件,将include目录中的头文件copy到sys-include目录中(如果曾经做过这一步骤,则跳过)。

# cd /usr/local/arm/arm-linux/sys-include
# rm –rf *
# cp –rf ../include/* .

  然后将busybox-0.60.5解压到/usr/src/arm目录中编译。

# cd /usr/src/arm
# tar xvzf busybux-0.60.5.tar.gz
# cd busybox-0.60.5
# make

  编译完成后就得到了二进制文件busybox。
  到现在为止,我们已经有了Liunx kernel及BUSYBOX,现在该到了制做根文件系统的时候了,首先建立根文件系统的目录:

# cd /usr/src/arm
# mkdir nfs

  紧跟着再建立一些“标准”的目录。

# cd nfs
# mkdir dev etc bin lib proc mnt tmp var
# chmod 755 dev etc bin lib mnt tmp var
# chmod 555 proc
# ln -s bin sbin

  进入dev目录下建立设备文件。

# cd dev
# mknod zero c 1 5
# mknod kmem c 1 2
# mknod mem c 1 1
# mknod null c 1 3
# mknod pt0 c 96,0
# mknod ptmx c 5 2
# mknod ptya0 c 2 176
# mknod tty c 5 0
# mknod tty0 c 4 0
# mknod tty1 c 4 1
# mknod tty2 c 4 2
# mknod tty3 c 4 3
# mknod tty4 c 4 4
# mknod tty5 c 4 5
# mknod tty6 c 4 6
# mknod tty7 c 4 7
# mknod tty8 c 4 8
# mknod tty9 c 4 9
# mknod ttyAM0 c 204 16
# mknod ttyAM1 c 204 17
# ln –s console ttyAM0
# chmod 666 *

  然后再进入etc目录,建立相应的文件,为方便起见,可直接下载etc.tar.gz,并解压到etc目录中。

# cd ../etc
# tar xvzf etc.tar.gz

  最后,将busybox copy到bin目录中,分别使用ln –s建立每一个命令的符号连接。至此,LINUX的根文件系统已经建立,但应该注意的是busybox需要glibc支持(如果使用静态连接则不需要glibc库文件),因此还需要将运行busybox所需的库文件copy到lib目录中,并建立符号连接。

# cd ../lib
# cp /usr/local/arm/arm-linux/lib/libc-2.1.3.so .
# cp /usr/local/arm/arm-linux/lib/ld-2.1.3.so .
# ln –s libc-2.1.3.so libc.so.6
# ln –s ld-2.1.3.so ld-linux.so.2

  然后,使用ldconfig建立缓存文件/etc/ld.so.cache。

# cd ..
# ldconfig –r .

  到此为止,基于nfs并使用BUSYBOX的根文件系统已经完全建立起来,并且随时可供使用,当然,为了让EVB7312目标板能够从宿主机通过以太网安装nfs根文件系统,LINUX宿主机需要启动NFS服务(注意:需要关掉防火墙,将宿主机IP设为192.168.1.9),配置etc/exports文件,在exports文件中加入如下语句:

/usr/src/arm/nfs 192.168.1.*(rw)

  并执行exportfs –rv,以便etc/exports与数据库同步。

  再按照上一节的描述,使用lilo重新启动LINUX for EP7312,可以看到系统已经可以完全启动,启动信息如下:

LILO>load c0028000 Image

ARP broadcast 1

eth addr: 20:39:aa:00:12:0c

TFTP from server 192.168.1.9; our IP address is 192.168.1.1

Filename 'Image'.

Load address: 0xc0028000

Loading:

########################################################################
########################################################################
########################################################################
#################################

done
Bytes transferred = 1173015 (11e617 hex)
LILO>boot

Starting kernel ...

Linux version 2.4.13-ac4-rmk1 (root@AugCyber) (gcc version 2.95.2 19991024 (release)) #1 Thu Jun 5 19:08:10 EDT 2003
Processor: ARM ARM720T revision 2
Architecture: Cirrus Logic EDB7312 (EP7312 evaluation board)
On node 0 totalpages: 4096
zone(0): 4096 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/nfs nfsroot=192.168.1.9:/usr/src/arm/nfs ip=192.168.1.1
Calibrating delay loop... 36.76 BogoMIPS
Memory: 16MB = 16MB total
Memory: 14760KB available (1042K code, 221K data, 52K init)
Dentry-cache hash table entries: 2048 (order: 2, 16384 bytes)
Inode-cache hash table entries: 1024 (order: 1, 8192 bytes)
Mount-cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 1024 (order: 0, 4096 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Starting kswapd v1.8
pty: 256 Unix98 ptys configured
block: queued sectors max/low 9717kB/3239kB, 64 slots per queue
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
cs89x0:cs89x0_probe(0x0)
PP_addr=0x3000
cs89x0.c: v2.4.3-pre1 Russell Nelson <[email protected]>, Andrew Morton <[email protected]>
eth0: cs8900 rev J found at 0xfc000000
cs89x0 media RJ-45, IRQ 7, programmed I/O, MAC 01:02:03:04:05:06
cs89x0_probe1() successful
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 512 buckets, 4Kbytes
TCP: Hash tables configured (established 1024 bind 1024)
eth0: using half-duplex 10Base-T (RJ-45)
IP-Config: Guessing netmask 255.255.255.0
IP-Config: Complete:
device=eth0, addr=192.168.1.1, mask=255.255.255.0, gw=255.255.255.255,
host=192.168.1.1, domain=, nis-domain=(none),
bootserver=255.255.255.255, rootserver=192.168.1.9, rootpath=
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
NetWinder Floating Point Emulator V0.95 (c) 1998-1999 Rebel.com
Looking up port of RPC 100003/2 on 192.168.1.9
Looking up port of RPC 100005/1 on 192.168.1.9
VFS: Mounted root (nfs filesystem).
Freeing init memory: 52K
init started: BusyBox v0.60.5 (2003.06.11-18:11+0000) multi-call binary
mount: /etc/mtab: Permission denied
mount: /etc/mtab: Permission denied
Starting syslogd.

Please press Enter to activate this console.


BusyBox v0.60.5 (2003.06.11-18:11+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

# ls
bin dev etc lib mnt proc sbin tmp var
#

  通过前面三节的学习,我们已经建立并启动了一个完整的嵌入式LINUX操作系统,不过我们同时也已经注意到它是通过以太网络载入并启动,对于嵌入式系统,很多场合需要直接从FLASH启动LINUX,我们将在后面的章节中学习如何制作RAMDISK,以及如何从FLASH启动嵌入式LINUX操作系统。

faif 发表于 2004-12-6 20:21:41

<<我们将在后面的章节中学习如何制作RAMDISK,以及如何从FLASH启动嵌入式LINUX操作系统。>>

What is following chapter, about Ramdisk?? not NFS??
页: [1]
查看完整版本: armlinux下mount nfs不成功?