说明
记录了本人使用泰山派(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更新软件
参考:基于 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博客