这篇文章上次修改于 318 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

先上个效果图

2023-01-07T14:49:02.png

2023-01-07T14:48:09.png


实操提示

  1. 该上代理的上代理
  2. 有的命令权限不够,记得加sudo
  3. docker run一次产生一个实例,有了一个之后后面用docker exec进入
  4. 编译的时候要散热,不然指不定什么时候就挂了
  5. scrcpy操作很卡,主要是redroid不支持rk3588的gpu,cpu渲染就比较卡,散热散热散热,from B哥
  6. Ubuntu

redroid官方指南在此,开头的几个命令其实就挺懵(如下)

apt install linux-modules-extra-`uname -r`
modprobe binder_linux devices="binder,hwbinder,vndbinder"
modprobe ashmem_linux

尝试执行发现各种不行,差点放弃,后面又摸索到redroid-modules的说明

看了半天才发现最后写着自定义内核直接开启CONFIG_ASHMEMCONFIG_ANDROID_BINDERFS就完事儿了

If use custom kernel (5.0+), you can enable binderfs and ashmem configs; So the kernel modules in this repo are not needed any more.

补充:如果编译有问题可以试试开启PSI


建议先sudo apt upgrade一把,然后重启,把内核升级到最新

话不多说,我们自己开启选项,编译内核

官方的教程还是比较清晰的,前面按照wiki来就行,我这里列一下我的命令

安装必要库

sudo apt-get update
sudo apt-get install -y git  device-tree-compiler libncurses5 libncurses5-dev build-essential libssl-dev mtools bc python dosfstools bison flex rsync u-boot-tools

同步内核等源代码,这里加个--depth=1节省点时间

mkdir ~/rk3588-sdk && cd ~/rk3588-sdk
git clone -b linux-5.10-gen-rkr3.4 https://github.com/radxa/kernel.git --depth=1
git clone -b master https://github.com/radxa/rkbin.git --depth=1
git clone -b debian https://github.com/radxa/build.git --depth=1

然后使用下面的命令生成内核配置,先不要急着复制执行,记得在make menuconfig这一步的时候打开CONFIG_ASHMEMCONFIG_ANDROID_BINDERFS

cd ~/rk3588-sdk
cd kernel
make rockchip_linux_defconfig
make menuconfig
make savedefconfig
cp defconfig arch/arm64/configs/rockchip_linux_defconfig

具体怎么操作呢,就是在执行了make menuconfig之后,会弹出一个类图形界面让你操作

2023-01-07T15:53:47.png

然后按/即可进行关键词搜索,输入后回车即可,就可以找到相关选项在哪些位置可以进行配置(按ESC退出搜索结果界面)

2023-01-07T14:59:17.png

2023-01-07T14:59:31.png

通过上下键进行浏览,回车进入子一级,按空格切换选项配置,一般星号就是生效的意思

选好之后,按TAB切换最下面的选项,先save然后exit就可以执行下一步命令了

后面就是按照官方wiki进行编译


编译内核(散热散热散热

cd ~/rk3588-sdk
./build/mk-kernel.sh rk3588-rock-5b

打包内核相关的内容,这一步也是会很耗时的(散热散热散热

./build/pack-kernel.sh -d rockchip_linux_defconfig -r 10 # rockchip_linux_defconfig: kernel defconfig; 1: release number

长久的等待之后,终于得到了内核和内核dbg的镜像产物等等,然后就是按照官方wiki的命令安装这个名字带有dbg的deb包

dpkg -i linux-image-5.10.66-10-rockchip-ge5013df5e066-dbg_5.10.66-10-rockchip_arm64.deb

不过这样操作之后/boot/extlinux/extlinux.conf并没有新内容,然后把名字不带dbg的也安装一下就可以了

2023-01-07T15:09:22.png

2023-01-07T15:11:29.png

可以看到/boot/extlinux/extlinux.conf出现了刚才安装的内核

2023-01-07T15:11:47.png

然后修改/boot/extlinux/extlinux.conf,添加下面这样的内容,即default后面跟的是label后面对应的名字,保存然后重启即可

default kernel-5.10.110-10-rockchip-gd962a3675

2023-01-07T15:12:33.png

可以看到重启后内核是新的了

2023-01-07T15:14:39.png


有了新的内核之后,就不需要管最开始那几个命令了,直接docker run开一个实例即可

当然,在这之前,还需要安装docker

参考官方blog即可,Getting started with Docker for Arm on Linux

不过要注意的是,官方给的命令里面,用proxychains之类的没效果,建议搞成全局代理,或者直接使用国内源进行安装

有一点需要注意,那就是sudo usermod -aG docker $USER这个命令执行后,要退出当前用户再进入才有效(直接退出shell再进即可)

docker配置好了之后,直接使用下面的命令即可运行redroid(散热散热散热

docker run -itd --rm --privileged \
    --pull always \
    -v ~/data:/data \
    -p 5555:5555 \
    redroid/redroid:12.0.0-arm64

5555端口会转发到宿主机,默认是监听0.0.0.0上的,所以我们可以远程adb连上rock5b的ip:5555

然后使用scrcpy投屏即可,就是文章开头的效果了

2023-01-07T15:22:13.png