公司动态

文件系统制作-实操备忘录

📅 2026/8/14 19:00:57
文件系统制作-实操备忘录
目录一、整体启动流程回顾二、根文件系统是什么?需要准备哪些内容?三、两种常见的根文件系统部署方式1.NFS 网络根文件系统(开发阶段最常用)1.宿主机(服务器)安装 NFS 服务:几个参数:2.重启服务:验证1(用户空间挂载)验证2(内核空间挂载):1.init=/linuxrc到底是什么?2. 为什么必须“先制作,后执行”?四、用 BusyBox 搭建最小根文件系统(核心内容)1.安装通常从源码编译开始。3.其他说明3.1 编译 BusyBox3.2 创建必要目录3.3 关键配置文件4.4 shell脚本参考五、验证与调试顺序一、整体启动流程回顾U-Boot 启动内核时,使用bootz命令加载:内核镜像zImage(放在内存地址 0x80800000)设备树imx6ull-mmc-npi.dtb(放在 0x83000000)命令格式:bootz 0x80800000 - 0x83000000中间的-表示没有使用initrd(初始 ramdisk)。内核启动后,必须挂载根文件系统(rootfs),否则会 panic(内核惊恐)。根文件系统提供了/bin/sh、/etc、/lib等基本目录和程序,用户才能操作硬件。二、根文件系统是什么?需要准备哪些内容?根文件系统本质上是一套目录结构和数据,并按照某种文件系统格式(如 ext4、yaffs、ramdisk)组织起来,存放在某个根设备上。根设备可以是:闪存、SD卡、磁盘(块设备)内存(ramdisk)网络(NFS)文件系统内部必须包含:可执行程序(ls、cd、ifconfig 等)——用 BusyBox 统一提供,它是一个单二进制文件,通过argv[0]区分不同命令。动态库(如果用动态链接)——从交叉编译工具链中复制,并用strip减小体积。启动配置:/etc/inittab、/etc/rc.d/rcS、/etc/fstab、/etc/profile等,用于初始化系统、挂载虚拟文件系统(proc、sysfs、tmpfs)、设置环境变量。设备节点(通过 mdev 动态创建)。三、两种常见的根文件系统部署方式1.NFS 网络根文件系统(开发阶段最常用)优点:无需烧写,修改宿主机目录即刻生效,方便调试。1.宿主机(服务器)安装 NFS 服务:sudo apt install nfs-kernel-server编辑/etc/exports,添加共享目录(如/home/rocky/ebf/rootfs):/home/xingxinliao/ebf/rootsfs *(rw,sync,no_subtree_check)几个参数:/home/rocky/ebf/rootsfs被共享的目录,一般就是你给开发板启动用的 rootfs。chmod -R 777 rootsfs/ 修改权限,权限不够可能导致挂载失败*允许所有客户端访问。实际开发中建议改成开发板 IP,例如:/home/rocky/ebf/rootfs 192.168.1.20(rw,sync,no_subtree_check)rw客户端可以读写。sync客户端写数据时,服务器确认已经写入后才返回成功,可靠一些。no_subtree_check不检查共享目录下面的子目录关系,嵌入式 NFS rootfs 基本都这么配2.重启服务:sudo service nfs-kernel-server restartsudo exportfs -r # 让NFS重新加载配置 ↓exportfs -v # 查看加载结果更常用,因为它只重新加载导出配置,不重启整个 NFS 服务,速度快,也不会影响已经挂载的客户端目标板内核必须支持 NFS 作为根文件系统(在make menuconfig中开启CONFIG_ROOT_NFS等选项)。验证1(用户空间挂载)命令拆解: