LS1046:挂载根文件系统

飞凌OK1046挂载根文件系统注意事项

1、如何设置bootargs?

  大多数的方法:开发板上电,按任意键进入bootloader,在bootloader中输入命令setenv bootargs ...。这种方法是普适的,但对于飞凌的LS1046需要注意的是:我们在bootloader中输入命令setenv bootargs ...,然后输入boot命令启动内核的过程中,设备会额外执行一个启动脚本:/boot/ls1046ardb_boot.scr

该脚本位于/dev/mmcblk0p2中的/boot目录下,该脚本在执行过程中会重写bootargs环境变量,这样导致之前用户自己设置的bootargs会被覆盖掉,系统将不能从用户自定义的位置去挂载根文件系统。

  ls1046ardb_boot.scr是一个二进制的程序,其中:

  源文件位于:flexbuild/configs/board/ls1046ardb/manifest

  编译生成的.scr文件位于:flexbuild/build/firmware/u-boot/ls1046ardb/ls1046ardb_boot.scr

  编译命令为:flex-builder -i mkdistroscr -a arm64 -m ls1046ardb

  其中源文件mainfest中与启动设置bootargs相关的是:

distroboot='part uuid $devtype $devnum:3 partuuid3; setenv bootargs console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 root=PARTUUID=$partuuid3 rw rootwait board_name=$board_name serdes1=$serdes1 $othbootargs; if load $devtype $devnum:2 $load_addr /boot/uEnv.txt; then echo Importing environment from uEnv.txt ...; env import -t $load_addr $filesize; fi; load $devtype $devnum:2 $kernel_addr_r /boot/Image;load $devtype $devnum:2 $fdt_addr_r /boot/fsl-ls1046a-rdb-sdk-$serdes1-5a59.dtb; env exists secureboot && echo validating secureboot && run secureboot_validate;booti $kernel_addr_r - $fdt_addr_r'

  我们可以将上述语句中的setenv bootargs删除,然后重新编译生成.scr程序,并将其更新到emmc的分区2(设备为:/dev/mmcblk0p2)的boot目录下。这样以后我们在uboot中设置的命令就不会被重写了。

2、nfs挂载根文件系统失败?之网卡名fm1-macx???

  想设置nfs挂载根文件系统,参考网上的做法,设置启动参数为:

setenv bootargs 'console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 rootfstype=nfsroot root=/dev/nfs nfsroot=192.168.8.10:/home/forlinx/nfs/rootfs ip=192.168.8.46:192.168.8.10:192.168.8.1:255.255.255.0::fm1-mac6:off board_name=$board_name serdes1=$serdes1 $othbootargs'

  上电重启设备,设备未能成功挂载根文件系统。

多方查证,怀疑过Host主机ubuntu18.04的nfs版本问题,怀疑过tcp的问题,再次修改启动参数如下:

setenv bootargs 'console=ttyS0,115200 earlycon=uart8250,mmio,0x21c0500 rootfstype=nfsroot root=/dev/nfs nfsroot=192.168.8.10:/home/forlinx/nfs/rootfs,proto=tcp,nfsvers=3,nolock ip=192.168.8.46:192.168.8.10:192.168.8.1:255.255.255.0::fm1-mac6:off board_name=$board_name serdes1=$serdes1 $othbootargs'

  仍旧失败。

  且此时板子将根文件系统挂载在emmc进入系统后,手动挂载nfs成功!

  无可奈何之下,在Host主机上安装了wireshark进行抓包,捕捉设备启动过程中有无和Host进行通信。然一包数据都未抓到(此处备注一下,ubuntu下使用wireshark需要在命令行输入sudo wireshark来启动,不然找不到网卡)。

  于是怀疑bootargs中的ip=192.168.8.46:192.168.8.10:192.168.8.1:255.255.255.0::fm1-mac6:off设置是否有问题。干脆将其改为ip=192.168.8.46,然后输入boot命令。

此时发现了让人熟悉的字眼:

然后接下来就成功挂载了!

  原来虽然进入系统后对应的网卡为fm1-mac6,而内核在启动过程中的网卡名并非fm1-mac6,而是eth4,fm1-mac6应该是NXP在系统启动后重新改名了。输入命令dmesg可以查看到以下信息:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值