首页/新闻资讯/正文详情

《嵌入式操作系统》_根文件系统相关知识_20260303

发布时间:2026/9/27 21:35:26 来源:云帆数科 栏目:资讯中心
《嵌入式操作系统》_根文件系统相关知识_20260303
1.根文件系统有什么用(1)init进程的应用程序在根文件系统上(2)根文件系统提供了根目录/(3)内核启动后的应用层配置(etc目录)在根文件系统上。几乎可以认为发行版内核rootfs(4)shell命令程序在根文件系统上。譬如ls、cd等命令进程0空闲进程cpu空闲时进入该进程进程1初始进程init。其他进程的父本进程2守护进程kthreadd内核线程的守护进程负责管理和调度其他内核线程的创建。2.根文件系统的本质根文件系统包含了文件系统文件系统存储设备块设备像硬盘、flash等是分块扇区的访问存储设备时是按照块号扇区号来访问的这很麻烦。文件系统通过代码实现了对存储设备的管理向我们呈现目录和路径向下进行管理块设备。不同的文件系统对对存储空间的管理方法不同比如碎片管理和坏快管理。3.根文件系统的形式3.1镜像文件形式镜像文件Image File就是某块存储介质光盘、U 盘、硬盘分区、整个硬盘的完整克隆包。它不只是复制里面的文件而是把所有数据文件结构引导信息分区表原封不动打包成一个单独文件相当于给磁盘拍了一张1:1 完整快照。烧录镜像就是将对应分区1比1还原镜像。包含数据、文件结构、引导信息、分区表。文件系统有类型那么镜像文件就也有类型。3.2文件夹格式他就是个上位机中做好了根文件系统的文件夹等着你制作镜像呢4.制作一个根文件系统此文件系统仅仅可以用来挂载用以学习根文件系统的制作流程和原理。4.1mke2fs制作镜像工具ubuntu默认安装工具。用以制作ext2,ext3,ext4等格式的根文件系统。mkfs.ext2制作ext2格式的文件系统等等都是mke2fs的符号链接4.2制作镜像并挂载参考文档https://blog.csdn.net/zhengmeifu/article/details/24174513mkdir rootfs dd if/dev/zero ofrootfs.ext2 bs1024 count2048 #dd烧写命令生成一个空的、大小为 2048 * 1024 2MB 的文件 rootfs.ext2 losetup /dev/loop13 rootfs.ext2 #把普通文件 rootfs.ext2 映射为 Linux 循环设备 /dev/loop13让系统把这个文件当成一个 “虚拟磁盘设备” 来处理。 mkfs.ext2 -m 0 /dev/loop13 2048 #将 /dev/loop1即映射后的 rootfs.ext2 文件格式化为 ext2 文件系统。 mount -t ext2 /dev/loop13 ./rootfs/ #将格式化后的 ext2 虚拟设备 /dev/loop1 挂载到当前目录下的 ./rootfs/ 文件夹之后你就可以像操作普通目录一样读写这个 ext2 镜像里的内容。代码执行结果如下4.3给镜像中写文件进入rootfs文件夹创建文件rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs# cd rootfs/ rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs/rootfs# touch linuxrc rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs/rootfs# ll total 24 drwxr-xr-x 3 root root 4096 3月 4 10:49 ./ drwxr-xr-x 3 root root 4096 3月 4 10:47 ../ -rw-r--r-- 1 root root 0 3月 4 10:49 linuxrc drwx------ 2 root root 16384 3月 4 10:24 lostfound/这个linuxrc就会成为制作镜像中的/linuxrc。当然这个空文件是不可能成功执行的。如果真要做有用的rootfs就是在这一步添加真正可以执行的linuxrc程序还包括添加/lib目录下的库文件/etc目录下的配置文件。4.4卸载镜像rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs# umount /dev/loop13 rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs# losetup -d /dev/loop135.开发板烧写根文件系统镜像5.1为开发板烧录镜像开发板进入uboot命令行之后进入fastbootlinux操作系统寻找设备rootlxy-JIAOLONG-Series:/home/lxy/qianrushi/rootfs# fastboot devices SMDKC110-01 fastboot上位机烧录设备fastboot flash system rootfs.ext25.2开发板效果fastboot reboot重启设备挂载根文件系统成功但执行linuxrc失败。一切正常。[ 1.723645] EXT2-fs (mmcblk0p2): warning: mounting unchecked fs, running e2fsck is recommended [ 1.734693] VFS: Mounted root (ext2 filesystem) on device 179:2. [ 1.739263] Freeing init memory: 148K [ 1.743202] Failed to execute /linuxrc. Attempting defaults...6.NFS网络根文件系统NFSNetwork File System是一种分布式文件系统协议允许用户通过网络访问远程计算机上的文件就像访问本地文件一样。它由 Sun Microsystems 开发现已成为 Unix/Linux 系统中广泛使用的标准协议。开发板运行linux kernel做客户端上位机ubuntu做服务端。上位机运行nfs服务器在服务器中添加文件夹形式的rootfs目录。我们使用的内核已支持nfs客户端,但还需稍做修改6.1内核配置网络部分内核部分保存后重新make -j166.2上位机nfs服务器搭建安装nfs服务端sudo apt update sudo apt install -y nfs-kernel-server创建共享文件夹rootlxy-JIAOLONG-Series:/home/lxy# mkdir nfs_rootfs rootlxy-JIAOLONG-Series:/home/lxy# chmod 777 nfs_rootfs rootlxy-JIAOLONG-Series:/home/lxy# chown nobody:nogroup nfs_rootfs编辑NFS 配置文件vim /etc/exports直接在文档最后添加以下代码/home/lxy/nfs_rootfs *(rw,sync,no_root_squash,no_subtree_check) # *允许所有 IP 访问 # rw读写 # sync同步写入安全 # no_root_squash开发板 root 用户能拥有服务器端 root 权限嵌入式必须开 # no_subtree_check关闭子目录检查稳定配置生效sudo exportfs -rv重启nfs并设置为开机自启sudo systemctl restart nfs-kernel-server sudo systemctl enable nfs-kernel-server # 开机自启查看nfs是否共享成功showmount -e localhost6.3修改bootargs修改uboot的传参bootargssetenv bootargs root/dev/nfs nfsroot192.168.1.141:/home/lxy/nfs_rootfs,nfsvers3,tcp,nolock ip192.168.1.10:192.168.1.141:192.168.1.1:255.255.255.0::eth0:off init/linuxrc consolettySAC2,115200 rootwait rw6.4修改nfs配置文件以前使用的16.04版本的ubuntu没问题现在更换了20.04版本开始报错。从Ubuntu17.04开始nfs默认只支持协议3和协议4而kernel中默认支持协议21.修改配置文件vim /etc/default/nfs-kernel-server2.在末尾添加RPCNFSDOPTS--nfs-version 2,3,4 --debug --syslog3.重启nfs服务sudo /etc/init.d/nfs-kernel-server restart可以看到根文件系统挂载成功linuxrc程序启动失败。一切正常7.linuxrc是什么可执行的应用程序用户态7.1他干了什么1.用户操作界面cmdline、gui。就是linuxrc程序引导的。直接或者间接被/linuxrc调用执行2.负责操作系统启动之后的配置一般叫运行时配置。7.2嵌入式linux中的linuxrcBUSYBOX一般就是busybox一个c语言写的项目用什么编译器就能在什么平台上运行他就是专门开发的init进程。其为当前系统提供了一整套的shell命令程序集比如vi、cd等等。在桌面版的linux中每个shell命令都是单独的可执行程序在嵌入式linux操作系统中我们集合到了一起构成了一个shell命令包。起名叫busybox。8.一个真正的根文件系统需要包括什么1.linuxrc2.dev目录设备文件在linux操作系统中一个硬件设备被当做一个设备文件来访问。read/write/ioctl/close操作设备3.sys和proc目录是个空文件夹就行但不可省略和驱动有关属于linux中的虚拟文件系统。4.usr目录存放系统用户所有的一些文件将来busybox安装时自动生成5.etc目录非常重要目录中的文件全都是运行时配置文件。/etc目录中的配置文件会直接或间接的被linuxrc程序调用完成操作系统的运行时配置。etc目录是制作rootfs的关键6.lib目录很关键不可省略。目录下存放当前操作系统中的动态和静态链接库文件。动态链接比如说printf函数其本体并未放置在a.out这个可执行程序中而在/lib/stdio.o这个文件中只有在a.out运行时程序会去/lib文件夹下找。9.VFSvirtual file system1.将硬件设备的访问虚拟为对文件目录的访问。我们就可以通过设备文件的方式访问硬件设备。2.形成隔离层协调多个文件系统的文件处理操作系统直接对接的是vfsvfs再去处理下层的文件系统文件系统调用驱动。

