从虫佬口中得知,20.04无法开启gpu是因为驱动问题,如果要开启必须要移植驱动给redroid
我们选择使用开源的gpu驱动,开启gpu支持。
同时编译内核开启相关驱动选项来玩转ebpf
链接: https://pan.baidu.com/s/1ujNRZjxRK8I_rLCkL6DVng?pwd=kkja 提取码: kkja
--来自百度网盘超级会员v7的分享
仅需要简单的刷写镜像即可开启ebpf之旅
sd卡不需要理会spi,如果是nvme启动,请往下参考
查找到方案链接 供有能力的大佬实现(需要从原场安卓镜像移植so)
https://github.com/remote-android/redroid-doc/issues/228
之后找到了大佬自己移植docker的成品
git主页
https://github.com/rk-docker
docker容器:
1
2
3
4
|
docker run - d - - privileged - - name test \
- p 5555 : 5555 \
- v / dev / mali0: / dev / mali0 \
shangzebei / rk3588 androidboot.redroid_gpu_mode = mali
|
测试后发现不行,请大佬自行测试
-
安装ppa源里的malig610固件
1 |
sudo apt install mali - g610 - firmware
|
- 创建容器
1
2
3
4
5
6
7
8
9
10
11
|
docker run - itd - - privileged \
- - pull always \
- v "$(pwd)" / Android: / data \
- v / dev: / dev \
- v / run / dbus: / run / dbus \
- v / var / run / dbus: / var / run / dbus \
- - mount = type = bind,source = / dev / mali0,destination = / dev / mali0 \
- p 5555 : 5555 \
chisbread / rk3588 - gaming:redroid - firefly \
androidboot.redroid_fps = 30 \
androidboot.redroid_gpu_mode = host
|
-
使用
ppa固件在ubuntu22.04的环境下才有,所以开始安装乌班图22.04 开始编译内核
在https://wiki.radxa.com/Rock5/downloads下发现第三方乌班图是22.04版本,果断选择
本以为能顺利的完成,结果踩坑不断
乌班图22.04官方地址:https://github.com/Joshua-Riek/ubuntu-rockchip
1
2
3
4
5
6
|
docker run - itd - - privileged \
- - pull always \
- - mount = type = bind,source = / dev / mali0,destination = / dev / mali0 \
- p 5555 : 5555 \
chisbread / rk3588 - gaming:redroid - firefly \
androidboot.redroid_gpu_mode = host
|
在多次无法启动后,使用armbian的spi启动成功
寻找过后找到了源码地址
https://github.com/armbian/linux-rockchip
Rk-5.10-rkr4分支
官方提供的编译脚本
https://github.com/armbian/build
python在乌班图高版本只有python2 或者python3 没有python
所以得随编译工具动态的变化软链接
虫佬提供的包,在新版本中名字也有发生变化
修改后的
1 |
sudo apt-get update && sudo apt-get install -y git curl apt-utils wget device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools bc python3 dosfstools bison flex rsync u-boot-tools make dwarves libelf-dev ninja-build cmake libglib2.0-dev meson libpixman-1-dev libcapstone-dev libudev-dev libssh-dev libbrlapi-dev libpmem-dev libtasn1-6-dev libdaxctl-dev libbpf-dev libpulse-dev indent libiscsi-dev libnfs-dev libgcrypt20-dev libseccomp-dev libcurl4-openssl-dev libjack-dev libsndio-dev libopengl-dev libusb-dev acpica-tools libxkbcommon-dev libslirp-dev libsdl2-dev librados-dev libglusterfs-dev libepoxy-dev libgmp-dev libgvnc-1.0-dev libgnutls28-dev libfdt-dev
|
进行课程里的修改内核步骤:
1 |
scripts /config -- enable CONFIG_BPF_LSMscripts /config -- enable CONFIG_KGDBscripts /config -- enable CONFIG_FUNCTION_PROFILERscripts /config -- enable CONFIG_FTRACE_SYSCALLSscripts /config -- enable CONFIG_BPF_KPROBE_OVERRIDEscripts /config -- enable CONFIG_TRACE_EVENT_INJECTscripts /config -- enable CONFIG_HIST_TRIGGERSscripts /config -- enable CONFIG_SCHED_TRACERscripts /config -- enable CONFIG_IRQSOFF_TRACERscripts /config -- enable CONFIG_FUNCTION_TRACERscripts /config -- enable CONFIG_STACK_TRACERscripts /config --disable CONFIG_MAGIC_SYSRQscripts /config -- enable CONFIG_IKHEADERSscripts /config -- enable CONFIG_DEBUG_INFO_BTFscripts /config -- enable CONFIG_ASHMEMscripts /config -- enable CONFIG_ANDROIDscripts /config -- enable CONFIG_ANDROID_BINDER_IPCscripts /config -- enable CONFIG_ANDROID_BINDERFSscripts /config -- set -str CONFIG_ANDROID_BINDER_DEVICES "" scripts /config -- enable CONFIG_PSI
|
开始编译:
编译安装后,失败了
搜索源码树以后,发现官方并没有提供5.10.160相关的支持

