【香橙派系列教程】(二十) 系统移植、交叉编译工具链—OrangePi Zero2 SDK说明

news2024/11/25 18:55:41

【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明

文章目录

  • 【二十】基于OrangePi Zero2的系统移植—OrangePi Zero2 SDK说明
    • 1.使用环境要求
    • 2.Linux获取SDK
    • 3.首次编译完整SDK

之前我们在使用香橙派时, 都是直接在香橙派上进行代码编译, 但在实际的项目开发过程中,更多的还是使用交叉编译环境进行代码的编译。再编译完成之后再把代码放到香橙派等ARM开发板上运行。因此这章节专门讲解下交叉编译环境的搭建、Uboot移植和内核移植内容。

如果电脑安装的是 Windows 系统,没有安装有 Ubuntu 22.04 的电脑,可以考虑使用 VirtualBox 或者 VMware 来在 Windows 系统中安装一个 Ubuntu 22.04 虚拟机。但是请注意,不要在 WSL 虚拟机上编译 orangepi-build,因为 orangepi-build 没有在WSL 虚拟机中测试过,所以无法确保能正常在 WSL 中使用 orangepi-build,另外请不要在开发板的 Linux 系统中使用 orangepi-build。

SDK 全称 Software Development Kit,即软件开发工具包。一般包括了一些工具(如交叉编译工具链)、库、文档和示例代码。香橙派的Linux SDK其实指的就是 orangepi-build 这套代码集,orangepi-build 在脚本和配置文件中会指定 u-boot、Linux内核和交叉编译工具链的地址,运行 orangepi-build时,当其发现本地没有这些东西,会自动去相应的地方下载的。使用 orangepi-build 可以编译出多个版本的Linux 镜像。

1.使用环境要求

新版本的orangepi-build对编译主机(也就是搭建的vmware 虚拟机)的要求:新版本的orangepi-build是在Ubuntu22.04的x64电脑或者虚拟机上运行的。

  1. 确认自己的虚拟机或者Ubuntu实体机是不是22.04的方法如下:
test@test:~$ lsb_release -a
No LSB modules are available. Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy
  1. 如果不是,可从ubuntu官网重新下载ubuntu 22.04 x64镜像,重新更新下虚拟机,ubuntu 22.04 X64镜像下载地址:

http://releases.ubuntu.com/22.04

http://releases.ubuntu.com/22.04/ubuntu-22.04.3-desktop-amd64.iso

image-20240803105133380

  1. 编译出来的完整SDK大概有16 G大小,因此建议在创建虚拟机时,至少分配50G的存储给虚拟机使用。

image-20240803123013302

  1. 在电脑中或者虚拟机中安装完 Ubuntu 22.04 后,请先设置 Ubuntu 22.04 的软件源为清华源,不然后面安装软件的时候很容易由于网络原因而出错。

清华源地址:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

image-20240803123339707

需要替换的/etc/apt/sources.list 文件的内容为:

test@test:~$ sudo mv /etc/apt/sources.list cat /etc/apt/sources.list.bak
test@test:~$ sudo vim /etc/apt/sources.list
    
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# 以下安全更新软件源包含了官方源与镜像站配置,如有需要可自行修改注释切换
deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

替换完后需要更新下包信息,并确保没有报错。

test@test:~$ sudo apt update

由于内核和 U-boot 等源码都是存放在 GitHub 上的,所以编译镜像的时候请确保电脑能正常从 GitHub 下载代码,这点是非常重要的。

2.Linux获取SDK

linux sdk 其实指的就是 orangepi-build 这套代码,orangepi-build 是基于 armbianbuild 编译系统修改而来的,使用 orangepi-build 可以编译出多个版本的 linux 镜像。首先下载 orangepi-build 的代码,目前 Linux SDK 中的 H616 系列开发板已经支持legacy 分支和 current 分支。

  1. 方法一:从 github 下载 orangepi-build(要求网络要好,因此当前不是特别推荐)

搭建完虚拟机后, 从github下载香橙派Linux SDK:

test@test:~$ sudo apt update
test@test:~$ sudo apt install git -y
test@test:~$ git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next

image-20240803185029742

如果报错fatal: 无法访问 ‘https://github.com/orangepi-xunlong/orangepi-build.git/’:GnuTLS recv error (-110): The TLS connection was non-properly terminated.

解决办法:在终端输入 sudo gedit/etc/hosts ,打开/etc/hosts文件,然后注释掉所有只涉及到github.com的行(注意是 只有github.com ,有任何别的都不可以)即可解决。

当然,如果git clone失败, 也可以直接访问该网址, 把orangepi-build的压缩包下载下来后,再放到编译主机里。
然后解压下载下来的压缩包:

