http://www.non-pancaker.com/%E9%A1%B9%E7%9B%AE/hi3515%E6%94%AF%E6%8C%81nfs-root%E5%90%AF%E5%8A%A8/

目前在做Hi3515平台监控项目,前期开发一直使用SDK里推荐的mount nfs方式来调试代码,虽然也算方便,但是我一直觉得用法NFS-ROOT才是最省事的方法,而且最接近最终用户使用环境,因为如果NFS-ROOT调试完成后,就直接可以出firmware了.

由于SDK几乎将所有用到的驱动都独立编译成了ko文件,所以为了将驱动编译到内核中,还是需要做一番工作的,由于初次接触内核和驱动,所以很多东西都是刚了解的。通过不断的试错和调试,终于搞定了网卡驱动和NFS-ROOT的支持。

若想内核支持NFS-ROOT,主要是两个方面的功能配置,一是ethernet,让网卡在内核运行时驱动自动加载,这样才不会导致eth0找不到的情况,而是nfs内核中的相关配置选项。

step 0. 复制使用到的config配置文件

cp arch/arm/configs/hi3515v100_full_release_defconfig .config

step 1.在内核代码中增加网卡驱动

step 1.0 在驱动目录下增加hiether文件夹,用来存放hi3515的网卡驱动

mkdir linux-2.6.24/drivers/net/hiether

step 1.1 复制已有的网卡驱动到新添加的文件夹中

cp Hi3515_SDK_V1.0.5.0.c1/source/drv/hi3515v100-sfv300 linux-2.6.24/drivers/net/hiether

step 1.2 修改驱动文件夹中的代码

由于原有驱动是用来编译为独立的ko文件的,所以里面的部分函数使用了__exit标志,用来表示只用来作为模块退出使用的函数,如果不将次函数的__exit标志去掉,在编译内核的时候会打印

“ `.exit.text’ referenced in section `.init.text’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.omake: *** [.tmp_vmlinux1] 错误 1”

简单的将__exit标志去掉,就能顺利通过编译了。

step 1.3 增加菜单选项

要想通过menuconfig来选择是否选择hiether驱动,要做一下修改:

step 1.3.0 修改Kconfig文件

在net/Kconfig中config DM9000下面的位置增加下面内容

config DM9000

tristate “DM9000 support”

depends on ARM || BLACKFIN || MIPS

select CRC32

select MII

—help—

Support for DM9000 chipset.

To compile this driver as a module, choose M here.  The module

will be called dm9000.

config HIETHER

tristate “HIETHER support”

—help—

step 1.3.1 修改net/Makefile,增加需要编译的文件夹

obj-$(CONFIG_HIETHER) += hiether/

step 1.3.2 在hiether文件夹中增加Makefile文件,内容如下

obj-$(CONFIG_HIETHER) += hiether.o
hiether-objs := mdio.o mii-drv.o mac.o ctrl.o glb.o net-drv.o mm.o sys.o proc.o

step 1.3.3 make menuconfig 选择新增加的驱动

[*] Network device support  —>  [*]   Ethernet (10 or 100Mbit)  —> <*>   hiether support

step 2. 内核增加对NFS-ROOT的支持

Networking  —>Networking options  —>[*]   IP: kernel level autoconfiguration

[*]     IP: DHCP support

[*]     IP: BOOTP support

[*]     IP: RARP support

File systems  —> [*] Network File Systems  —> <*>   NFS file system support

[*]     Allow direct I/O on NFS files

[*]   Root file system on NFS

[*]   Support for rpcbind versions 3 & 4 (EXPERIMENTAL)

step 3.重新编译内核

make; make uImage

step4. 测试

宿主机要安装nfs,tftp,这些网上教程很多,这里就不罗嗦了

启动参数setenv bootargs busclk=220000000 mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.6.141:/tftpboot/hi3515.filesys, nolock eth=00:1e:9a:04:5c:4d ip=192.168.6.143:192.168.6.100:192.168.6.254:255.255.255.0:tocore:eth0:off pcimod=host pciclksel=1

下载最新内核并运行

tftp 0xc1000000 uImage; bootm 0xc1000000

—————————启动打印信息————————————————–

IP-Config: Complete:
device=eth0, addr=192.168.6.143, mask=255.255.255.0, gw=192.168.6.254,
host=tocore, domain=, nis-domain=(none),
bootserver=192.168.6.100, rootserver=192.168.6.141, rootpath=
Looking up port of RPC 100003/2 on 192.168.6.141
PHY: 0:01 – Link is Up – 100/Full
Looking up port of RPC 100005/1 on 192.168.6.141
VFS: Mounted root (nfs filesystem).
Freeing init memory: 112K

