Buildroot SDK 搭建
准备工作
下面是我的电脑配置和虚拟机配置,希望大家编译的适合配置尽量比我高,如果CPU性能比我差也要确保内存比我大,CPU会影响编译的速度,内存小了直接会报错。
![]() | ![]() |
|---|---|
ubnutu版本信息:
lckfb@lckfb:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic2
3
4
5
6
7
8
9
10
11
12
13
14
下载 SDK
开发板资料我们通过网盘提供,其中 SDK 资料目录如下大家自行下载:
由于 SDK 压缩包体积较大,我们将一个完整的 SDK 分割成多个分卷(00, 01, 02...),在下载或传输过程中任何一个分卷损坏都会导致解压失败。
将 tspi-1f-buildroot-sdk 整个文件夹都下载下来即可。
![]() |
|---|
分割多个分卷的好处
- 突破文件大小限制: 某些云存储的单个文件限制 2-5GB,不方便上传、下载、备份。
- 便于传输和存储:分批次上传到云存储网盘,避免因网络中断重传整个大文件。
- 容错性:如果某个分卷损坏,只需要重新下载损坏的那个分卷而不需要重新下载整个 SDK
文件介绍
百度网盘中的文件介绍。
README.md
SDK 介绍:有什么,怎么快速开始使用,怎么校验验证。
extract_sdk.sh
自动解压脚本,一键执行分卷校验、内存检查、分卷合并、SDK解压、SDK文件校验等功能。
rk3566_linux_sdk_20251127.tar.xz.part.xx
完整SDK分卷后的分卷压缩包,后期需要使用他们合并再解压。自动解压脚本使用,解压完成前不建议删除。
buildroot_dl_4c7c9df616fb.tar.gz
在第一次全编译 SDK 中,如果在下载软件包出现网络 404 的报错时,可以手动替换的软件包。
file_checksums.sha256
用于校验解压完成后的文件完整性。自动解压脚本使用,解压完成前不建议删除。
sdk_parts_checksums.sha256
使用 sha256 验证分卷文件的完整性。自动解压脚本使用,解压完成前不建议删除。
sdk_parts_checksums.md5
使用 md5 验证分卷文件的完整性,用户可自行校验。
SDK 解压
确保系统有足够的磁盘空间
我们提供了自动解压脚本 extract_sdk.sh ,其与 SDK 分卷同处一个文件夹下。它会自动执行分卷校验、内存检查、分卷合并、SDK解压、SDK文件校验等功能。
如果要在当前目录解压则输入命令:
sh ./extract_sdk.sh如果要解压到指定目录,则输入命令格式:
sh ./extract_sdk.sh 要解压的目录例如解压到 /home/lckfb/Desktop 下,则运行 ./extract_sdk.sh /home/lckfb/Desktop。
本文章将直接解压原本路径。
../表示返回上一层文件夹,./表示当前文件夹。
sh ./extract_sdk.sh在脚本执行时,会进行文件校验,校验时所有文件都显示 OK,则说明文件完整,可以安全解压。如果有文件校验失败,需要重新下载对应的压缩包。
![]() |
|---|
手动解压方法
如果不想用自动解压脚本,也可以手动解压。
先校验下载下来的文件是否正常完整。
sha256sum -c sdk_parts_checksums.sha256校验通过后,开始解压。
# 先合并所有分卷
cat rk3566_linux_sdk_*.tar.xz.part.* > combined.tar.xz
# 解压
xz -d combined.tar.xz
tar -xf combined.tar
# 根据情况清理SDK压缩包
rm combined.tar2
3
4
5
6
7
8
9
extract_sdk.sh 脚本源码
#!/bin/bash
# RK3566 SDK 智能解压工具
# 自动验证完整性并解压
set -e
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# 默认输出目录
OUTPUT_DIR="${1:-./extracted_sdk}"
SDK_PATTERN="rk3566_linux_sdk_*.tar.xz.part.*"
echo -e "${GREEN}RK3566 SDK 解压工具${NC}"
echo "================================"
# 检查文件是否存在
check_files_exist() {
if ! ls $SDK_PATTERN >/dev/null 2>&1; then
echo -e "${RED}错误: 未找到SDK分卷文件${NC}"
echo "请确保以下文件存在:"
echo " - rk3566_;linux_sdk_YYYYMMDD.tar.xz.part.* (分卷)"
exit 1
fi
return 0
}
# 验证文件完整性
verify_integrity() {
echo -e "${YELLOW}[1/4] 验证文件完整性...${NC}"
if [ -f "sdk_parts_checksums.sha256" ]; then
echo "使用SHA256验证分卷文件..."
if sha256sum -c sdk_parts_checksums.sha256; then
echo -e "${GREEN}✓ 所有分卷验证通过${NC}"
else
echo -e "${RED}✗ 分卷文件损坏,请重新下载${NC}"
exit 1
fi
else
echo -e "${YELLOW}⚠ 未找到校验文件,跳过完整性验证${NC}"
fi
}
# 检查磁盘空间
check_disk_space() {
echo -e "${YELLOW}[2/4] 检查磁盘空间...${NC}"
local total_size=0
for f in $SDK_PATTERN; do
if [ -f "$f" ]; then
size=$(stat -c%s "$f" 2>/dev/null || du -b "$f" | cut -f1)
total_size=$((total_size + size))
fi
done
local required_space=$((total_size * 3)) # 解压需要2-3倍空间
local available_space=$(df . | awk 'NR==2 {print $4 * 1024}')
if [ "$available_space" -lt "$required_space" ]; then
echo -e "${RED}✗ 磁盘空间不足${NC}"
echo "需要: $(echo "scale=2; $required_space/1024/1024/1024" | bc) GB"
echo "可用: $(echo "scale=2; $available_space/1024/1024/1024" | bc) GB"
exit 1
fi
echo -e "${GREEN}✓ 磁盘空间充足${NC}"
}
# 解压文件
extract_files() {
echo -e "${YELLOW}[3/4] 解压SDK...${NC}"
# 创建输出目录
mkdir -p "$OUTPUT_DIR"
echo "合并分卷文件..."
cat $SDK_PATTERN > "$OUTPUT_DIR/combined.tar.xz"
echo "解压xz压缩包..."
cd "$OUTPUT_DIR"
xz -d combined.tar.xz
echo "解压tar包..."
tar -xf combined.tar
rm -f combined.tar
cd ..
echo -e "${GREEN}✓ 解压完成${NC}"
}
# 验证解压结果
verify_extraction() {
echo -e "${YELLOW}[4/4] 验证解压结果...${NC}"
if [ -f "file_checksums.sha256" ]; then
echo "验证解压文件完整性..."
cd "$OUTPUT_DIR"
if sha256sum -c ../file_checksums.sha256; then
echo -e "${GREEN}✓ 所有文件验证通过${NC}"
else
echo -e "${YELLOW}⚠ 部分文件验证失败${NC}"
fi
cd ..
else
echo -e "${YELLOW}⚠ 未找到文件校验信息,跳过验证${NC}"
fi
}
# 主流程
main() {
echo -e "${BLUE}输出目录: $OUTPUT_DIR${NC}"
check_files_exist
verify_integrity
check_disk_space
extract_files
verify_extraction
echo ""
echo -e "${GREEN}================================"
echo "SDK安装完成!"
echo "解压位置: $OUTPUT_DIR"
echo "================================"
echo -e "${NC}"
}
main "$@"2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
同步 SDK 源码
我们之前解压出来后是一个 .repo 的隐藏文件夹。
隐藏文件夹可以通过
ls -all查看。
![]() |
|---|
所有的源码都被记录在了 .repo 这个文件夹中,各个 git 项目都是通过 repo 进行管理的。现在我们需要使用命令将源码同步出来。
解压完成后只有 .repo 目录我们还需要通过 repo 命令把代码同步出来,运行 repo 命令需要我们 ubuntu 安装有 git 和 python 否则会报错。
更新软件包
sudo apt-get update安装git
sudo apt-get install git -y安装repo
sudo apt install repo -y安装python2
sudo apt-get install python2.7安装python3
sudo apt-get install python3python版本切换设置,为什么要切换呢因为有时候我们会用python2有时候会用python3
$设置 python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
$设置 python3.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 22
3
4
切换
sudo update-alternatives --config python切换到python2.7
$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.6 2 auto mode
1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.6 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 12
3
4
5
6
7
8
9
10
同步
.repo/repo/repo sync -l -j88同步成功
dl库代替
前面我们有提到如果你的的网路不好 buildroot 的库可能有下载失败报错的问题,所以我们这里直接提供了下载好的库直接代替即可。
将百度网盘中下载的 buildroot_dl_4c7c9df616fb.tar.gz 移动到我们解压好的文件夹。
mv ../buildroot_dl_4c7c9df616fb.tar.gz ./
移动完成后解压:
tar -xzf buildroot_dl_4c7c9df616fb.tar.gz查看是否代替成功,注意路径不要错误了
ls buildroot/dl/
完成 SDK 搭建。