unzip orangepi-build-next.zip

注意,此小节的说明是针对 orangepi-build 的 next 分支源码的,上面的 git clone命令需要指定 orangepi-build 源码的分支为 next。

通过 git clone 命令下载 orangepi-build 的代码是不需要输入 github 账号的用户名和密码的(下载本手册中的其他代码也是一样的),如果如输入 git clone 命令后Ubuntu PC 提示需要输入 github 账号的用户名和密码,一般都是 git clone 后面的orangepi-build 仓库的地址输入错误了,请仔细检查命令拼写是否有错误,而不是以为我们这里忘了提供 github 账号的用户名和密码。

image-20240803184257255

orangepi-build 下载完后会包含下面的文件和文件夹

test@test:~/orangepi-build$ ls
build.sh external LICENSE README.md scripts
  • build.sh: 编译启动脚本, 我们可以通过build.sh编译uboot、内核、根文件系统甚至完整的img
  • external: 包含编译镜像需要用的配置文件、特定的脚本以及部分程序的源码等
  • LICENSE: GPL 2 许可证文件
  • README.md: orangepi-build 说明文件
  • scripts: 编译 linux 镜像的通用脚本

支持的板材:

image-20240803210003963

方法二:从百度网盘下载(推荐使用该方法, 就不用考虑github下载过程中出现下载失败导致最后编译出来的系统可能是异常的)

从下面的百度网盘链接下载提前编译好的oragepi-build SDK包:

链接:https://pan.baidu.com/s/1y3db5GZFPZSnyYOCrKQcmQ
提取码:92gt

下载下来后是几个拆分好的压缩包, 如下所示:

test@test:~/orangepi-build$ ls
orangepi-build-ok.tar.gz_00 orangepi-build-ok.tar.gz_01 orangepi-build-ok.tar.gz_02

这个时候可以用如下的命令进行合并解压:

cat orangepi-build-ok.tar.gz_0* > orangepi-build-ok.tar.gz
tar -xvf orangepi-build-ok.tar.gz

查看占的内存大小du -hs orangepi-build/,一开始为613M

解压完后,需要去修改orangepi-build中的orangepizero2的配置脚本

vi ./external/config/sources/families/sun50iw9.conf

(修改next)分支里的内核配置版本(默认是6.1.y这里改成5.16.y版本),不然6.1.y默认编译出来的内核默认没有无线网卡、I2C也不支持。

## For Linux5.16.y
KERNELBRANCH="branch:orange-pi-5.16-sunxi64"
LINUXCONFIG="linux-5.16-sun50iw9-current"
## For Linu6.1.y
#KERNELBRANCH="branch:orange-pi-6.1-sun50iw9"
#LINUXCONFIG="linux-6.1-sun50iw9-next"

image-20240803211312266

image-20240803211422200

3.首次编译完整SDK

下载完源码后, 即可用build.sh进行首次编译.(注:如果是从6.1.2节 方法二:从百度网盘下载后, 由于已经缓存了交叉编译工具链、
uboot和内核源码, 可以不运行build.sh脚本 )

  1. 运行 build.sh 脚本,记得加 sudo 权限
sudo ./build.sh
  1. 选择Full OS image for flashing 进行完整镜像的编译

image-20240803212042543

  1. 选择不修改配置:

image-20240803212119082

  1. 根据实际的香橙派派开发版的型号, 选orangepizero2,

image-20240803212216393

  1. 选择根文件系统类型, 这边选择ubuntu 22.04 的根文件系统, 也就是jammy:

image-20240803212408265

6.选择带桌面环境,即接入HDMI显示器后,是有桌面显示的:

image-20240803212507306

7.最后选择桌面环境,这边选择xfce:

常见的桌面环境有gnome、xfce、KDE还有像国产的UOS/深度Linux系统自带的qt写的桌面环境。

image-20240803212831154

image-20240803212539194

  1. 这里的软件主要是一些额外第三方软件包的安装, 都不选择,直接ok开始编译

确认之后就会去github上面去下载我们的根文件系统、uboot源码、内核、交叉工具链,时间会比较久一些

慢的话可能要一天,做好心理准备…方法二的话不需要

