RK3566-移植5.10内核&Ubuntu22.04

说明

记录了本人使用泰山派(RK3566)作为平台并且成功移植5.10.160版本kernel和ubuntu22.04,并且成功配置&连接网络的完整过程。


本文章所用ubuntu下载地址:ubuntu-cdimage-ubuntu-base-releases-22.04-release安装包下载_开源镜像站-阿里云

本文章所用内核下载地址:

Rockchip Kernel - Rockchip open source Document


文件系统

配置Ubuntu

解压文件系统(ubuntu22.04)

复制代码
root@ubuntu:/home/zq/Desktop# mkdir ubuntu
root@ubuntu:/home/zq/Desktop# mv ubuntu-base-22.04-base-arm64.tar.gz  ubuntu
root@ubuntu:/home/zq/Desktop# cd ubuntu/
root@ubuntu:/home/zq/Desktop/ubuntu# tar -xzvf ubuntu-base-22.04-base-arm64.tar.gz

cd 到kernel目录,复制WIFI固件到ubuntu

复制代码
root@ubuntu:/home/zq/Desktop/ubuntu# cp -p ../external/rkwifibt/firmware/broadcom/all/wifi/ lib/firmware/

查看固件

复制代码
root@ubuntu:/home/zq/Desktop/Release/kernel# ls lib/firmware/
clm_bcm43752a2_ag.blob       fw_bcm43455c0_ag.bin           nvram_ap6212a_ap.txt  nvram_AP6493.txt
clm_bcm43752a2_pcie_ag.blob  fw_bcm43455c0_ag_mfg.bin       nvram_ap6212a_cy.txt  nvram_awnb108.txt
fw_awnb108_ap.bin            fw_bcm43456c5_ag.bin           nvram_ap6212a.txt     nvram_azw256.txt
fw_awnb108.bin               fw_bcm43456c5_ag_mfg.bin       nvram_ap6212.txt      nvram_azw372.txt
fw_bcm40181a2.bin            fw_bcm4354a1_ag.bin            nvram_ap6233f.txt     nvram_B23.txt
fw_bcm40181a2_mfg.bin        fw_bcm4354a1_ag_mfg.bin        nvram_AP6234.txt      nvram_cyw43438.txt
fw_bcm40183b2_ag.bin         fw_bcm4356a2_ag.bin            nvram_ap6236.txt      nvram_cyw43455.txt
fw_bcm40183b2.bin            fw_bcm4356a2_ag_mfg.bin        nvram_ap6255.txt      nvram_RK901.txt
fw_bcm43013c1_ag.bin         fw_bcm4359c0_ag.bin            nvram_ap6256.txt      nvram_RK903_26M.cal
fw_bcm43013c1_ag_mfg.bin     fw_bcm4359c0_ag_mfg.bin        nvram_AP6275P.txt     nvram_RK903.cal
fw_bcm43241b4_ag.bin         fw_bcm43752a2_ag.bin           nvram_ap6275s.txt     nvram_RK903.txt
fw_bcm4330.bin               fw_bcm43752a2_ag_mfg.bin       nvram_ap62x2.txt      rk912_fw.bin
fw_bcm43341b0_ag.bin         fw_bcm43752a2_pcie_ag.bin      nvram_AP6330.txt      rk912_patch.bin
fw_bcm4334b1_ag.bin          fw_bcm43752a2_pcie_ag_mfg.bin  nvram_AP6335.txt      rk912_patch_cal.bin
fw_bcm4339a0_ag.bin          fw_cyw43438.bin                nvram_ap6354.txt      wifi_efuse_8189e.map
fw_bcm4339a0_ag_mfg.bin      fw_cyw43455.bin                nvram_ap6356s.txt     wifi_efuse_8723bs-vq0.map
fw_bcm43436b0.bin            nvram_4330_oob.txt             nvram_ap6356.txt      wifi_efuse_8723cs.map
fw_bcm43436b0_mfg.bin        nvram_4330.txt                 nvram_ap6398s.txt     wifi_efuse_8723ds.map
fw_bcm43438a0.bin            nvram_ap6181.txt               nvram_AP6441.txt
fw_bcm43438a1.bin            nvram_AP6210_24M.txt           nvram_ap6452.txt
fw_bcm43438a1_mfg.bin        nvram_AP6210.txt               nvram_AP6476.txt

给ubuntu22.04_base arm64版本换源,只需要把对应的20.04的版本代号变为22.04即可

参考我前面的博客为ARM64架构移植Ubuntu20.04换源的发现_ubuntu20 arm源-CSDN博客https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501https://blog.csdn.net/qq_65198598/article/details/145145101?spm=1001.2014.3001.5501

|-------|---------|
| 版本号 | 代号 |
| 23.10 | mantic |
| 23.04 | lunar |
| 22.10 | kinetic |
| 22.04 | jammy |
| 21.10 | impish |
| 21.04 | hirsute |
| 20.10 | groovy |
| 20.04 | focal |
| 19.10 | eoan |
| 19.04 | disco |
| 18.10 | cosmic |
| 18.04 | bionic |
[Ubuntu各版本代号]

为Ubuntu更新软件

