热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

linux+内核中开启nfs,使用nfs挂载根文件系统

里的大部分内容参考了网上的一篇文章,原作者不详,当然也有我遇到的问题。1、启动参数(针对uboot)setenvbootargsnoinitrdinit

里的大部分内容参考了网上的一篇文章,原作者不详,当然也有我遇到的问题。

1、启动参数(针对uboot)

setenv bootargs noinitrd init=/linuxrc console=ttySAC0 root=/dev/nfs nfsroot=192.168.10.124:/home/408/nfs/rootfs ip=192.168.10.125:192.168.10.124:192.168.10.1:255.255.255.0::eth0:off

其中:

root=/dev/nfs并非真的设备,而是一个告诉内核要通过网络取得根文件系统。

nfsroot=[:][,]

参数nfsroot这个参数告诉内核以哪一台机器的哪个目录以及哪个网络文件系统选项作为根文件系统使用。

  指定网络文件系统服务端的IP地址。如果没有指定定,则使用nfsaddrs变量指定的值。

    服务端上要作为根文件系统要挂载的目录名称。

  标准的网络文件系统选项,所有选项都以逗号分开。

nfsaddrs=::::::

参数nfsaddrs设定网络通讯所需的各种网络接口地址。

如果没有给定这个参数,则内核核会试著使用反向地址解析协议或是启动协议(BOOTP)以找出这些参数。

      客户端的IP地址。

    网络文件系统服务端的IP地址。

      网关(gateway)的IP地址。

本地网络的网络掩码。如果为空白,则掩码由客户端的IP地址导出。

      客户端的名称。如果空白,则使用客户端IP地址的ASCII标记值。

         要使用的网络设备名称。如果你只有一个设备,那么你可以不管它。

        用以作为自动配置的方法。

2、内核配置要求

[*] Networking support --->

--- Networking support

Networking options --->

Unix domain sockets

[*] TCP/IP networking

[*] IP: kernel level autoconfiguration

[*] Network File Systems --->

NFS client support

[*] NFS client support for NFS version 3

[*] Root file system on NFS

3、我遇到的问题

(1)DM9000的MAC地址无效导致不能挂载

似乎uboot并没有把MAC地址传递给内核,如果先用ping命令,再启动内核挂载nfs时,uboot就会传递MAC地址(或者说是设置了DM9000的MAC地址),如果使用vivi,则根本不能设置MAC地址。解决的办法是直接在内核的驱动中指定DM9000的MAC地址(友善提供的DM9000移植方法)。

drivers/net/dm9000.c

dm9000_probe(struct platform_device *pdev)

{

……

mac_src = "eeprom";

/* try reading the node address from the attached EEPROM */

for (i &#61; 0; i <6; i &#43;&#61; 2)

dm9000_read_eeprom(db, i / 2, ndev->dev_addr&#43;i);

if (!is_valid_ether_addr(ndev->dev_addr) && pdata !&#61; NULL) {

mac_src &#61; "platform data";

memcpy(ndev->dev_addr, pdata->dev_addr, 6);

}

if (!is_valid_ether_addr(ndev->dev_addr)) {

/* try reading from mac */

mac_src &#61; "chip";

for (i &#61; 0; i <6; i&#43;&#43;)

ndev->dev_addr[i] &#61; ior(db, i&#43;DM9000_PAR);

}

/* set MAC, add by wzc */

memcpy(ndev->dev_addr, "/x08/x90/x91/x92/x93/x94", 6);

if (!is_valid_ether_addr(ndev->dev_addr))

dev_warn(db->dev, "%s: Invalid ethernet MAC address. Please "

"set using ifconfig/n", ndev->name);

}

(2) nfs server xx.xx.xx.xx not response,still try

总出现如题所示提示&#xff0c;然后DM9000停止活动&#xff0c;折腾了一下午&#xff0c;原来是由于根文件系统中/etc/init.d/rcS中网络配置部分导致的问题&#xff0c;由于nfs启动参数已经指定了linux的IP、网关等&#xff0c;如果在启动脚本中在设置一次就会导致这个问题&#xff0c;而不是网上说的由于使用UDP(当然这也可能导致出现该问题)。简单地在/etc/init.d/rcS中注释掉网络设置部分后&#xff0c;nfs成功挂载。0b1331709591d260c1c78e86d0c51c18.png



推荐阅读
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 本文介绍了在CentOS上安装Python2.7.2的详细步骤,包括下载、解压、编译和安装等操作。同时提供了一些注意事项,以及测试安装是否成功的方法。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 微信商户扫码支付 java开发 [从零开发]
    这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
author-avatar
渭南电信贺平
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有