image-20240803213019577

  1. 如果是第一次运行 orangepi-build 中的 build.sh 脚本时会自动下载交叉编译工具链、 u-boot 和 linux 内核源码,成功编译完一次
    linux 镜像后在 orangepi-build 中可以看到 的文件和文件夹有:
  • build.sh: 编译启动脚本
  • external: 包含编译镜像需要用的配置文件、特定功能的脚本以及部分程序 的源码,编译镜像过程中缓存的 rootfs 压缩包也存放在
    external 中
  • kernel: 存放 linux 内核的源码,内核源码的文件夹的名字请不要手动修改,如 果修改了,编译系统运行时会重新下载内核源码
  • LICENSE: GPL 2 许可证文件
  • README.md: orangepi-build 说明文件
  • output: 存放编译生成的 u-boot、linux 等 deb 包、编译日志以及编译生成的 镜像等文件
  • scripts: 编译 linux 镜像的通用脚本
  • oolchains: 存放交叉编译工具链
  • u-boot: 存放 u-boot 的源码,u-boot 源码的文件夹的名字请不要手动修改,如果修改了,编译系 统运行时会重新下载 u-boot 源码
  • userpatches: 存放编译脚本需要用到的配置文件。

经过漫长等待编译完成后, 会在orangepi-build/output/images/Orangepizero2_3.1.0_ubuntu_jammy_desktop_xfce_linux5.16.17/
Orangepizero2_3.1.0_ubuntu_jammy_desktop_xfce_linux5.16.17.img镜像。 可以直接拿这个img 烧入到SD卡中运行。

这个之前烧录的如果还是这个版本的话,并不需要重新刷机烧录。

用FileZilla软件传输文件。请回看《香橙派刷机步骤》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086600.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

联华证券-新手炒股入门指南:学习路径与注意事项

