当前位置: 首页 > news >正文

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

目录

一、整体启动流程回顾

二、根文件系统是什么?需要准备哪些内容?

三、两种常见的根文件系统部署方式

1.NFS 网络根文件系统(开发阶段最常用)

1.宿主机(服务器) 安装 NFS 服务:

几个参数:

2.重启服务:

验证1(用户空间挂载)

验证2(内核空间挂载):

1. init=/linuxrc 到底是什么?

2. 为什么必须“先制作,后执行”?

四、用 BusyBox 搭建最小根文件系统(核心内容)

1.安装通常从源码编译开始。

3.其他说明

3.1 编译 BusyBox

3.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)

文件系统内部必须包含:

  1. 可执行程序(ls、cd、ifconfig 等)——用 BusyBox 统一提供,它是一个单二进制文件,通过 argv[0] 区分不同命令。

  2. 动态库(如果用动态链接)——从交叉编译工具链中复制,并用 strip 减小体积。

  3. 启动配置/etc/inittab/etc/rc.d/rcS/etc/fstab/etc/profile 等,用于初始化系统、挂载虚拟文件系统(proc、sysfs、tmpfs)、设置环境变量。

  4. 设备节点(通过 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 restart

        sudo exportfs -r     # 让NFS重新加载配置
        ↓
        exportfs -v          # 查看加载结果

        更常用,因为它只重新加载导出配置,不重启整个 NFS 服务,速度快,也不会影响已经挂载的客户端

  • 目标板内核必须支持 NFS 作为根文件系统(在 make menuconfig 中开启 CONFIG_ROOT_NFS 等选项)。

验证1(用户空间挂载)

命令拆解:

http://www.jsqmd.com/news/1393424/

相关文章:

  • Genesis Plus GX 高精度世嘉模拟器完整指南:如何用一款核心跑通 5 代主机?
  • Java操作题实战:从基础语法到工程能力的查漏补缺指南
  • 多智能体落地总翻车?AgentScope 2.0 帮你把每个环节都变成看得见、信得过的工程
  • 让吃灰的PS2重新开机:Open PS2 Loader免盘游戏实战指南
  • React-Slot-Fill实战教程:构建动态工具栏与内容区域的无缝集成
  • 出险后头一个电话打给谁?奎屯车主用一次体验说清「保险一站式代办」 - 生活动态圈
  • bbb-install 保姆级部署指南:30 分钟搭建 BigBlueButton 在线会议服务
  • Claude 的思考解码之旅:Anthropic 的透明化探索
  • 老房价值重生,居住体验升级|十空筑造旧房改造保值增值设计逻辑 - 玉溪装修看看
  • 178、LLC谐振变换器的PCB设计实战(DFT)
  • 2026上海静安香奈儿包包回收新规全解析:经典款CF还是“硬通货”,别让“保值神话”变成“折价现实” - 榆木脑袋老和尚
  • IINA 终极指南:把 macOS 视频播放器从“将就“用到“讲究“
  • 生图API 返回的图链接会过期吗?nano banana pro 出图后的托管与 CDN 方案
  • 朝鲜Lazarus梦想工作行动实战复盘:Windows 0Day漏洞攻防检测与溯源手册
  • 3分钟让GitHub Desktop变成中文界面,这款免费汉化工具真的不折腾
  • 闭包(Closure)概念与案例
  • 北京房山名包回收合规门店特征:实体经营+资质公示+鉴定师持证+明码标价 - 大牌科普时报
  • 9大网盘直链解析工具:一键拿到真实下载地址,从此告别限速等待
  • 【Vue知识点总结】Vue如何实现跳转页面?
  • OneNav 主题切换到底值不值得折腾?5 个玩法让书签导航页脱胎换骨
  • 文字转CAD工具text-to-cad-ui快速上手指南:3步把一句描述变成可用的3D模型
  • LLM Interview Questions and Answers Hub:100+精选问题助你轻松应对AI面试
  • 车门凹了不拆件、不刮腻子就能修平?奎屯车主在艺猫找到凹陷无痕修复的满分答案 - 生活动态圈
  • 179、LLC谐振变换器的PCB设计实战(DFA)
  • Claude Code架构解析:从代理循环到生产级安全带的AI编程伙伴
  • 一文讲透细胞通讯数据库CellChatDB:配体-受体相互作用与单细胞通讯分析实战指南
  • 一上午搬空一个网站:WebSite-Downloader 让整站离线下载不再依赖网络
  • 【风电功率预测】【多变量输入单步预测】基于LSTM的风电功率预测研究附Matlab代码
  • MulimgViewer 多图像浏览器快速上手指南:图像批量对比与拼接的终极方案
  • nano——命令行文本编辑器