0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

rootfs镜像制作其实没那么难

ZLG致远电子 2025-04-03 11:37 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式Linux开发中,文件系统的打包和镜像制作是关键步骤。本文介绍了Linux核心板文件系统的打包与镜像制作方法,适合嵌入式开发人员快速上手。


f29ea166-103c-11f0-9434-92fbcf53809c.jpg  前言

致远电子Linux核心板提供的系统固件里,除了镜像文件之外,通常还会提供文件系统压缩包。镜像文件可以直接用于烧写到目标板,而文件系统压缩包则可以进行部分修改,修改后重新制作镜像文件烧写。

这里只讲直接用编译好的二进制文件对文件系统打包的问题。一般来说,如果自己能从源码开始编译文件系统,打包文件系统也不会存在什么问题。


f29ea166-103c-11f0-9434-92fbcf53809c.jpg  rootfs打包

解开压缩包,可以看到通常包含如下目录。

/bin /boot /dev /etc /home /lib /media /opt /proc /root /sbin /tmp /usr /var

对根文件系统进行修改后,再次打包成镜像文件,由于没有了buildroot这样的自动化文件系统制作工具,这就需要特别注意:

  • 打包文件系统时的目录位置、权限等,要用root权限打包,普通用户打包会出现错误,文件系统不完整。
  • 不能将Linux下的tar包解压在Windows格式的硬盘并打包。

对于文件系统打包位置问题,举个例子:

$cdmyrootfs$ls$/bin /boot /dev /etc /home /lib /media /opt /proc /root /sbin /tmp /usr /var$sudo tar cvf ../myrootfs.tar * #将当前文件系统全部文件打包到上一级目录


f29ea166-103c-11f0-9434-92fbcf53809c.jpg  制作UBI文件系统镜像

使用UBI文件系统时,有ubifs.img和ubi.img两种不同镜像。其中ubifs.img用于U-Boot下烧写,而ubi.img镜像则用于进入Linux系统后的更新。

1. 制作ubi烧写镜像

制作ubi镜像的工具为mkfs.ubifs,有下列参数:

-r:制定文件内容的位置;

-m:页面大小;

-e:逻辑擦除块大小;

-p:物理擦除块大小;

-c:最大的逻辑擦除块数量;

-s:最小的硬件输入输出页面大小,如:k9f1208为256。

特别提示,页面大小等参数要根据内核加载Flash分区时ubifs输出的信息一致,否则不能启动系统。

示例:

$sudo mkfs.ubifs -r rootfs -m 2048 -e 129024 -c 1948 -o ubifs.img

2. 制作ubifs镜像

制作ubifs镜像用到的工具为ubinize。例:

$sudo ubinize -o ubi.img -m 2048 -s 512 -p 131072 ubifs.conf

ubifs.conf的内容如下:

[ubifs]mode=ubiimage=ubifs.imgvol_id=0vol_size=200MiBvol_type=dynamicvol_name=rootfs #建议与uboot创建的卷标一致vol_alignment=1vol_flags=autoresize

进入Linux后可通过ubiformat命令烧写ubi.img,例如:

#ubiformat /dev/mtd4 -s 512 -f ubi.img


f29ea166-103c-11f0-9434-92fbcf53809c.jpg  制作 Ext4文件系统制作Ext4文件系统,一般方法是先准备好根文件系统内容,然后创建一个镜像文件,格式化成Ext4格式,然后将镜像文件挂载到一个目录并复制根文件系统的内容到里面,之后卸载,最后进行一些处理。

$sudomkdirfs$sudoddif=/dev/zero of=fs.img bs=1M count=4096#创建初始大小的镜像文件$sudomkfs.ext4 fs.img #格式化镜像文件为Ext4文件系统$sudomount fs.img fs/ #挂载镜像文件到fs目录$sudocp-rfp myrootfs/* fs/ #复制根文件系统文件$sudoumount fs/ #卸载$sudoe2fsck -p -f fs.img #检查文件系统分区是否正常$sudoresize2fs -M fs.img #调整文件系统镜像大小

也可以写成脚本将几步操作合成一步操作,例如MX2000文件系统制作脚本内容如下:

