环境

硬件:I.MX6U ALPHY V2.2
宿主机:Ubuntu 20.04

概述

我们的目的是在 kernel 启动后,将 nfs 文件系统挂载成板子的根文件系统。因此,bootloader、kernel、dtb 文件都可以使用板子存储介质(emmc、SD 卡)上的,只将根文件系统参数设置成宿主机上的一个 nfs 目录即可。
不过,我在进行上述尝试时,总是无法挂载成功,原因是 kernel 启动后,网卡初始化有问题,导致系统无法找到 eth0,网络不通,也就无法挂载 nfs。
出错信息如下,供遇到相同问题的小伙伴们参考:

Starting kernel ...Booting Linux on physical CPU 0x0
...
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
lib80211: common routines for IEEE802.11 drivers
Key type dns_resolver registered
Registering SWP/SWPB emulation handler
snvs_rtc 20cc000.snvs:snvs-rtc-lp: setting system clock to 2023-03-26 19:57:45 UTC (1679860665)
IP-Config: Failed to open eth0
IP-Config: Device `eth0' not found

根据下面这两个帖子的介绍,尝试更换 kernel 试试
求助NFS挂载不上,IP-Config: Failed to open eth0
IP-Config: Failed to open eth0 IP-Config: Device ‘eth0’ not found
在正点原子资料下载中心,找到了更新后的 kernel
i.MX6ULL Linux阿尔法开发板

不过我的板子明明是 I.MX6U ALPHY V2.2 版本的,使用 01、V2.4版本之前的底板 的 kernel 竟然还是不行,使用 02、V2.4版本及以后的底板 竟然可以,如下。

更换 kernel

由于不想重新烧录 emmc,就直接在 uboot 启动时从宿主机下载 kernel。uboot 环境变量 bootcmd 修改如下:

bootcmd=tftp 80800000 zImage; tftp 83000000 imx6ull-14x14-evk.dtb; bootz 80800000 - 83000000

这样,在 uboot 就会从宿主机下载 kernel 和 dtb 到内存,然后启动。
另外,要想挂载 nfs,uboot 环境变量 bootargs 还需修改如下:

bootargs=console=ttymxc0,115200 root=/dev/nfs nfsroot=192.168.31.223:/home/liyongjun/project/board/IMX6ULL/rootfs,proto=tcp rw ip=192.168.31.224:192.168.31.223:192.168.31.1:255.255.255.0::eth0:off'

02、V2.4版本及以后的底板 中的 zImage 拷贝到宿主机 tftp 目录下,然后启动板子,kernel 成功驱动网卡,网络通了,nfs 也就挂载成功了

fec 20b4000.ethernet eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=20b4000.ethernet:01, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
fec 20b4000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
IP-Config: Complete:device=eth0, hwaddr=00:04:9f:04:d2:35, ipaddr=192.168.31.224, mask=255.255.255.0, gw=192.168.31.1host=192.168.31.224, domain=, nis-domain=(none)bootserver=192.168.31.223, rootserver=192.168.31.223, rootpath=
can-3v3: disabling
ALSA device list:#0: wm8960-audio
VFS: Mounted root (nfs filesystem) on device 0:15.
devtmpfs: mounted
Freeing unused kernel memory: 404K (80929000 - 8098e000)
INIT: version 2.88 booting
Starting udev
udevd[88]: starting version 3.1.5
random: udevd urandom read with 118 bits of entropy available
random: nonblocking pool is initialized
kjournald starting.  Commit interval 5 seconds
EXT3-fs (mmcblk1p2): using internal journal
EXT3-fs (mmcblk1p2): 1 orphan inode deleted
FAT-fs (mmcblk1p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
EXT3-fs (mmcblk1p2): recovery complete
EXT3-fs (mmcblk1p2): mounted filesystem with ordered data mode
mmc0: Timeout waiting for hardware interrupt.
------------[ cut here ]------------
WARNING: CPU: 0 PID: 0 at drivers/mmc/host/sdhci.c:1008 sdhci_send_command+0x88c/0xdfc()
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8069d5b0>] (dump_stack+0x80/0xc8)
[<8069d5b0>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<80038324>] (warn_slowpath_null+0x1c/0x24)
[<80038324>] (warn_slowpath_null) from [<804bf3d0>] (sdhci_send_command+0x88c/0xdfc)
[<804bf3d0>] (sdhci_send_command) from [<804c1a58>] (sdhci_timeout_timer+0x70/0xb8)
[<804c1a58>] (sdhci_timeout_timer) from [<8007d61c>] (call_timer_fn+0x24/0x9c)
[<8007d61c>] (call_timer_fn) from [<8007dbc8>] (run_timer_softirq+0x1b8/0x250)
[<8007dbc8>] (run_timer_softirq) from [<8003b3e4>] (__do_softirq+0xf0/0x228)
[<8003b3e4>] (__do_softirq) from [<8003b7ac>] (irq_exit+0xb0/0xfc)
[<8003b7ac>] (irq_exit) from [<8006f61c>] (__handle_domain_irq+0x70/0xe8)
[<8006f61c>] (__handle_domain_irq) from [<80009440>] (gic_handle_irq+0x20/0x60)
[<80009440>] (gic_handle_irq) from [<80013240>] (__irq_svc+0x40/0x74)
Exception stack(0x8098ff30 to 0x8098ff78)
ff20:                                     8098ff78 00000009 190ab536 00000004
ff40: 144713f4 00000004 00000002 8bb34dd8 190ab536 00000004 8098b740 00000001
ff60: 00000017 8098ff78 a6aaaaab 804a9ec0 000c0013 ffffffff
[<80013240>] (__irq_svc) from [<804a9ec0>] (cpuidle_enter_state+0xcc/0x1f8)
[<804a9ec0>] (cpuidle_enter_state) from [<800671ac>] (cpu_startup_entry+0x1c0/0x324)
[<800671ac>] (cpu_startup_entry) from [<80929be8>] (start_kernel+0x334/0x3a0)
---[ end trace 3fedfe05f719614a ]---
mmcblk0: error -84 sending status command, retrying
mmcblk0: error -110 sending stop command, original cmd response 0x0, card status 0x900
mmcblk0: error -110 transferring data, sector 15564672, nr 8, cmd response 0x0, card status 0x0
mmc0: tried to reset card
kjournald starting.  Commit interval 5 seconds
EXT3-fs (mmcblk0p2): using internal journal
EXT3-fs (mmcblk0p2): recovery complete
EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
FAT-fs (mmcblk0p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
bootlogd: cannot allocate pseudo tty: No such file or directory
Populating dev cacheALSA: Restoring mixer settings...
Found hardware: "wm8960-audio" "" "" "" ""
Hardware is initialized using a generic method
Running postinst /etc/rpm-postinsts/100-hostapd-rtl871xdrv...
Running postinst /etc/rpm-postinsts/101-hostapd-rtl871xdrv...
Running postinst /etc/rpm-postinsts/102-hostapd...
Running postinst /etc/rpm-postinsts/103-hostapd...
update-rc.d: /etc/init.d/run-postinsts exists during rc.d purge (continuing)Removing any system startup links for run-postinsts .../etc/rcS.d/S99run-postinsts
INIT: Entering runlevel: 5
Configuring network interfaces... ifup skipped for nfsroot interface eth0
run-parts: /etc/network/if-pre-up.d/nfsroot: exit status 1
Starting system message bus: Starting Xserver
dbus.
Starting Connection Manager
Starting Dropbear SSH server: Generating key, this may take a while...Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCX+R4dMzOcDZW1yid0WWvFH3efkHn2mmGTKwViYhxlPxa/kpEzP2guiOiwmin5FA7cPl88y57VOvVps1V0uwM8MyI8pOB70F1/60i9AMvN0uKAED9YE05JZMelo6jMdmIGAa2c4LvZRTk+4cWH3zQq+xIYBr6wEtvWPrh99ZxRu4Puj34Ao+hXlyfzh7bKktLCTvOekM2uZ80Na/dSzd4dpxOZc5An/9aSpfRKfRoNVu7Oo1ueTdpARknOD6nEY5jx37vB3i/bNN3OXsYqslXwu4N9ulX7ya6WPkggxRzLx7gILIxXe6Hly1xpxLu5Ql8VJXZvtPlw9mFDobxbG8gn root@ATK-IMX6U
Fingerprint: md5 c6:7a:70:fd:fe:6b:ea:5b:79:30:e6:fe:c6:7b:3e:4e
dropbear.
Starting rpcbind daemon...done.
Starting watchdog: [  OK  ]
starting statd: done
Starting advanced power management daemon: No APM support in kernel
(failed.)
Starting atd: OK
exportfs: can't open /etc/exports for reading
NFS daemon support not enabled in kernel
Starting system log daemon...0
Starting kernel log daemon...0* Starting Avahi mDNS/DNS-SD Daemon: avahi-daemon                       [ ok ]
Starting Telephony daemon
Starting Linux NFC daemon
* starting FTP Server: vsftpd... done.
Starting crond: OK
Starting nginx: nginx.
Running local boot scripts (/etc/rc.local).root@ATK-IMX6U:~#
root@ATK-IMX6U:~#
root@ATK-IMX6U:~# imx6ul-tsc 2040000.tsc: Timeout for adc calibrationroot@ATK-IMX6U:~#
root@ATK-IMX6U:~# ls
driver  shell
root@ATK-IMX6U:~# ls
driver  shell

在宿主机创建的文件,可以在板子同步看到,验证成功

root@ATK-IMX6U:~# ls
driver  shell  test
root@ATK-IMX6U:~# date
Sun Mar 26 20:36:04 UTC 2023
root@ATK-IMX6U:~# ls -lh
total 8.0K
drwxr-xr-x 6 1000 tracing 4.0K Nov  5  2021 driver
drwxr-xr-x 6 1000 tracing 4.0K Nov  5  2021 shell
-rw-rw-r-- 1 1000 tracing    0 Mar 26 12:36 test

总结

关键点:kernel 报 eth0 not found,要快速定位问题(是 kernel 阶段的问题,可能是 kernel 的网卡驱动编译有问题,可能是设备树和硬件不匹配等),并找到解决办法。

挂载 nfs 文件系统相关推荐

  1. 在windows下挂载nfs文件系统

    在windows下挂载nfs文件系统 这里以win7系统为例. 安装NFS客户端工具 点击开始 -> 控制面板. 点击"程序". 点击"打开或关闭windows功能 ...

  2. 天嵌TQ210挂载NFS文件系统详细步骤

    第一篇CSDN文章,解决了天嵌TQ210在ubuntu下挂载NFS文件系统(linux)的问题.特意总结下这篇文章,因为自己耗费了一天时间在这,虽然网上很多挂在NFS文件系统的资料,但是很少有针对TQ ...

  3. linux挂载nfs文件失败,挂载nfs文件系统时错误

    挂载nfs文件系统时错误 发布时间:2009-02-07 09:45:40来源:红联作者:travelchina2008 挂载nfs文件系统时错误: 1. 关闭防火墙,设置宿主机的IP为192.168 ...

  4. 【JZ2440】挂载NFS文件系统(保姆级)

    目录 前言 一. 为什么要挂载nfs文件系统 二.挂载前的准备工作 2.1 硬件连接 2.2 虚拟机网络配置 2.3 开发板网路配置 三.网络测试 四. 手动挂载(单纯挂载4.2可跳过) 4.1 普通 ...

  5. linux 查看目录挂载的ip,Linux挂载IPSAN和FCSAN操作,Linux挂载NFS文件系统

    iSCSI存储挂载 service open-iscsi status 查看iscsi服务状态 service open-iscsi start/stop/restart 启动/停止/重启iscsi服 ...

  6. linux内核挂载nfs,Linux 挂载NFS文件系统

    挂载文件系统 启动 NFS 客户端 挂载前,请确保系统中已经安装了nfs-utils或nfs-common,安装方法如下: CentOS: Ubuntu 或 Debian: 创建待挂载目标目录 使用下 ...

  7. 挂载nfs文件系统_综合架构-day38-NFS服务补充

    1.如何让nfs永久挂载-2种方法 开机自启动文件 1.vim /etc/rc.d/rc.local 需要修改执行权限chmod +x /etc/rc.d/rc/local mount -t nfs ...

  8. 使用Uboot启动内核并挂载NFS根文件系统

    配置编译好内核之后,将生成的内核文件uImage拷贝到/tftpboot/下,通过tftp服务器将内核下载到开发板,使用命令:tftp 31000000 uImage.下载完成之后配置bootargs ...

  9. linux 挂载网络文件系统,[arm-linux-FL2440挂载网络文件系统共享文件]

    首先确保arm板上移植的内核开启了网络文件系统 配置开发板Linux内核,开启NFS客户端,如下界面所示,可能有的配置界面不同,具体设置:File system → Network File Syst ...

最新文章

  1. JQuery EasyUi之界面设计——前言与界面效果(一)
  2. thinkphp-查询数据-基本查询
  3. java 国际化例子_JavaSE 国际化 简单例子
  4. html照片与照片之间的间隔,css设置图片之间的间隔的方法
  5. 【小米面试题】-给定一个具体时间,计算时针与分针之间的角度
  6. 期末复习、化学反应工程科目(第二章)
  7. UITableView 重用cell方法edequeueReusableCellWithIdentifier,出现错误
  8. asp.net网页中导出EXCEL,WORD的环境设置验证实例
  9. 收藏 | 9 个技巧让你的 PyTorch 模型训练变得飞快!
  10. 京东一面:说出ThreadLocal的使用场景及使用方式
  11. 113 虚拟机 错误 mysql_Navicat连接虚拟机mysql常见错误问题及解决方法
  12. IIS7里的appcmd命令
  13. eja智能压力变送器工作原理_eja变送器详解_eja变送器工作原理_eja变送器如何选型...
  14. 通用权限管理系统基类中数据库的连接
  15. Unity官方文档(英文)
  16. recovery输出log+recovery模式关闭selinux
  17. C语言程序设计笔记(浙大翁恺版) 第九周:指针
  18. U盘中毒文件都不见了
  19. C++ Builder开发AutoCAD应用程序的方法
  20. Luvwgyx的娱乐场-题解

热门文章

  1. 杀毒软件也分少林和武当
  2. Mybatis中的<![CDATA[ ]]>作用
  3. android 音量按键,Android 音量键的监听
  4. Caesers Cipher (凯撒密码)
  5. R语言结构方程模型(SEM)在生态学领域中的应用
  6. PHP(时间)计算本月本周下月下周
  7. mysql开启数据库审计
  8. 正则表达式判定电话号码(电信移动联通)
  9. PDF 签章图片不显示问题
  10. undefined reference to `OsqpEigen::Solver::lu_solve()‘问题解决