根文件系统的简单配置

本文探讨了操作系统如何管理磁盘分区,包括Windows和Linux的不同文件系统(如NTFS、EXT4),以及如何在Linux中使用如BusyBox这样的工具进行文件系统配置。特别关注了分区的挂载、EMMC和SD卡管理,以及如何处理驱动加载和配置问题。
摘要由CSDN通过智能技术生成

文件系统

文件系统是操作系统对磁盘的管理

​ 不论是什么操作系统,都需要对存储介质进行分区进行管理,例如:在windos中,常常要划分系统盘和数据盘,同一个内存也可以划分成多个存储区域。系统启动所必要的文件,其他磁盘空间给用户存放数据使用

​ 一般操作系统都会支持多种常用文件系统格式:FAT(U盘)、NTFS、EXT4、YAFFS2,哪怕是U盘、SD卡都可以分区管理

在linux下SD卡分区方式,也可以用分区管理工具进行格式分区

windows默认NTFS,NTFS就是默认的文件系统,LINUX默认是EXT4

linux的分区是属于目录,要使用某一个外部设备,必须要挂载到目录设备下才能使用/mount /dev/xxx

windows是分区是属于磁盘,目录是分区下面

ext4是主要为linux使用mmc型存储器而设计的一种日志型文件系统

uboot支持EMMC和SD卡,因此也要提供EMMC和SD卡的操作命令。一般认为EMMC和 SD卡是同一个东西,所以没有特殊说明统一使用MMC来代指EMMC和SD卡。

busybox是一个小型的linux系统,它提供可以配置的选项,生成剪切后的了linux系统,和一般用到的linux系统不同,并且能将设备压缩到很小,塞进一个可执行文件里面

在文件系统中,配置busybox选项

在配置busybox选项时候,首先要配置它的静态库,busybox的build options,配置好它的编译方式,选择你的交叉编译工具链

在这里插入图片描述

其他的命令根据需要去配置,要用什么就配置什么命令

例如有些命令在配置的时候要用到比如:login,passwd,passwd这些在etc,目录下需要调用,可能会发现,

常用的命令:mount ,ls ,lsmod ,cd,cp,rm,等等

以下说几个重要的命令

df:查看节点

mount:挂载,挂载U盘,磁盘分区都有用到

swapon,swapoff,交换分区,用来暂存到内存的数据,暂时存放

insmod:挂载,这里有个很奇怪的问题,当选择simplified modutils 驱动无法挂载上,必须要要把命令手动设置上,但是有的又不用,当时显示错误是:insmod: no gzip/xz magic,显示很奇怪,一但不选择简化版的,全部选择后,就容易解决
在这里插入图片描述

一起配置好后,保存,保存了就不要再make distclean 因为保存后会生产.config文件,一切编译都是依据这个.config里面的文件去编译生成,如过清除后一切要重新选择

make -j编译

make install生成文件,文件会生成在__install里面

一般只生成三个文件,如果要生成usr,就要在配置的时候,取消选择”不生成“
在这里插入图片描述

linuxrc是一个应用层的程序,和内核没有关系。linuxrc如果是静态编译连接的,则直接可以运行;如果是动态编译连接的,必须提供必要的库文件才能运行。但实际上/linuxrc由内核直接调用执行,因此用户没有机会去导出库文件的路径,因此/linuxrc没法动态连接,一般都是静态连接的。

生成的linuxr一般指向bin里的busybox,busybox里面的命令也都指向这个

命令执行时引出用户界面。/linuxrc应用程序,也就是我们认识中的进程1,是其他所有应用程序进程的祖宗进程。比如用户操作界面由/linuxrc引出,应用程序是直接或者间接地被/linuxrc调用执行的。用户界面程序、其他的应用程序就是进程2、3、4等等。

然后添加etc目录

etc目录是linux的启动文件,一切程序的各种环境,配置,程序的加载要通过etc目录里面的配置进行实现,文件的名字都是固定的,因为linux的引导程序是根据名字来查找,进入etc目录创建init.d

在这里插入图片描述
在这里插入图片描述

rcs是第一个启动文件,里面有环境的配置,文件创建,也可以写入挂载脚本,主要是sh脚本

fstab里面是自动分区,mount -a会自动加载所有分区表里面的分区

在这里插入图片描述

profile里面是一个环境变量,对所有的用户都能配置和执行这个shell脚本。

最后对整个rootfs进行打包,通过打包命令

mksquashfs rootfs/ rootfs.bin -b 64K -comp xz -fstime 1640995200 -all-root

这个方式压缩比较大,能压缩到很小,而且只是可读文件,生产的文件加载到内存里,烧写到flash中,算好地址,一定要确定好区间,不能太大。

jeff格式也可以打包生成,也能放进去,只不过会比较大,而且jeff格式是可读可写的分区

编译.ko文件要编译自己的,因为ko文件会指向自己的kernel里,里面有些配置信息不一样,如果不同的编译出来的ko很有可能无法加载

加载驱动报错:如果加载驱动报错,很有可能提供的驱动对应的kernel版本不对,需要重新编译.ko文件,将源码修改,指向自己的kernel,在运行的时候kerlnel会检查自己的版本和这个驱动的版本是否一直。

sinfo的源码要修改,因为里面官方给出的摄像头文件信息不全,没有自己要用的,sinfo会在加载的时候查看摄像头的信息,获取到数据信息才能执行代码,
在这里插入图片描述

在这里插入图片描述

加载驱动的时候,要对驱动进行挂载,挂载驱动要写入参数,修改好的SDK中有加载的流程和步骤,可以通过SH文件查看,通过官方提供的sh,加载驱动,

  • 35
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
buildroot是一种用于构建根文件系统的工具。它可以帮助我们处理根文件系统的各种细节,使得根文件系统更加合理和有效。相比于使用busybox构建根文件系统,buildroot可以更好地满足产品开发的需求,因为它处理了很多不完善和容易忽略的细节。因此,在做产品时,推荐使用buildroot来构建根文件系统。当然,还有其他类似的软件,比如yocto,也可以用来构建根文件系统。\[1\] 使用buildroot构建根文件系统相比于使用busybox,它更加完整,不需要我们自行添加很多东西,比如库文件。在驱动开发中,很多第三方软件也需要我们自己进行移植,而这些软件往往依赖其他的库文件,导致移植过程非常繁琐。因此,使用buildroot可以简化这个过程。\[2\] 需要注意的是,使用buildroot构建的根文件系统可能是最简单的,没有配置任何第三方的库和软件。但是,我们可以通过配置buildroot来使能一些常见的第三方软件,从而满足我们的需求。\[3\] #### 引用[.reference_title] - *1* *2* *3* [Buildroot根文件系统构建](https://blog.csdn.net/lengyuefeng212/article/details/119848347)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值