问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 11 人浏览分享

开启左侧

米联客uisrc-lab-xlnx开发包Linux根文件系统:Ubuntu、Debian、Buildroot如何切换?

[复制链接]
11 0
经验分享
经验分享: 01-AMD(XILINX) » ZYNQ|MPSOC
一、前言
1.根文件系统概述
在嵌入式Linux开发中,根文件系统(RootFilesystem,rootfs)是整个系统能够正常运行的基础。它包含了系统启动所需的库文件、配置文件、命令工具以及用户空间的应用程序框架。对于Zynq7000这类ARM结构的SoC平台而言,选择一个合适的根文件系统,直接决定了开发效率、系列性能以及最终产品的资源占用。
米联客uisrc-lab-xlnx开发包目前支持三种主流的根文件系统方案:Ubuntu、Debian和Buildroot。三者各有侧重,适用于不同的开发阶段和应用场景。下面将逐一介绍。
2.Ubuntu根文件系统
2.1什么是Ubuntu根文件系统
Ubuntu是由Canonical公司维护的开源Linux发行版,以易用性和软件生态丰富著称。其根文件系统基于Debian派生,但在软件包版本、工具链支持和社区资源上更为活跃。
在嵌入式领域,Ubuntu通常以Ubuntu Base(最小化根文件系统)的形式被裁减移植到ARM开发板上。它保留了完整的APT包管理器和标准GUN工具链,开发者可以像操作普通PC一样在板子上安装软件包、配置环境,极大地降低了嵌入式Linux的使用门槛。
2.2Ubuntu根文件系统的特点
特点说明
软件生态丰富apt仓库拥有海量预编译包,绝大多数开源库均可直接安装
社区资源充足遇到问题可在Ubuntu/Debian社区快速找到解决方案
工具链完整GCC、Python、OpenSSL等开发常用工具开箱即用
熟悉度高大多数工程师日常使用Ubuntu开发,迁移学习成本几乎为零
体积相对较大最小化rootfs解压后通常在200MB~500MB之间
启动时间较长systemd服务较多,从上电到登录提示符需要数十秒
2.3Ubuntu根文件系统的适用场景
​ Ubuntu根文件系统最适合以下阶段和场景使用:
  • 前期方案验证阶段:需要快速搭建开发环境,验证驱动、接口、算法是否跑通,不希望在系统配置上花费过多时间;
  • 日常开发调试阶段:开发者需要频繁安装调试工具(如iperf3,gdb,python3,opencv等),Ubuntu的包管理机制让这个过程非常流畅;
  • 教学与评估阶段:学习者无需深入了解嵌入式Linux底层建构流程,上手既可使用,专注于业务逻辑和硬件接口的学习;
  • 多人协作开发:统一使用Ubuntu环境,减少“环境不一致”引发的问题。
3.Debian根文件系统
3.1什么是Debian根文件系统
Debian是历史最悠久、最严谨的Linux发行版之一,Ubuntu本身就是基于Debian派生而来的。Debian根文件系统以稳定性优先为核心理念,其软件包版本经过长时间测试验证后才会进入Stable分支,因此在嵌入式产品领域拥有大量忠实用户。
通过工具可以为ARM平台快速构建一个精简且纯净的Debian根文件系统,并按需添加所需软件包,整体可控性较Ubuntu更强。
3.2Debian根文件系统的特点            
特点            说明                     
极高的稳定性Stable分支软件包经过充分测试,长期运行表现可靠                       
体积适中比Ubuntu略小,最小化安装后约150MB~300MB
软件包保守版本更细 较慢,适合追求稳定而非最新特性的场景
可定制性强可精细控制安装哪些包,裁剪冗余组件
LTS周期长官方安全维护周期长,适合产品级长期部署
社区纯粹完全由社区驱动,无商业公司背景,生态中立
3.3Debian根文件系统的适用场景
Debian根文件系统适合以下场景:
  • 产品原型与预量产阶段:功能基本定型后,需要一个更稳定、更可控的系统环境来做长期测试,Debian是从Ubuntu过渡的最自然选择,迁移成本极低;
  • 对系统稳定性要求极高的工业控制场景:如长期运行的数据采集设备、工业网关等,要求系统在无人值守的情况下稳定工作数月乃至数年;
  • 需要定制apt软件源的私有化部署场景:企业内网部署时,可搭建私有Debian镜像源,统一管理设备软件包版本;
  • 对Ubuntu商业因素敏感的项目:部分客户对Canonical的商业许可存在顾虑,纯社区维护的Debian更受青睐。
4.Buildroot系统
4.1什么是Buildroot根文件系统
Buildroot是一套专为嵌入式系统设计的自动化构建框架,它可以从源码开始,一站式编译出交叉工具链、内核、bootloader以及根文件系统。与Ubuntu/Debian不同,Buildroot构建出的根文件系统中没有包管理器,所有软件在编译阶段就可以确定,运行时不再动态安装或更新。
Buildroot生成的根文件系统体积极小,通常仅有几兆到几十兆字节,非常适合对资源和启动速度有严格要求的嵌入式产品。
4.2Buildroot根文件系统的特点               
特点    说明
体积极小典型rootfs仅10MB~50MB,可轻松放入Flash存储
启动速度快去除systemd等重型初始化框架,启动时间可压缩至3~10秒                  
高度定制通过menuconfig精确控制每一个组件,按需裁剪
无包管理器软件固化,部署后不能随意安装,安全性和一致性更强
构建周期长首次全量编译耗时较长(配置30分钟到数小时不等)
学习门槛较高需要理解交叉编译,Kconfig配置等嵌入式基础知识
闭源友好可完全掌握系统内容,便于做安全加固和知识产权保护