相关推荐

网站的建设与维护实践报告:不会代码也能做的保姆级建站教程
网站的建设与维护实践报告:不会代码也能做的保姆级建站教程

网站的建设与维护实践报告:不会代码也能做的保姆级建站教程 自己不会代码想做网站,是不是看着满屏的HTML和CSS就头大?别慌,今天这篇网站的建设与维护实践报告,就是为你准备的保姆级建站教程。… · 2026/9/27 21:35:26

MyBatis关联映射(一对多查询)
MyBatis关联映射(一对多查询)

引: “一个用户可以有多个订单,多个订单也可以归一个用户所有。” 本文主要实现《Java EE企业级应用开发教程(SpringSpringMVCMybatis)》第2版中第4章中的MyBatis一对一查询。 本文使用工具:IDEA2024、jdk1.8、mave… · 2026/9/27 21:35:19

WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 + 年度聊天报告)
WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 + 年度聊天报告)

WeChatMsg 完整指南:免费把微信聊天记录导出成 Word/HTML/CSV(4 步上手 年度聊天报告) 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项… · 2026/9/27 21:35:19

模型无关设计:OpenClaw 兼容 GPT、Claude 与本地大模型的配置骨架
模型无关设计:OpenClaw 兼容 GPT、Claude 与本地大模型的配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:01:46