#!/bin/bashOUTPUT_FILE=data.ext4TARGET_DIR=./usrdata/ROOTFS_EXT4_REV=1ROOTFS_EXT4_LABEL="data"ROOTFS_EXT4_SIZE=3069ROOTFS_EXT4_SIZE_MB=${ROOTFS_EXT4_SIZE}MROOTFS_EXT4_INODES=0ROOTFS_EXT4_RESBLKS=5ROOTFS_EXT4_MKFS_OPTIONS="-O ^64bit -O ^has_journal"ddif=/dev/zero of=${OUTPUT_FILE}bs=1M count=${ROOTFS_EXT4_SIZE}mke2fs -d${TARGET_DIR}\ -r${ROOTFS_EXT4_REV}\ -N${ROOTFS_EXT4_INODES}\ -m${ROOTFS_EXT4_RESBLKS}\ -L"${EXT4_LABEL}"\ ${EXT4_MKFS_OPTS}\ ${OUTPUT_FILE}


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • zlg
    zlg
    +关注

    关注

    1

    文章

    71

    浏览量

    39030
  • 核心板
    +关注

    关注

    6

    文章

    1344

    浏览量

    31760
  • rootfs
    +关注

    关注

    0

    文章

    20

    浏览量

    4905
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux内核镜像bzImage和rootfs制作、安装及调试过程

    一个最小可运行Linux操作系统需要内核镜像bzImage和rootfs,本文整理了其制作、安装过程,调试命令,以及如何添加共享磁盘。
    发表于 10-14 17:28 8213次阅读
    Linux内核<b class='flag-5'>镜像</b>bzImage和<b class='flag-5'>rootfs</b>的<b class='flag-5'>制作</b>、安装及调试过程

    自己想做个显示器,其实那么

    =5美元开关(可选) =2美元电位器(可选) =2美元面包板 =1美元SD卡(不能用大容量)=5美元国外项目,美元到人民币的换算请自行查阅其实很多材料都可以回收再利用,如果你是一位经常Make的人
    发表于 12-09 12:44

    为什么芯片那么搞?

    为啥芯片那么搞?终于有人讲透了!
    发表于 05-29 17:45

    树莓派系统镜像制作

    从树莓派带你掌握嵌入式linux产品实战开发–树莓派系统镜像制作(七)作者:伍俊伟 本文非作者授权,禁止转载2020年8月22日文章目录从树莓派带你掌握嵌入式linux产品实战开发--树莓派系统镜像
    发表于 11-05 09:21

    请问IMX8MP使用UUU烧录rootfs.sdcard镜像后,根目录的空间还能再调整吗?

    之后,emmc的/dev/root分区也就是1G。那么emmc剩余的十几G的空间都是没有分区的,有没有办法可以让根文件系统的容量扩展到整个emmc的空间?如果直接制作十几G的rootfs.sdcard烧录到emmc,就烧录得太慢
    发表于 12-30 06:49

    如何缩小制作完成的系统镜像大小?

    到系统中工作:现在的问题是,制作完成的镜像太大了,跟实际分区大小是一致的,达到了5.5GB,但是从df -h信息可以看到,镜像加载后实际占用空间并不大,只有1GB不到。镜像太大,一方面
    发表于 01-04 07:39

    如何在PC主机上制作Ubuntu Rootfs镜像

    之前教程已经讲完如何替换kernel及boot 镜像制作,今天讲如何制作Ubuntu Rootfs镜像。本文主要讲解
    发表于 06-02 16:01

    如何制作光盘镜像文件

    如何制作光盘镜像文件 NERO软件不管是刻录还是做镜像文件,都是很好用的。下面介绍一下如何制作:有的时候我们不喜欢Nero
    发表于 09-11 16:03 3.1w次阅读
    如何<b class='flag-5'>制作</b>光盘<b class='flag-5'>镜像</b>文件

    人脸识别那么,1行命令就能实现

    现在人脸识别那么火,各大手机厂商也是争先在自己的手机上加入这种技术。那么,人脸识别技术真的很难吗,其实不是的。下面告诉你如何用1行命令实现人脸识别技术。
    发表于 10-27 16:13 2935次阅读
    人脸识别<b class='flag-5'>没</b><b class='flag-5'>那么</b><b class='flag-5'>难</b>,1行命令就能实现

    linux系统镜像制作

    Rescue开源工具来实现linux系统的打包备份,如果你经常需要安装很多软件在服务器上,并且服务器较多,那么是否需要直接将你已安装好的系统打包成镜像文件,然后制作成你自己的系统,之后只需要直接安装就可以了。
    发表于 11-03 14:34 5133次阅读
    linux系统<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>

    小卫星制造没有那么,其实和IT攒机差不多

    小卫星这种东西,一旦上了量搞起产业化,全球竞争起来搞不好就白菜化了。本来也那么神秘,说穿了和IT攒机或者嵌入式系统研发差不多。以后全球小卫星组网,也说不定是中国干成的。
    的头像 发表于 02-07 14:48 7212次阅读
    小卫星制造没有<b class='flag-5'>那么</b><b class='flag-5'>难</b>,<b class='flag-5'>其实</b>和IT攒机差不多

    芯片本质是什么 芯片制作为什么那么

      为什么制作一块芯片那么?   制作一块芯片的难度如同创造一座城市,甚至比创造城市更难!   从华为中兴等一系列中国企业被芯片制裁,到中国勒紧裤腰带造芯片,再到2022
    的头像 发表于 04-19 14:45 2.4w次阅读
    芯片本质是什么  芯片<b class='flag-5'>制作</b>为什么<b class='flag-5'>那么</b><b class='flag-5'>难</b>

    从零开始学习制作、以及使用Tina的Docker编译镜像

    学习制作、以及使用Tina的Docker编译镜像
    的头像 发表于 08-28 11:45 3144次阅读
    从零开始学习<b class='flag-5'>制作</b>、以及使用Tina的Docker编译<b class='flag-5'>镜像</b>

    linux镜像制作工具

    Linux镜像制作工具是一类非常重要的工具,可以用于创建定制的Linux操作系统镜像。这些工具可以帮助开发人员、系统管理员和Linux爱好者创建个性化的Linux发行版、定制化的嵌入式操作系统以及
    的头像 发表于 11-23 09:56 3475次阅读

    Docker-镜像的分层-busybox镜像制作

    docker hub里面查看busybox的Dockerfile, 知识点4:bootfs 和 rootfs  知识点5:为什么Docker镜像要采用这种分层结构? 如果多个容器共享一份基础镜像,当某个
    的头像 发表于 01-15 10:44 1007次阅读
    Docker-<b class='flag-5'>镜像</b>的分层-busybox<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>