U-Boot 启动 Linux 与 nfs/rootfs 挂载机制
如果rootfs 在 NFS 上: root=/dev/nfs ,Linux 用户空间程序 通过 NFS 读取库文件。如果rootfs 在 本地存储 :root=/dev/mmcblk0p2 或者 root=/dev/nand ,NFS 挂载的是“整个根文件系统”,NFS 主要给“用户空间”用,Linux 内核本身不依赖库文件。挂载 rootfs = NFS(/home/xxx/linux/nfs
U-Boot 只做三件事:
1. 加载内核 :
tftp / sd / flash → kernel
2. 传参数(关键 ) , 告诉 rootfs 在哪,Kernel 并不知道 rootfs 在哪里,是 bootargs 告诉它的:
bootargs=root=/dev/nfs nfsroot=192.168.1.10:/home/xxx/linux/nfs/rootfs ip=192.168.1.20

3. 启动内核:
bootz / bootm

U-Boot
↓
加载 Linux kernel (内核) + dtb (设备树)
↓
传 bootargs(告诉 rootfs 在哪)
↓
Kernel 启动
↓
挂载 rootfs = NFS(/home/xxx/linux/nfs/rootfs)
↓
执行 /sbin/init (挂载本地存储 SD/eMMC/NAND) 或 /etc/init.d/rcS (NFS 挂载)
↓
用户程序启动
↓
exec → 动态链接器加载 .so(来自 NFS 或本地 rootfs)
正常嵌入式启动:
Kernel → mount SD/EMMC rootfs → init
NFS 启动:
Kernel → mount nfs rootfs → init → rcS
NFS 挂载的是“整个根文件系统”,NFS 主要给“用户空间”用,Linux 内核本身不依赖库文件。
U-Boot 负责“把 Linux 启动起来并告诉它 rootfs 在哪里,rootfs 存储的位置 ”,
如果rootfs 在 NFS 上: root=/dev/nfs ,Linux 用户空间程序 通过 NFS 读取库文件。
如果rootfs 在 本地存储 :root=/dev/mmcblk0p2 或者 root=/dev/nand ,
NFS 和本地 rootfs 的区别,只是“文件放在哪里”,
Linux 用户空间加载库文件的方式完全一样,
差别只是读取路径来自网络还是本地存储。
NFS 挂载 方便调试程序。
更多推荐



所有评论(0)