截屏2023-06-22 10.36.17
这也为后面相同内核的armbian最新版编译后安装失败埋下了伏笔
由于armbian是基于ubuntu的debian实现的,所以我打算拉取最新的armbian源码编译
结果:和ubuntu22.04一样失败了
总结: 版本的选择
在此选择下,我们开启第三个版本的测试
插曲 : 源码选择的简单见解(官方的源码只能官方镜像用,升级和降级一定要注意源码标注的系统版本)
sudo apt list |grep linux-source后
linux-source-5.10.69-legacy-rockchip-rk3588/jammy,jammy 5.10.69-legacy-rockchip-rk3588+22.08.1 all
第一 源码要与相匹配的设备 rockchip-rk3588
第二 版本必须是22.08 如果不符合 就大概率不启动
所以 我们可以在wiki下从源码挑镜像
从这里可以拿到所有armbian的版本
https://github.com/radxa-build/rock-5b/releases
rock@rock-5b:~/rk3588$ sudo apt list |grep linux-source |grep rockchip-rk3588

截屏2023-06-22 10.44.56
如此过滤 可以确定下可以尝试的版本
我采用的是全程卡刷模式,需要准备一张sd卡 淘宝上30块 128g
在此注意的是,树莓派指示灯
蓝色长亮= 砖了
绿色长亮 =关机状态
绿色长亮,蓝色闪烁 =用户态(系统正常运行)
刷机参考链接:
https://wiki.radxa.com/Rock5/install/spi
https://wiki.radxa.com/Rock5/install/microSD
首先:
- 用读卡器 (有些电脑自带) 把sd卡插到电脑上
- 使用balenaetcher直接刷入镜像包(任意Linux系统,我刷入的是虫佬课件里带的乌班图)

