Bootstrap

Linux系统移植四:Petalinux使用本地sstate-cache加速构建根文件系统

根文件系统简介

根文件系统 rootfs 是Linux内核启动以后挂载(mount)的第一个文件系统,然后从根文件系统中读取初始化脚本,比如rcS,inittab等

根文件系统和Linux内核是分开的,单独的Linux内核是没法正常工作的,必须要搭配根文件系统

如果不提供根文件系统,Linux内核在启动的时候就会提示内核崩溃(Kernel panic)的提示

主要目录

目录名介绍
/bin存放着系统的可执行文件
/devlinux device文件,设备以文件的形式存在
/etc存放着各种服务程序的配置文件
/liblibrary,存放着Linux所必须的库文件
/opt可选的文件、软件存放区
/home普通用户的工作目录
/root超级用户的工作目录

往期文章

Linux系统移植一:移植U-BOOT 添加自己的板子并编译(非petalinux版)
Linux系统移植二:生成fsbl引导文件并制作BOOT.bin(非petalinux版)
Linux系统移植三:移植Kernel生成zImage和dtb文件(非petalinux版)

之前我们已经构建好了U-BOOT和Kernel,现在就缺 rootfs 就可以启动完整的Linux系统了

Petalinux构建根文件系统

手工构建方式非常耗时,正常网速通常都需要几个小时,所以我直接放弃555

请添加图片描述

选择用工具来构建,如Yocto,而 Petalinux 工具已经包含了 Yocto,所以我们可以直接使用 Petalinux 工具来构建根文件系统

配置好 Petalinux 环境后,新建Petalinux 工程 petalinux-create --type project --template zynq -n ALINX-ZYNQ

配置硬件描述信息 petalinux-config --get-hw-description <hdf文件路径> ,保存默认配置,退出

然后输入 petalinux-config -c rootfs 进入GUI配置界面来配置根文件系统

配置opencv, 找到 Filesystem Packages —>libs —>opencv,如图

在这里插入图片描述

配置QT, 找到 Filesystem Packages —>misc–>qtbase ,如图

在这里插入图片描述

其他配置自行选择,保存退出,最后输入 petalinux-build -c rootfs 来编译根文件系统

遇到的问题

WARNING: xxx do_fetch: Failed to fetch URL ... ,attempting MIRRORS if available

下载源有问题,外部网络下载不到,只有xlx内部的vpn可以访问,但是我们可以设置本地文件编译

高速缓存下载地址 https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/embedded-design-tools/archive.html

我下载的是2017.4版本的,README也下载一下,教我们如何配置,不同版本的README是不同的,一定要下载下来看!

在这里插入图片描述
31.9GB,还是蛮大的,网速可以的话直接下,毕竟下一次一劳永逸

下载sstate到本地,解压之后有以下几个目录

在这里插入图片描述

看一下README 文件

By default petalinux uses sstate-cache and download mirrors from petalinux.xilinx.com
This README is for the users who uses tool completely offline.

Setting sstate cache

1) Extract the downloaded tar contents of sstate-cache at any location
2) run petalinux-config
         -> Yocto Settings
             ->Local sstate feeds settings
                  ->local sstate feeds url
                          (press Enter)
3) Provide the path of sstate-cache from above
           Ex: /<path>/aarch64  for ZynqMP projects
               /<path>/arm      for Zynq projects
               /<path>/mb-full  for MB AXI full projects

4) Save the configurations to use the sstate-cache

Setting download mirror

1) Extract the downloaded tar contents of sstate-cache at any location
2) run petalinux-config
        -> Yocto Settings
                -> Add pre-mirror url
						          ->  (press Enter)
							            Clear default value

3) Provide the path of sstate-cache from above
        file://<path>/downloads for all projects

4) Save the configurations to use the download mirrors

5) Verify the changes in build/conf/plnxtool.conf
6) petalinux-build

输入 petalinux-config 命令,重新进入配置界面,按照README中的方法配置,一定要注意路径!

在这里插入图片描述

在这里插入图片描述

保存退出,进入petalinx工程目录,验证build/conf/plnxtool.conf 是否正确配置

在这里插入图片描述

可以看到我们刚才配置的信息已经更新了,说明没什么问题了

最后再用 petalinux-build -c rootfs 来编译根文件系统了

经过半个多小时的等待,终于编译好了,在petalinux工程 /images/linux 目录下可以找到 rootfs.tar.gz

在这里插入图片描述

;