工具/软件:Linux
你(们)好
根据我是从闪存上的 JFFS2 rootfs 引导还是通过 NFS 引导,我在行为上遇到一些差异。
我使用的是运行最新 SDK 的 BeagleBoneBlack 开发板。
我尝试使用的 ROOTFS 是通过 Arago 项目创建的核心映像最小化版本
我们的项目空间非常大,因此我已经将 bitbake 构建配置为尽可能使用 busybox
例如
virtual-Runtime_dev_manager_forcevaribable ="busybox-mdev" virtual-Runtime_login_manager_forcevaribable ="busybox" virtual-Runtime_init_manager_forcevaribable ="busybox" virtual-Runtime_initscripts_forcevaribable ="initscripts"
我已将此图像转换为 JFFS2、以便在微米 SPI NOR 闪存芯片上运行:
- JFFS2压缩版本与我导出用于 NFS 引导的文件夹相同。
我可以很高兴地将其作为基于 NFS 的 rootfs 运行、但从 SPI 闪存运行时会出现几个问题。
它们很可能相互关联。
我首先注意到、在从 SPI 闪存运行的引导上没有创建 eth0
-我想这是在 NFS 引导情况下触发的,因为需要找到 rootfs?
-引导程序中缺少的部分看起来像
[1.285988] net eth0:正在初始化 cpsw 版本1.12 (0) [1.290956] net eth0:已初始化 cpsw ale 版本1.4 [1.295724] net eth0:ALE 表大小1024 [1.386304] net eth0:找到 PHY:ID:0x7c131 [1.390275] ethphy: PHY 4a101004] net mDIO:未找到 PHY "4a101000.MDIO:01"在从站1上找不到 ERR -19 [1.430579] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪 [4.386685] CPsw 4a100000.Ethernet eth0:链路向上- 100Mbps/全-流控制 Rx/TX [4.405973](NETDREV): 链路准备就绪 [4.426114]发送 DHCP 请求。 [4.515934]确定 [4.545932] IP-Config:从10.255.255.254获得 DHCP 应答,我的地址为10.255.0.152 [4.554253] IP-Config:完成: [4.5557374] device=eth0、rootaddr=7c:66:9d:14=10.57152=255.255.0.0 、net=4.521.520.24=2.951.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00. mydomain.com.au
使用 SPI 闪存上的 rootfs 启动后、我似乎能够使用"udhcpc -i eth0"启动 eth0
root@elle-board:/etc/# udhcpc -i eth0 udhcpc (v1.24.1)已启动 [20115.764058] net eth0:正在初始化 cpsw 版本1.12 (0) [20115.769100] net eth0:已初始化 cpsw 版本1.4 [20115.773871] net eth0:ale Table size [20115.769100] net eth0:20115.0231.242]: neth :20115.8132phy:20115.08132] PHY "4a101000.MDIO:01"在从站1上找不到、错误-19 [20115.878488] IPv6:ADDRCONF (NETDEV_UP):eth0:链路未就绪 、正在发送发现... [20118.856628] cpsw 4a100000.以太网 eth0:链路速率高达- 100Mbps/全速-流控制 Rx/TX [20118.864124] IPv6:ADDRCONF (NETDEV_CHANGE):eth0:链路已准备 好发送 discover... 正在发送10.255.255.0.152...的选择 已获得10.255.0.152的租赁,租赁时间86400 /etc/udhcpc.d/50default:添加 DNS 10.255.255.1 /etc/udhcpc.d/50default:添加 DNS 10.255.255.2
-是否只是在 init 脚本中找到正确的位置来启动此操作?
第二个 dropbear 无法开始引用:"加载共享库时出错:/lib/libdl.so.2:无效 ELF 标题"
初始化已启动:Busybox v1.24.1 (2017-03-22 16:26:43 AEDT) 起始 pid 67、tty '':'/etc/init.d/rcS '启动 Dropbear SSH 服务器:dropbearkey:加载共享库时出错:/lib/libdl.so.2:无效 ELF 标头 起始 pid 81、tty '/dev/ttyS0:'/sbin/getty 115200 ttyS0'
与
初始化已启动:Busybox v1.24.1 (2017-02-09 12:59:11 AEDT) 起始 pid 67、tty '' :'/etc/init.d/rcS 起始 Dropbear SSH 服务器:[ 5.915631]随机:Dropbear:未初始化 Dropurandom 读取(32字节读取、91位熵可用) dropbear。 启动 pid 82、tty '/dev/ttyS0:'/sbin/getty 115200 ttyS0"
这让我感到非常困惑。
/lib/libdl.so.2是指向 libdl-2.21.so 的链接、用于比较此文件开头的内容、两种情况显示相同的字节
-内容本身就像这样
root@elle-board:/lib# dd if=/lib/libdl-2.21.so bs=256 count=2 | hexdump -C 2+0中的记录 输出 00000000 7f 45 4c 46 01 01 00 00 00 00 00 00 00 00 00 00 00 00 |.ELF ........... | 00000010 03 00 28 00 01 00 00 3c 09 00 34 00 00 00 |..( <...4...|00000020 f0 76 01 00 02 04 00 05 34 00 20 00 06 00 28 00 |.v. 4....(.| 00000030 25 00 22 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |%." | 00000040 00 00 00 68 14 00 68 14 00 00 05 00 00 00 |…………………………… | 00000050 00 01 00 00 00 e4 1e 00 e4 00 1e 01 00 |.......... |00000060 E4 1e 01 00 A4 01 00 D4 01 00 06 00 00 |.......... |00000070 00 01 00 02 00 00 F8 1e 00 F8 1e 01 00 |………………………………………………………………………………… |00000080 F8 1e 01 00 08 01 00 08 01 00 06 00 00 |.......... | 00000090 04 00 00 04 00 00 00 F4 00 00 F4 00 00 00 00 00 00 |.......... | 000000a0 F4 00 00 00 20 00 00 00 00 00 04 00 00 00 |…… (笑声) . | 000000b0 04 00 00 51 E5 74 64 00 00 00 00 00 00 00 00 00 00 |……问题… | 000000c0 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 | | 000000d0 10 00 00 52 E5 74 64 e4 1e 00 00 e4 1e 01 00 |……R.Td…… | 000000e0 e4 1e 01 00 1c 01 00 1c 01 00 04 00 00 |.......... |000000f0 01 00 00 04 00 00 00 10 00 00 01 00 00 00 |.......... | 00000100 47 4e 55 00 00 00 00 00 02 00 00 06 00 00 | GNU .......... | 00000110 20 00 00 12 00 00 00 1D 00 00 04 00 00 00 00 |…………………………………………………………………… |00000120 07 00 00 00 98 00 11 00 42 00 82 00 0A |.......... B. | 00000130 93 28 00 D8 1D 00 00 00 00 00 00 00 00 00 00 1e 00 00 00 |.. | 00000140 00 00 00 00 00 00 00 00 00 1f 00 00 21 00 00 |........... !...| 00000150 23 00 00 24 00 00 25 00 00 00 00 00 00 00 00 00 |#...$...%..... | 00000160 26 00 00 00 00 00 00 00 27 00 00 00 00 00 00 00 00 ||。。 ”… | 00000170 00 00 00 00 00 00 00 00 00 00 00 00 00 af C4 4D 0f |.......... m| 00000180 91 21 fc F8 c0 53 80 18 D9 3D 6c F6 94 B3 5F 19 |!... S..=L.._。| 00000190 05 e8 07 F9 7f 9e d0 18 61 A2 92 06 EB 16 A9 18 |… A. | 000001a0 61 af 00 f9 06 02 04 f9 fb 33 fb 0f 00 00 00 00 | a. 3… | 000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |.......... | 000001c0 40 08 00 00 00 00 00 00 03 00 0A 00 00 00 00 00 00 |@.......... |000001d0 F4 1e 01 00 00 00 00 03 00 13 00 60 01 00 |........... `……| 000001e0 00 00 00 00 00 00 00 12 00 00 00 df 00 00 00 |.......... | 000001f0 00 00 00 00 00 00 00 20 00 00 F4 00 00 00 |… . | 00000200
即使在使用 udhcpc 手动启动 eth0后、任何启动 dropbear 的尝试都会导致相同的错误
如果有任何关于我可以尝试进一步诊断这一问题的建议、我们将不胜感激
此致、
Richard