Etcher-rock-5b-1.png
3 .插入sd卡后会直接进入Linux系统 使用ip scanner扫描出ip 账号密码rock
- 进入Linux系统后下载spi和镜像
- 刷入spi 如果看不懂就去官方链接:https://wiki.radxa.com/Rock5/install/spi 或者选择线刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
wget https: / / github.com / huazi - yg / rock5b / releases / download / rock5b / rkspi_loader.img
wget https: / / dl.radxa.com / rock5 / sw / images / others / zero.img.gz
gzip - d zero.img.gz
ls / dev / mtdblock *
应该显示
/ dev / mtdblock0
将zero.img刷入分区
sudo dd if = spi - image.img of = / dev / mtdblock0
sync
sudo md5sum / dev / mtdblock0 zero.img
sudo dd if = spi - image.img of = / dev / mtdblock0
sudo md5sum / dev / mtdblock0 spi - image.img
|
-
刷入系统
1
2
3
4
5
6
7
8
9
|
wget https: / / github.com / radxa - build / rock - 5b / releases / download / 20221108 - 0637 / Armbian_22. 11.0 - trunk_Rock - 5b_bullseye_legacy_5 . 10.72_minimal .img.xz
sudo xzcat 'Armbian_22.11.0-trunk_Rock-5b_bullseye_legacy_5.10.72_minimal.img.xz' | sudo dd of = '/dev/nvme0n1' bs = 1M status = progress
sudo xzcat 'ubuntu-22.04-preinstalled-desktop-arm64-rock-5d.img.xz' | sudo dd of = '/dev/nvme0n1' bs = 1M status = progress
sudo xzcat 'Armbian_23.05.0-trunk_Rock-5b_jammy_legacy_5.10.110_redroid.img.xz' | sudo dd of = '/dev/nvme0n1' bs = 1M status = progress
|
-
进入系统 默认账号密码ubuntu
安装依赖项 已经修改成新版本可运行的,多跑几遍确认安装成功
1 |
sudo apt-get update && sudo apt-get install -y git curl apt-utils wget device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools bc python3 dosfstools bison flex rsync u-boot-tools make dwarves libelf-dev ninja-build cmake libglib2.0-dev meson libpixman-1-dev libcapstone-dev libudev-dev libssh-dev libbrlapi-dev libpmem-dev libtasn1-6-dev libdaxctl-dev libbpf-dev libpulse-dev indent libiscsi-dev libnfs-dev libgcrypt20-dev libseccomp-dev libcurl4-openssl-dev libjack-dev libsndio-dev libopengl-dev libusb-dev acpica-tools libxkbcommon-dev libslirp-dev libsdl2-dev librados-dev libglusterfs-dev libepoxy-dev libgmp-dev libgvnc-1.0-dev libgnutls28-dev libfdt-dev
|
下载系统使用内核版本的源码
sudo apt install linux-source-5.10.110-legacy-rockchip-rk3588
将内核源码解压
并拷贝原config
1
2
3
4
5
6
|
cd ~
mkdir kernel
cd kernel
tar - xf / usr / src / linux - source - 5.10 . 110 - rockchip - rk3588.tar.xz
tar - xf / usr / src / linux - rockchip - rk3588 - legacy_5. 10.110_22 . 11.4_config .xz
mv - v linux - rockchip - rk3588 - legacy_5. 10.110_22 . 11.4_config .config
|
进行内核设置 不全参考 https://github.com/iovisor/bcc/blob/master/docs/kernel_config.md 添加选项
如果要开启cutefish 要额外添加,暂时未做
1
2
3
4
5
6
|
scripts / config - - enable CONFIG_ASHMEM
scripts / config - - enable CONFIG_ANDROID
scripts / config - - enable CONFIG_ANDROID_BINDER_IPC
scripts / config - - enable CONFIG_ANDROID_BINDERFS
scripts / config - - set - str CONFIG_ANDROID_BINDER_DEVICES ""
scripts / config - - enable CONFIG_PSI
|
-
编译 安装 make -j8
-
安装模块 sudo make modules_install
-
安装内核 sudo make install
-
进入boot目录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
armbianEnv.txt initrd.img - 5.10 . 110 - 99 - rockchip - g
armbian_first_run.txt.template lost + found
boot.bmp System. map - 5.10 . 110 - 99 - rockchip - g
boot.cmd System. map - 5.10 . 110 - rockchip - rk3588
boot.scr uInitrd
config - 5.10 . 110 - 99 - rockchip - g uInitrd - 5.10 . 110 - 99 - rockchip - g
dtb uInitrd - 5.10 . 110 - rockchip - rk3588
dtb - 5.10 . 110 - 99 - rockchip - g vmlinuz
dtb - 5.10 . 110 - rockchip - rk3588 vmlinuz - 5.10 . 110 - 99 - rockchip - g
Image vmlinuz - 5.10 . 110 - rockchip - rk3588
initrd.img
rock@rock - 5b : / boot$ md5sum vmlinuz - 5.10 . 110 - rockchip - rk3588
3a04f82b2e6f62680d4f39de49c93940 vmlinuz - 5.10 . 110 - rockchip - rk3588
rock@rock - 5b : / boot$ md5sum vmlinuz - 5.10 . 110 - 99 - rockchip - g
67349202d412eab68167d8282c29bed3 vmlinuz - 5.10 . 110 - 99 - rockchip - g
rock@rock - 5b : / boot$ md5sum vmlinuz
3a04f82b2e6f62680d4f39de49c93940 vmlinuz
rock@rock - 5b : / boot$ md5sum Image
67349202d412eab68167d8282c29bed3 Image
|
由此我们可以看出 Image才是真正的内核引导,而在乌班图22.04中 vmlinuz是真正的内核引导
检查一下自己的引导是不是引导到了自己想启动的内核上,用md5sum检测vmlinuz 是否等于vmlinuz-5.10.110-99-rockchip-g的md5
补充:救砖方案
如果内核启动不了,插上sd卡,进入Linux系统,将原文件系统进行挂载
sudo mkdir /mnt/mydisk1
sudo mkdir /mnt/mydisk
sudo mount /dev/nvme0n1p1 /mnt/mydisk1
sudo mount /dev/nvme0n1p2 /mnt/mydisk
cd /mnt/mydisk1 # 进入boot分区
1
2
3
4
|
sudo mv Image Image.old
sudo ln - s vmlinuz - 5.10 . 110 Image
|
乌班图22.04的启动镜像在firmware(大概是这意思)的文件夹里
使用官方的编译工具安装 参考链接:https://wiki.radxa.com/Rock5/guide/build-kernel-on-5b
1
2
3
4
|
$ mkdir ~ / rk3588 - sdk && cd ~ / rk3588 - sdk
$ 内核源码从 / usr / src 解压出来 命名为kernel
$ git clone - b master https: / / github.com / radxa / rkbin.git
$ git clone - b debian https: / / github.com / radxa / build.git
|
修改内核设置
1
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
|
make rockchip_linux_defconfig
scripts / config - - enable CONFIG_BPF_LSM
scripts / config - - enable CONFIG_KGDB
scripts / config - - enable CONFIG_FUNCTION_PROFILER
scripts / config - - enable CONFIG_FTRACE_SYSCALLS
scripts / config - - enable CONFIG_BPF_KPROBE_OVERRIDE
scripts / config - - enable CONFIG_TRACE_EVENT_INJECT
scripts / config - - enable CONFIG_HIST_TRIGGERS
scripts / config - - enable CONFIG_SCHED_TRACER
scripts / config - - enable CONFIG_IRQSOFF_TRACER
scripts / config - - enable CONFIG_FUNCTION_TRACER
scripts / config - - enable CONFIG_STACK_TRACER
scripts / config - - disable CONFIG_MAGIC_SYSRQ
scripts / config - - enable CONFIG_IKHEADERS
scripts / config - - enable CONFIG_DEBUG_INFO_BTF
scripts / config - - enable CONFIG_ASHMEM
scripts / config - - enable CONFIG_ANDROID
scripts / config - - enable CONFIG_ANDROID_BINDER_IPC
scripts / config - - enable CONFIG_ANDROID_BINDERFS
scripts / config - - set - str CONFIG_ANDROID_BINDER_DEVICES ""
scripts / config - - enable CONFIG_PSI
make savedefconfig
cp defconfig arch / arm64 / configs / rockchip_linux_defconfig
make rockchip_linux_defconfig
|
执行完后使用官方脚本构建
1
2
3
|
cd ..
. / build / mk - kernel.sh rk3588 - rock - 5b
. / build / pack - kernel.sh - d rockchip_linux_defconfig - r 99
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
tar xf bpftools - arm64.tar.gz
12 ls
13 cd bpftools
14 ls
15 . / python3
16 ls
17 . / python3 share / bcc / examples / hello_world.py
18 . / python3 share / bcc / tools /
19 . / python3 share / bcc / tools / opensnoop
20 cat / proc / sys / kernel / kptr_restrict
21 echo 0 > / proc / sys / kernel / kptr_restrict
22 cat / proc / sys / kernel / kptr_restrict
23 . / python3 share / bcc / tools / opensnoop
24 ls
25 . / python3 share / bcc / tools / opensnoop
|
我实验了两遍,都成功安装运行,大家跟我一起做即可 这个部分我写的特别详细
使用第成品包移植,编译内核开启ebpf
使用成品包的原因是不确定是不是能够百分百移植显卡驱动,那么选一个有显卡驱动的开启ebpf,那么一定可以成功
目标移植地址:
https://forum.radxa.com/t/guide-best-option-for-armbian-afterburner-image-by-monkablyat/14552
下载地址:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课