Firefly Ubuntu 使用手册 本使用手册适用与Firefly Ubuntu Desktop & Minimal 系统,部分与UI显示相 关的介绍,只针对Desktop系统。 本地编译通用设备总线驱动 DEBIAN 包下载链接: linux-headers 安装头文件: sudo dpkg -i linux-headers-4.19.172_4.19.172-189_arm64.deb sudo dpkg -i linux-image-4.19.172_4.19.172-189_arm64.deb make headers_check make headers_install # make scripts 可能会出错但是不要紧 make scripts Docker 支持 Firefly 发布的普通固件一般不满足 Docker 的运行要求,如果有需求,可以使 用 SDK 打开内核的相关配置,重新编译烧录内核以支持 Docker。SDK 的获取以 及使用请查看编译 Ubuntu 固件。完成编译前配置之后,下面开始介绍支持 Docker 的方法: 检查 Kernel 配置 首先需要通过工具检查当前设备的内核缺少了哪些 Docker 需要的配置。检测脚 本"check-config.sh"和现成的 RK356X Docker 配置文件可以前往 社区论坛 获取。如果使用现成的配置文件可忽略以下内容。 获取到脚本之后,开始进行检测: #将脚本拷贝到SDK的kernel目录下 cp check-config.sh PathToSDK/kernel/ cd PathToSDK/kernel chmod +x check-config.sh #获取当前内核配置 make ARCH=arm64 firefly_linux_defconfig #检测 ./check-config.sh .config 执行后的结果如下,主要是两部分: Generally Necessary: - cgroup hierarchy: properly mounted [/sys/fs/cgroup] - apparmor: enabled and tools installed - CONFIG_NAMESPACES: enabled - CONFIG_NET_NS: enabled - CONFIG_PID_NS: enabled - CONFIG_IPC_NS: enabled - CONFIG_UTS_NS: enabled - CONFIG_CGROUPS: enabled ...... Optional Features: - CONFIG_USER_NS: enabled - CONFIG_SECCOMP: enabled - CONFIG_SECCOMP_FILTER: enabled - CONFIG_CGROUP_PIDS: enabled - CONFIG_MEMCG_SWAP: enabled ...... Generally Necessary: 表示必要的配置,如果有显示 missing 的地方,就需要 在内核配置中打开它。 Optional Features: 是可选配置,根据需要打开。 开启需要的配置 从上面的检测结果中得知需要打开哪些配置后,即可使用"make ARCH=arm64 menuconfig"进入菜单,搜索对应项目将其打开。请认真查看菜单中的操作说明 ,遇到不可选中的项目请注意依赖关系。 开启所有必要配置以及部分可选配置后,注意保存: make ARCH=arm64 savedefconfig mv defconfig arch/arm64/configs/firefly_linux_defconfig 之后进行编译内核: #退回到SDK目录 cd .. #编译内核 ./build.sh kernel 安装 Docker 烧录完新内核之后,可以开始在设备上安装 Docker 并验证: #这里仅介绍直接使用脚本快速安装 apt-get update wget -qO- https://get.docker.com/ | sh 等待安装成功之后应该会看见 Docker 版本信息,然后运行 demo: root@firefly:~# docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 93288797bd35: Pull complete Digest: sha256:cc15c5b292d8525effc0f89cb299f1804f3a725c8d05e158653a563f15e4f685 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm64v8) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/ Qt交叉编译环境支持 Firefly发布的Qt交叉编译工具链,适用于以下环境: Host: x86-64 / Ubuntu 18.04- Target: Firefly RK3588 RK3588 RK3328 PX30 / Ubuntu 18.04 Minimal&Desktop Target: Firefly RK356X RK3588 RK3328 PX30 / Ubuntu 18.04 Minimal&Desktop 工具链完整支持wenEngine, 支持EGLFS LinuxFB XCB 等 backend. 下载地址 链接:https://pan.baidu.com/s/1tNGqG4XSYuDxe_AdDegOAA 提取码:FFQT 部署 详情参见Qt5.12.2_Release.md 注意,文档中所有路径的名称不可更改,否则会导致编译或者运行出错。 编译 在host端,进入Qt工程目录,qmake && make 即可. 运行 工具链中提供了两个测试Demo,分别对应EGLFS和LinuxFB Backend,用户在部署 完成后,可以在host端build demo,在tartget端运行demo以测试部署是否成功 。 导出设备系统 此章节适用于: 当用户已经在一台设备上完成工作环境的部署,需要将当前环境 完整导出,以批量部署到其它同平台设备上。 导出设备系统分为两步 导出设备rootfs 二次打包完整固件,将rootfs与其它固件组成部分二次打包,生成完整固件 导出设备rootfs 在ubuntu18.04环境下,安装 fireflydev sudo apt update sudo apt install fireflydev 使用ff_export_rootfs导出根文件系统 建议使用容量较大的移动硬盘 导出工 具会执行apt clean等操作以减小文件系统大小 将根文件系统导出到 /media/firefly/AC91-C4AE/目录下,实际例子如下: root@firefly:~# ff_export_rootfs ff_export_rootfs [-t ] ff_export_rootfs /media/firefly/AC91-C4AE/ 二次打包完整固件 工具下载:firefly-linux-repack 本工具适用于用户需要替换固件中任意一组成部分 firefly-linux-repack ├── bin │   ├── afptool │   └── rkImageMaker ├── pack.sh ├── Readme_en.md ├── Readme.md └── unpack.sh 解包 把官方发布的固件拷贝到当前目录,重命名为update.img , 执行 unpack.sh 解包完成后,生成的文件在output目录下. 合包 保持当前目录结构,文件名等不变,用客户自己的文件替换output/下同名 的文件 执行pack.sh, 执行完后,生成new_update.img,即为打包好的固件 rootfs文件名必须为rootfs.img parameter.txt文件名必须为parameter.txt 注意: 合包过程中,如果rootfs分区不是最后一个分区,那么程序会根据 rootfs文件的大小, 自动修改parameter.txt中rootfs分区的大小。 如果用户 自己有改动parameter.txt,请留意整个合包的流程。 tar -xzf firefly-linux-repack.tgz cd firefly-linux-repack mv /xxx/FIREFLY-RK3588-UBUNTU18.04-GPT-20210420-1510.img update.img ./unpack.sh cp /customer/rootfs.img output/Image/rootfs.img ./pack.sh ls new_update.img 屏幕旋转 Firefly Ubuntu Desktop 使用ff_rotate脚本来控制屏幕旋转: ff_rotate root@firefly:~# ff_rotate rotate screen and touchscreen run as root ff_rotate orientation: left, right, normal, inverted #图像输出翻转 root@firefly:~# ff_rotate inverted 显示版本信息 ffgo 通过Firefly 提供的ffgo命令可以方便的查看固件信息,便于开发者调试以及定 位问题。 当用户需要向Firefly反馈信息时,需要附上ffgo version显示的版本信息。 root@firefly:~# ffgo Usage: ffgo : show this usage ffgo update: update ffgo ffgo version: get version ffgo cmdlist: get support cmd list ffgo [cmd]: run cmd in cmd list root@firefly:~# ffgo update update success root@firefly:~# ffgo version OS: Ubuntu 18.04.5 LTS MODEL: Firefly RK3588-ROC-PC HDMI(Linux) FIREFLY: v2.04-1-g618089a DATE: 20210316-1035 KERNEL: Linux version 4.19.172 (liaoxt@tchip16) (gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05), GNU ld (Linaro_Binutils-2017.05) 2.27.0.20161019) #107 SMP Mon Apr 19 09:01:32 恢复出厂设置 Firefly Ubuntu 支持恢复出厂设置。 注意,此出厂设置表示恢复为设备最后一次升级固件之后的初始状态 root@firefly:~# recovery Usage: update