参考:基于 RK3588 构建 Ubuntu 22.04 根文件系统_rk3588 ubuntu-CSDN博客https://blog.csdn.net/qq_34117760/article/details/130909986https://blog.csdn.net/qq_34117760/article/details/130909986https://blog.csdn.net/qq_34117760/article/details/130909986

配置好网络过后,安装必要软件:我安装的有:

复制代码
#必要
apt install vim bash-completion net-tools iputils-ping ifupdown ethtool ssh rsync udev htop rsyslog curl openssh-server apt-utils dialog nfs-common psmisc language-pack-en-base sudo kmod apt-transport-https -y
#开发
apt install gcc g++ make cmake ninja-build build-essential ffmpeg libopencv-dev libv4l-dev v4l-utils yavta -y
#网络
apt install bluetooth* bluez* blueman* wireless-tools network-manager -y

内核

配置内核

修改kernel中的Makefile为自己的编译器(kernel/Makefile里)

使用rockchip的默认config开始配置,这里只演示配置wifi

复制代码
root@ubuntu:/home/zq/Desktop/Release/kernel# make menuconfig rockchip_linux_defconfig

进入menuconfig,搜索"ap6",如图选择/输入路径

注意需要选择的是SDIO接口并且 编辑正确的固件路径(ap6212a的固件),若固件路径不正确会导致wlan0开启失败从而不显示接口。

另外一个点是虽然在DTS里面写的模块是AP6212并且原理图上也是AP6212,但是实际上的固件加载的是AP6212A才可以正常运行,加载AP6212的固件无法运行!

编译内核&模块

开始编译内核

复制代码
root@ubuntu:/home/zq/Desktop/Release# ./build.sh  kernel

等待七七四十九天之后编译好了内核

然后开始编译模块

复制代码
make modules

等待七七四十九天之后把编译好的模块安装到即将烧录到的文件系统rootfs中

复制代码
make ARCH=arm64 modules_install INSTALL_MOD_PATH=../ubuntu

安装modules过后可以看到目录下有对应内核的模块目录

烧录&测试

调整内存分区(选做)

烧录本次文件系统&内核后使用立创原提供的内存分区文件(parameter.txt)烧录后的大小

可以看到这里的空间已经是相当极限了,基本上除了烧录文件系统什么都干不了

为了使得烧录过后的文件系统内存大一些,可以参考

泰山派调整分区大小 - 哔哩哔哩

调整分区并且下载(记得使用 以下命令调整)过后可以看到

复制代码
resize2fs /dev/mmcblk0p6

内存实现了质的飞跃

烧录过后进入系统

查询版本

显示文件系统版本使用

复制代码
lsb_release -a

显示内核版本使用

复制代码
unema -r

网络测试

检查网络接口是否检测到

复制代码
root@localhost:/home/zq# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 276  bytes 24350 (24.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 276  bytes 24350 (24.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 2409:8a0c:221f:a80:338e:d9d2:50c0:8a95  prefixlen 64  scopeid 0x0<global>
        inet6 2409:8a0c:221f:a80:d14a:5f82:9b6c:1485  prefixlen 64  scopeid 0x0<global>
        inet6 fe80::e8df:7d96:1f6:14e1  prefixlen 64  scopeid 0x20<link>
        ether b8:13:32:b0:47:90  txqueuelen 1000  (Ethernet)
        RX packets 47  bytes 6071 (6.0 KB)
        RX errors 0  dropped 3  overruns 0  frame 0
        TX packets 65  bytes 8910 (8.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

检测网络过后搜索wifi

复制代码
root@localhost:/home/zq# nmcli dev wifi list

可以看到类似于

然后连接WIFI

复制代码
 sudo nmcli dev wifi connect "WIFI名字" password "密码" ifname wlan0

然后就可以看到wlan0下面有了IP地址,说明已经连接上了

尝试安装一下 neofetch

复制代码
root@localhost:/home/zq# sudo apt install neofetch

WUHU成功

配置过程还有一些比较好的参考文章:

泰山派移植Ubuntu22.04 - Zhh Blog基于 RK3588 构建 Ubuntu 22.04 根文件系统_rk3588 ubuntu-CSDN博客立创泰山派学习01--ubuntn系统的WIFI配置及SSH的安装 - zbl1118 - 博客园make modules 和 make modules_install-CSDN博客

相关推荐
咖啡星人k1 分钟前
雷池WAF 处理 HTTP 请求的流程
网络·网络协议·http
年轮不改2 分钟前
Ubuntu 配置 github 代理
ubuntu·github
Antonio91533 分钟前
【网络编程】HTTP网络编程
网络·网络协议·http
快乐小脾孩34 分钟前
ubuntu20.04装nv驱动的一些坑
linux
java知路39 分钟前
ubuntu修改时区
linux·运维·ubuntu
wanhengidc2 小时前
独立IP服务器的好处都有哪些?
服务器·网络协议·tcp/ip
Long_poem3 小时前
【自学笔记】Mac OS语言基础知识点总览-持续更新
linux·服务器·笔记
ICT系统集成阿祥3 小时前
实验篇| CentOS 7 下 Keepalived + Nginx 实现双机高可用
linux·运维·服务器·nginx·centos
liudachu4 小时前
Centos固定IP配置
linux·tcp/ip·centos
小突突突4 小时前
总结 HTTPS 的加密流程
网络协议·http·https