Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1053899
  • 博文数量: 139
  • 博客积分: 1823
  • 博客等级: 上尉
  • 技术积分: 3403
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-05 09:54
文章存档

2014年(7)

2013年(16)

2012年(48)

2011年(68)

分类: 嵌入式

2011-10-10 20:22:07


NFS起根文件系统的制作

1,修改已经配置好的内核的.config文件中的CMDLINE(命令行启动参数):gedit .config
  1. 327 # CONFIG_CMDLINE="root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rw"//屏蔽此行
  2. 328 CONFIG_CMDLINE="root=/dev/nfs nfsroot=192.168.0.16:/nfsroot/rootfs,nfsvers=3 ip=192.168.0.100 rw console=ttySAC0 mem=64M"
root=/dev/nfs  这个是告诉内核用的是NFS设备

console=ttySAC0 这个是控制台

nfsroot=192.168.0.16:/nfsroot/rootfs 这个是根文件系统在主机上的路径和主机的IP

ip=192.168.0.100 开发板IP


2,要使内核支持NFS起根文件系统,内核必须选上如下配置:

File Systems-->Network File System-->

  │ │    --- Network File Systems                                         │ │  
  │ │    <*>   NFS client support                                         │ │  
  │ │    [*]     NFS client support for NFS version 3                     │ │  
  │ │    [*]       NFS client support for the NFSv3 ACL protocol extension│ │  
  │ │    [ ]     NFS client support for NFS version 4 (EXPERIMENTAL)      │ │  
  │ │    [*]     Root file system on NFS

3,制作根文件系统,方法可以参考国嵌的实验手册4-3-2.


4,从tftp下载内核,然后再用bootm命令启动内核,如下:
  1. [MY2440]# tftp 0x30000000 uImage.img
  2. dm9000 i/o: 0x19000300, id: 0x90000a46
  3. DM9000: running in 16 bit mode
  4. MAC: 08:00:3e:26:0a:5b
  5. operating at unknown: 0 mode
  6. Using dm9000 device
  7. TFTP from server 192.168.0.16; our IP address is 192.168.0.100
  8. Filename 'uImage.img'.
  9. Load address: 0x30000000
  10. Loading: ###########################################################
  11.          ###########################################################
  12.          ######
  13. done
  14. Bytes transferred = 1985468 (1e4bbc hex)
[MY2440]# bootm 0x30000000

4,启动成功后如下图:
  1. Advanced Linux Sound Architecture Driver Version 1.0.20.
  2. ALSA device list:
  3. No soundcards found.
  4. TCP cubic registered
  5. NET: Registered protocol family 17
  6. RPC: Registered udp transport module.
  7. RPC: Registered tcp transport module.
  8. s3c2410-rtc s3c2410-rtc: hctosys: invalid date/time
  9. s3c2440-sdi s3c2440-sdi: running at 0kHz (requested: 0kHz).
  10. s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
  11. s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
  12. s3c2440-sdi s3c2440-sdi: running at 198kHz (requested: 197kHz).
  13. s3c2440-sdi s3c2440-sdi: powered down.
  14. eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
  15. IP-Config: Guessing netmask 255.255.255.0
  16. IP-Config: Complete:
  17. device=eth0, addr=192.168.0.100, mask=255.255.255.0, gw=255.25,
  18. host=192.168.0.100, domain=, nis-domain=(none),
  19. bootserver=255.255.255.255, rootserver=192.168.0.16, rootpath=
  20. Looking up port of RPC 100003/3 on 192.168.0.16
  21. Looking up port of RPC 100005/3 on 192.168.0.16
  22. VFS: Mounted root (nfs filesystem) on device 0:12.
  23. Freeing init memory: 128K

  24. Processing /etc/profile... Done

  25. #

NFS服务器配置说明

首先,NFS服务器能否正确配置直接关系到NFS起根文件系统是否成功。
所以,这个在我的博客里有一篇详细讲过。
可是今天再次制作NFS起根文件系统的时候,却又犯起了老错误,导致为了这个搞了一天。今天犯的错误描述如下:

问题的原因是:

/etc/exports这个文件。它是NFS修改挂载目录和权限的。

比如我要将将我的home目录中的/home/zp/share目录让192.168.2.*的IP共享, 则在该文件末尾添加下列语句:

/home/zp/share 192.168.0.*(rw,sync,no_root_squash)//我的ubuntu系统这里要改为:/home/zp/share *(rw,sync,no_root_squash)

现在回想起来,如果开发板的内核支持了NFS服务,那么可以在开发板进入系统后,直接mount
mount 192.168.0.1:/home/zp/share /mnt是可以成功的。
而我的开发板在服务器的/etc/exports设置成这样的时候:
  1. /home/zp/share 192.168.2.*(rw,sync,no_root_squash)
是不能mount成功的,会出现如下错误:
  1. NFS mount failed, reason given by server: Permission denied
针对我的服务器,解决方法就是修改/etc/exports文件为/home/zp/share *(rw,sync,no_root_squash)



阅读(5294) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~