Hi3515支持NFS-ROOT启动相关推荐

  1. 在docker容器中执行exportfs -a命令提示不支持NFS导出

    使用docker容器部署NFS,exportfs:不支持NFS导出,在使用docker特权模式进入容器后,依然提示not support NFS export,判断为目录文件问题,将宿主机上目录挂载至 ...

  2. 玩转mini2440开发板之【使用nfs无法启动的问题(Virtualbox桥接网络)】

    今天晚上研究了一下如何通过super-vivi来使用nfs网络文件系统来启动mini2440开发板,一开始一直无法成功,折腾了半天总算搞定了,总结一下: 1.首先,介绍一下我的开发环境. 物理机:wi ...

  3. linux内核是否支持nfs,嵌入式命令:查看设备是否支持nfs

    1:查看设备是否支持nfs功能 命令: cat /proc/filesystems 若有一行为 nodev nfs,则开发板Linux内核支持NFS,反之需要配置内核 同样方法查看Linux主机内核是 ...

  4. elasticsearch不能使用root启动问题解决

    问题: es安装好之后,使用root启动会报错:can not run elasticsearch as root [root@iZbp1bb2egi7w0ueys548pZ bin]# ./elas ...

  5. 无光驱不支持USB设备启动的笔记本,如何使用Ghost来安装系统

    好多超轻型的笔记本,本身都不自带光驱.而且现在的情况下,除了装系统之外,单独买一个外置的USB光驱平常也没多大用途. 可系统一旦需要重装的时候就麻烦些了.个别支持USB硬盘或U盘启动的还好些,对于不支 ...

  6. root启动php报错,php使用root用户启动

    一般情况下,肯定是不推荐使用root用户启动php的 但是在某些服务器管理想使用WEB的方式来控制操作的话,那么就必须要使用root用户才有权限操作 1.修改配置文件php-fpm.conf的启动用户 ...

  7. (原创)修改BIOS让华硕Z87-A老主板支持NVMe硬盘启动(采坑实录)

    当年经典的华硕Z87-A主板至今仍然老当益壮,美中不足就是不支持NVMe SSD作为启动盘.由于工作生活繁忙,2年多来陆陆续续查了好多资料,再加上有CH341A编程器加持,自认已经准备得够充分.最近乘 ...

  8. 巧设BIOS,让老主板也支持U盘启动!

    现在的U盘大都支持启动机器的功能,用U盘做个启动盘,把常用的DOS工具和杀毒软件放在里面,携带方便再也不为一张启动盘而大动干戈来刻录,再也不为只有1.44M的软盘而伤心.   但是现在有些人的主板由于 ...

  9. 计算机启动u盘启动不了怎么办,电脑没有U盘启动项怎么办?主板不支持U盘启动怎么办?...

    现在很少有人用光驱装系统了,在用U盘重装的时候,开机时却发现Bios设置里没有U盘启动项,那么怎么办呢? 还有些朋友电脑的主板比较旧了,不支持U盘启动,碰到这些情况该怎么办呢? 本篇文章就适用于没有装 ...

  10. linux nfs root无权限,nfs root 无权限_如何允许root用户访问NFS?

    nfs root 无权限 On local filesystems, root usually has full access (read/write) to directories/files in ...

最新文章

  1. js图片压缩并上传?
  2. 网络营销外包中那些超有效的网络营销方法有进一步了解过吗?
  3. 1996黄金一代NBA选秀
  4. 让Windows XP系统快上几倍的三个绝招
  5. 中山纪念中学培训15天总结
  6. 2018-12-08 acm日常 HDU - 6292(模拟找最小)
  7. 什么是E-MapReduce
  8. 值对于int32太大或太小_影响涂镀层测厚仪测量值的因素与解决方法
  9. 防淘宝关闭二维码案例
  10. matlab读取i o数据文件,Matlab 的数据文件读取
  11. 任务调度的合理性 (25 分)(拓扑排序)
  12. 在win2k3上使用卡巴斯基6.0
  13. 围棋单机版-纵横十九道,迷煞多少人
  14. python求平方根的代码_python求平方根的方法
  15. Wireshark 301: Spying on what people are downloading (Part 1 of 2)
  16. greenplum常用函数
  17. 条件极值例题_条件极值问题、拉格朗日乘数法
  18. SparkLink星闪技术之SLB概述
  19. 多个containers 共用一个pvc_长兴PVC废料回收一斤多少钱,ps废料回收
  20. 28岁程序员身家过亿退休,追寻诗和远方:去日本!

热门文章

  1. CountDownLatch(线程计数器)
  2. php k线图 echarts,利用ECharts.js画K线图的方法示例
  3. php网页标点前置,为什么在网页里,标点符号跑到行首了呢?_html/css_WEB-ITnose
  4. c语言编译无错误但不能输入输出,第2章-C语言版输入输出.ppt
  5. linux进程查看所有线程,Linux中查看进程的多线程的方法
  6. 为什么我们程序员不把软件开发当回事?
  7. java打印sql表_java程序获得SqlServer数据表的表结构
  8. ddos发包机原理_简单的DDOS发包学习思路大家可以在去写
  9. python3.7如何使用enum_Python3.4 枚举类型的使用
  10. mysql删除七天_自动备份mysql并删除7天前备份