学习炒股是一个循序渐进的过程,以下是入门建议以及需要注意的事项: 学习炒股的入手步骤 掌握基础知识: 股票市场基础:了解什么是股票、股市的运作机制、股票的种类等基本概念。 常用术语:熟悉如市盈率(P/…

8.29c++

仿照string类&#xff0c;实现myString #include <iostream> #include <cstring> using namespace std; class myString { public://无参构造myString():size(10){strnew char[size];//堆区创建空间}//有参构造myString(const char *s){sizestrlen(s);//获取长度s…

TeamTalk消息服务器学习

msg_server发送消息 信令 //service id 0x0003 message IMMsgData{//cmd id: 0x0301required uint32 from_user_id 1; //消息发送方required uint32 to_session_id 2; //消息接受方required uint32 msg_id 3; // 非常重要&#xff1a;由谁产生&#xff1f;答&…

ShenNiusModularity项目源码学习(2:登录页面验证码)

前端登录页面Login.cshtml位于ShenNius.Admin.Mvc项目的Areas\Sys\Views\User内&#xff0c;页面中使用的验证码是调用同项目内UserController的OnGetVCode函数获取验证码图片。   点击验证码图片&#xff0c;会调用wwwroot\js\login.js定义的changeSrcCode函数刷新验证码。…

Qt调用外部exe并嵌入到Qt界面中(验证成功的成功)

http://t.csdnimg.cn/CDsqQ 原作者在这里 本文章主要介绍如何用Qt调用其他应用的exe,并将窗口嵌入到Qt界面中。很多人查到的代码都能成功的将exe调用起来&#xff0c;但是嵌入不到窗口中。主要有两种原因&#xff0c;现在从头到尾的梳理一下。 1.主要代码 1.1启动exe //包含…

keil编译输出的信息program size含义,以及个人使用中的编译内存溢出问题

keil编译后输出的信息含义 data对应的是片内的RAM&#xff0c;xdata对应的是程序中片外扩展的存储器上需要占用的容量&#xff0c;code是编写的程序占用单片机片内的存储程序ROM上的容量。 编译中发现错误 上图中的data值占用了147字节&#xff0c;超过了128字节。 一般解决…

2700+存储过程的超复杂Oracle,国产化怎么办?

前不久部门同事参与了一个关键客户的国产数据库Poc工作。从群里反馈的一些信息来看&#xff0c;难度还是比较大。 我们知道&#xff0c;对于数据库国产改造&#xff0c;其实有几个比较大的难点&#xff0c;其中最让人头疼的无非就是存储过程之类的对象了。 从同时提供的迁移报告…

掌握MySQL就差这一个——超详细讲解Mysql集群技术(包含主从复制,半同步模式,组复制,MHA)

一 Mysql 在服务器中的部署方法 在企业中 90% 的服务器操作系统均为 Linux 在企业中对于 Mysql 的安装通常用源码编译的方式来进行 官网&#xff1a; http://www.mysql.com 1.1 在Linux下部署mysql 1 安装依赖性&#xff1a; [rootmysql_node1 ~]# yum install cmake gcc-c…

django(二):第一个项目

接上文&#xff0c;django&#xff08;一&#xff09;&#xff1a;项目搭建开始开发第一个项目。 1. 新建app 创建一个app应用&#xff0c;取名为company。 python manage.py startapp company注册app到settings.py文件中。 2.实现Model层 settings.py文件中配置数据库&am…

软件测试学习笔记丨静态测试与代码审计 SonarQube

本文转自测试人社区&#xff0c;原文链接&#xff1a;https://ceshiren.com/t/topic/32049 一&#xff0c;SonarQube 平台搭建 1.1&#xff0c; 介绍 Sonar 是一个用于代码质量管理的开放平台。通过插件机制&#xff0c;Sonar 可以集成不同的测试工具、代码分析工具&#xff…

FATE Board 执行流程探索

背景介绍 FATE Board 是 FATE 提供的一个工程&#xff0c;用于给 FATE 提供可视化能力&#xff0c;方便在联邦学习训练中实时查看执行状态&#xff0c;更好地定位执行中遇到的问题。 查看 FATE 架构可以看到 FATE Board 是建立在 MySQL 和 FATE Flow Server 的基础上的&#…

Unity(2022.3.41LTS) - 着色器

目录 一、着色器的基本概念 二、表面着色器 一、着色器的基本概念 定义与作用&#xff1a; 着色器是一种在图形硬件上运行的程序&#xff0c;用于控制物体的颜色、纹理、光照、透明度等视觉属性。它通过对输入的几何数据&#xff08;如顶点位置、法线、纹理坐标等&#xff09…

某地级市攻防演练突破边界实战

0x1前言 今年某地级市的攻防中&#xff0c;前期通过fofa、google语法、天眼查等待信息收集获取到了某集团的单位后台后台是这样的&#xff0c;当看到这个后台系统时候脸上 不直接也就微笑了起来。最近风声紧&#xff0c;所有厚码希望大家多多理解&#xff08;我也怕死啊呜呜呜…

【MRI基础】k空间基本属性

K 空间本质上是一个矩阵&#xff0c;用于存储从 MRI 扫描仪获得的原始数据。这些数据是在扫描过程中收集的&#xff0c;K 空间中的每个点代表被扫描身体发出的 MRI 信号的不同频率和相位。存储在 K 空间中的数据不是图像形式&#xff0c;而是包含重建图像所需的所有空间频率信息…

灵办 AI:免费智能利器,开启高效办公与智能创作学习新时代

目录 引言一、初识灵办AI—开启智能办公二、灵办 AI 的强大功能解析1. 多语言翻译2. AI 对话功能3. AI 阅读功能4. AI 代码助手功能 三、灵办 AI 的其他优点四、结语 引言 在当今快节奏的时代&#xff0c;技术人员们都在努力寻觅能够提高工作效率、助力学习创作的工具。我同样…

YOLO | YOLO目标检测算法(YOLO-V1)

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 YOLO目标检测算法 YOLO V1概述&#xff08;2016&#xff09; YOLO V1概述&#xff08;2016&#xff09; 经典的One-stage方法 YOLO&#xff1a;You Only Look Once 把…

4.sklearn-K近邻算法、模型选择与调优

文章目录 环境配置&#xff08;必看&#xff09;头文件引用1.sklearn转换器和估计器1.1 转换器 - 特征工程的父类1.2 估计器(sklearn机器学习算法的实现) 2.K-近邻算法2.1 简介&#xff1a;2.2 K-近邻算法API2.3 K-近邻算法代码2.4 运行结果2.5 K-近邻算法优缺点 3.模型选择与调…

uni-app插槽(默认插槽,命名插槽,作用域插槽)

目录 什么是插槽? 基本概念 默认插槽 命名插槽 作用域插槽 场景一:子插槽向父组件传递一个字符串 场景二:子插槽向父组件传递对象 什么是插槽? 在 UniApp 中&#xff0c;插槽&#xff08;Slot&#xff09;是一种允许父组件向子组件特定位置插入HTML内容的方式。这种方式使得组…

ROS 2 Jazzy和QT组合开发教程

ROS2 Jazzy和QT组合开发教程 ROS2 和 Qt 组合开发是一个强大且灵活的组合&#xff0c;可以用来构建具有 GUI 的机器人应用程序。这个组合让你能够将 Qt 的图形界面与 ROS 2 的分布式通信功能结合在一起&#xff0c;实现数据的展示、机器人控制、调试等功能。 环境如下&#x…

掌握人事管理,这张报表帮你轻松搞定

在人事管理中&#xff0c;数据分析的重要性不言而喻。无论是了解员工的整体情况&#xff0c;还是洞察人才流失的原因&#xff0c;数据都能为我们提供有力的支持。但是&#xff0c;面对海量的数据&#xff0c;很多HR都会感到不知所措。那么&#xff0c;如何通过一张报表解决所有…