4.3Buildroot根文件系统的适用场景
Buildroot根文件系统的适用场景:
  • 量产产品阶段:功能完全确定后,将系统精简到只保留产品必须的组件,降低存储成本,提升系统安全性;
  • 存储资源受限的场景:板卡仅配备小容量Flash(如32MB、64MB NOR/NAND Flash);Ubuntu/Debian完全无法塞入,Buildroot是唯一选择;
  • 对启动速度有严格要求的场景:如工业设备上电即需响应、车载终端快速启动等,Buildroot+BusyBox的组合可将启动时间压缩到极致;
  • 安全敏感性产品:系统组件完全可控,无多余的后台服务和开放端口,攻击面极小,适合安防、金融、医疗等领域的嵌入式终端;
  • 离线无网络环境部署:无需联网更新依赖,系统内容在出厂时即已固化,适合工厂内网或完全隔离环境。
二、对比               
对比维度UbuntuDebianBuildroot
定位开发调试首选稳定部署过渡量产精简极致
根文件系统体积200MB~500MB150MB~300MB10MB~50MB
典型启动时间30s~60s20s~40s3s~10s
包管理器apt(丰富)apt(稳定)
定制灵活度★★☆☆☆★★★☆☆★★★★★
构建难度★☆☆☆☆★★☆☆☆★★★★☆
适合阶段开发期/学习原型期/预量产量产/资源受限
推荐人群初学者/开发工程师有经验的嵌入式工程师资深工程师/产品团队

三、三种根文件系统的切换方式
下面以米联客uisrc-lab-xlnx(7000系列)的开发包为例,分别构建Ubuntu、Debian和Buildroot三种根文件系统。
在米联客论坛https://www.uisrc.com/t-3268.html上下载板卡对应架构的开发包,这里以ZYNQ7000系列的为例。​

image.jpg
在虚拟机上打开终端输入命令tar zxvf uisrc-lab-xlnx\(zynq7000only\)20220601.tar.gz 解压开发包。解压完毕后得到的就是这样一个目录:​
image.jpg
在路径~uisrc-lab-xlnx/boards/mz7x/ubuntu/output/files下放入编译所需要的uboot设备树,kernel设备树,fsbl.elf和system_wrapper.bit文件(这边默认已经熟悉米联客usirc-lab-xlnx开发包的使用流程,如有不清楚的可以参考米联客基础入门篇的教程):
image.jpg
然后在路径~uisrc-lab-xlnx下打开终端输入命令source scripts/mz7xcfg.sh配置环境变量:
image.jpg
接下来分别输入命令:move_files.sh        移动文件到指定位置
                                    make_uboot.sh     用来制作uboot
                                    make_kernel.sh    用来制作Linux内核
                                    create_image.sh   用来制作镜像
然后插入TF卡准备烧写,分别执行:
                                    make_parted.sh    格式化并分区u盘,先输入盘符,再输入确认
                                    deploy_image.sh   烧写启动文件与系统文件,输入盘符
最后弹出TF卡后插入开发板,将模式开关拨至SD卡启动模式,上电后可以看到是Ubuntu18.04系统:
image.jpg
下面切换到Debian根文件系统的制作:
找到环境变量脚本mz7xcfg.sh,修改如下内容:​
image.jpg
然后在终端重新source环境变量,会发现路径~uisrc-lab-xlnx/boards/mz7x下生成一个debian的文件夹:​
image.jpg
在路径~uisrc-lab-xlnx/boards/mz7x/debian/output下创建一个files文件夹,并放入所需文件:
image.jpg
输入命令move_file.sh移动文件到指定位置,下面编译系统,首先要输入make_rootfs.sh重新编译根文件系统:
image.jpg
接下来依次输入命令:make_uboot.sh     用来制作uboot
                                    make_kernel.sh    用来制作Linux内核
                                    create_image.sh   用来制作镜像
然后插入TF卡准备烧写,分别执行:
                                    make_parted.sh    格式化并分区u盘,先输入盘符,再输入确认
                                    deploy_image.sh   烧写启动文件与系统文件,输入盘符
最后弹出TF卡后插入开发板,将模式开关拨至SD卡启动模式,上电后可以看到是Debian系统:
image.jpg
最后来制作Buildroot系统。
同理,找到环境变量脚本mz7xcfg.sh,修改ROOTFS_TYPE为如下内容:​
image.jpg
由于Builroot根文件系统的配置文件与Ubuntu/Debian不同,zynq7000系列的配置文件为路径~uisrc-lab-xlnx/sources/rootfs/buildroot/configs下的zynq_mz7xb_defconfig,MPSOC系列的配置文件为同路径下的zynqmp_mzu03fa_defconfig:​
image.jpg
所以还需要修改环境变量脚本mz7xcfg.sh如下内容:​
image.jpg
修改完成后在~uisrc-lab-xlnx/sources/rootfs/buildroot下打开终端输入make menuconfig配置buildroot:​
image.jpg
配置完成后运行make。(首席编译时间较长!)
接下来的步骤同上,就不再赘述了。
最后上电显示为Buildroot系统:​
image.jpg

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

156

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版