嵌入式c语言编程的一些概念合并或正式提出
嵌入式c语言编程的一些概念合并或正式提出

最近,我在写stm32单片机程序,有一些概念在前面我总结的文章中没有明确提出来,但是含义已经表达清楚了,今天这篇文章就是对这些概念进行总结合并并正式提出。(1)应用层和驱动层。我以前文章中多次提到&#… · 2026/9/27 22:01:46

OpenClaw 实战避坑:从 gateway 配置到 skill 加载的问题记录与 tips 汇总
OpenClaw 实战避坑:从 gateway 配置到 skill 加载的问题记录与 tips 汇总

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:01:46

OpenViking 调研:用 TaoToken 统一 Key 打通配置与验证链路
OpenViking 调研:用 TaoToken 统一 Key 打通配置与验证链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 22:01:40

网站建设所要花费的资金一文搞懂:小白避坑指南
网站建设所要花费的资金一文搞懂:小白避坑指南

网站建设所要花费的资金一文搞懂:小白避坑指南 自己不会代码,想做网站却怕被坑?别慌,这行水深,但底细能摸透。今天咱们不整虚的,直接拆解网站建设所要花费的资金,一文搞懂从域名到上线的每一笔钱花在哪。很多初学者刚入行,对着报价单一头雾水,不知道… · 2026/9/27 22:01:40

科研必备文献工具 Zotero:从入门到高效管理
科研必备文献工具 Zotero:从入门到高效管理

1. 引言 对于科研工作者来说,文献管理是日常工作中绕不开的一环。从文献的检索、下载、阅读、标注,到论文写作时的引用插入,每一个环节都耗费着大量精力。而 Zotero 作为一款免费、开源、跨平台的文献管理工具,凭借其强大的插件生… · 2026/9/27 22:01:39

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码